>Теперь частота биграма in put в нашей модели нулевая.
Это вам потом будет доставлять проблемы (в частности, будет отсеивать очень хорошие разбиения слов, где встречаются не виденные ранее комбинации слов из-за умножения на ноль). Лучше, чтобы была маленькая вероятность, а не нулевая. Для этого надо делать сглаживание модели текста.
Поподробней и на русском это была бы, наверное, отдельная статья.
Такая задача предлагалась в книге Питера Норвига «Искусственный интеллект: современный подход».
Write a program to do segmentation of words without spaces. Given a string, such
as the URL «thelongcstlistofthelongeststuffatthelongestdornainnameatlonglast.corn,» return a
list of component words: [«the,» «longest,» «list,» ...]. This task is useful for parsing URLs,
for spelling correction when words =together, and for languages such as Chinese that do
not have spaces between words. It can be solved with a unigram or bigram word model and
a dynamic programming algorithm similar to the Viterbi algorithm.
Пример решения этой задачи на Python можно посмотреть здесь. См. классы UnigramTextModel, NgramTextModel и функцию viterbi_segment.
Алгоритмы сегментации текста