Это очень интересный вопрос - возможно, со многими возможными ответами. Вы можете добавить биграмный (n-граммный) анализ, чтобы оценить, насколько вероятно, что буквы будут связаны друг с другом в типичных словах.
Предполагая, что ваша система не "знает" целевое слово, но кто-то печатает "bouk". Затем он анализирует все биграммы:
бо, оу, ук
или триграммы
бу, ук
Я бы догадался, что "бо", «ou», «bou» были бы хорошими, поскольку они обычны, но «uk» и «ouk» вряд ли были бы в Engli sh. Таким образом, это могло бы просто иметь оценку 3/5, но на самом деле каждая триграмма имела бы свою собственную оценку частоты (вероятность), поэтому общее число для предлагаемого слова могло бы быть очень точным.
Затем сравнив это с "bo0k «вы бы посмотрели на все биграммы:
бо, о0, 0к
или триграммы
бо0, о0к
Теперь вы можете видеть это только» бо "хорошо бы забил здесь. Все остальные не будут найдены в общем корпусе n-грамм. Таким образом, это слово будет иметь гораздо меньшую вероятность, чем «бук», например, 1/5 по сравнению с 3/5 для «бук».
Решение будет примерно три:
Вам потребуется корпус с установленными частотами n-граммы для языка. Например, этот случайный блог, который я нашел, обсуждает, что: https://blogs.sas.com/content/iml/2014/09/26/bigrams.html
Затем вам нужно будет обработать (разбить на токены и отсканировать) ваши входные слова в n-граммах, а затем посмотреть их частоты в корпус. Вы можете использовать что-то вроде SK Learn,
Затем вы можете суммировать части любым удобным для вас способом, чтобы установить sh общий балл за слово.
Обратите внимание, что вы можете найти большинство жетонов и обработку n-грамм для центров естественного языка вокруг отношений между словами , а не букв внутри слов. В этом легко заблудиться, так как часто тот факт, что библиотека сосредоточена на грамматиках слов, прямо не упоминается, потому что это наиболее распространенный вариант. Я заметил это раньше, но n-граммы также используются во всех других наборах данных (временные ряды, musi c, любая последовательность). В этом вопросе обсуждается, как можно преобразовать векторизатор SK Learn в буквенные граммы, но я сам не пробовал: N-грамм для письма в sklearn