Это именно та проблема, с которой приходится сталкиваться при программном анализе языков, таких как китайский, где между словами нет пробелов.Один из методов, который работает с этими языками, - это начать с разделения текста на знаки препинания.Это дает вам фразы.Затем вы перебираете фразы и пытаетесь разбить их на слова, начиная с длины самого длинного слова в вашем словаре.Допустим, длина составляет 13 символов.Возьмите первые 13 символов из фразы и посмотрите, есть ли она в вашем словаре.Если это так, примите это как правильное слово сейчас, продвиньтесь во фразе и повторите.В противном случае сократите подстроку до 12 символов, затем до 11 символов и т. Д.
Это работает очень хорошо, но не идеально, потому что мы случайно уклонились от слов, которые стоят на первом месте.Один из способов устранить это смещение и дважды проверить свой результат - повторить процесс, начиная с конца фразы.Если вы получаете одинаковые разрывы слов, вы, вероятно, можете назвать это хорошим.Если нет, у вас есть перекрывающийся сегмент слова.Например, когда вы анализируете образец фразы, начиная с конца, вы можете получить (в обратном порядке для выделения)
words with string a Isis th
Сначала слово Isis (египетская богиня) кажется правильным.Однако, когда вы обнаружите, что «th» отсутствует в вашем словаре, вы знаете, что поблизости есть проблема сегментации слов.Решите это, перейдя к результату прямой сегментации «this» для невыровненной последовательности «thisis», так как оба слова находятся в словаре.
Менее распространенный вариант этой проблемы - когда смежные слова разделяют последовательностькоторый может пойти в любую сторону.Если у вас была последовательность вроде «archand» (чтобы придумать что-то), должна ли она быть «arc hand» или «arch and»?Способ определения - применить проверку грамматики к результатам.В любом случае это должно быть сделано для всего текста.