@startuml
title sd guesser.guessLanguage(unknownLM, [knownLMs])
loop over array of known language models
Guesser -> LanguageProbability: getProbability(unknownLM,\nknownLM.unigrams)
activate LanguageProbability
LanguageProbability -> LanguageProbability: calculate probability\nof each bigram in\nunknownLM  given\nknownLM
LanguageProbability -> LanguageProbability: calculate total\nlog probability of\nunknownLM given\nknownLM
LanguageProbability --> Guesser: log prob of unknownLM\ngiven knownLM
deactivate LanguageProbability
alt log prob > highest
Guesser -> Guesser: update highest to\nlog prob
Guesser -> Guesser: update maxLang to\nknownLM.language

end
end
note right of Guesser
then  return maxLang.language
end note
@enduml
