Есть ли библиотека правописания, которая распознает неполные слова?

Мой вариант использования следующий: по заданной строке распознать все допустимые слова, начиная с начала строки. Например:

blueberryqqq

должен вывести:

blue
blueberry

Для этого у меня есть структура словаря, которая использует trie<char>. Например, если мой словарь состоит только из двух слов выше, он будет выглядеть так:

b->l->u->e->\0
->b->e->r->r->y->\0

Когда я исследую свою входную строку, процесс проверки орфографии может сказать мне, по мере того, как я перехожу от буквы к букве:

  1. Я на пути к правильному слову
  2. Я нашел правильное слово
  3. Я не на пути к правильному слову

Обратите внимание, что это флаги и оба 1 а также 2 может быть правдой одновременно. При таком подходе я могу эффективно найти оба blue а также blueberry сразу и прекратить попытки сразу же, когда я доберусь до y, Продолжая с примером, вот что происходит, когда я перехожу от буквы к букве:

b:1, l:1, u:1, e:1|2, b:1, e:1, r:1, r:1, y:2

Когда я вижу 1|2Я знаю, что «синий» является допустимым словом, но я также знаю, что нужно идти дальше вниз по строке, потому что мой словарь говорит мне, что возможно больше слов. Как только я достигну y, Я остановился. Весьма эффективно, поскольку я посещаю каждое письмо только один раз для всех допустимых слов и прекращаю проверку орфографии, как только словарь говорит мне, что нет смысла идти дальше. Отлично!

Моя проблема в том, что мой словарь состоит из / usr / share / dict / words и этот файл не содержит форму множественного числа «bluberry», которая является «черникой», и в общем случае не будет содержать все «производные» всех слов , Так что, если входная строка blueberriesqqqЯ получу только blue как действительный.

Если бы я использовал библиотеку для проверки орфографии, такую ​​как aspell или же hunspell, насколько я могу судить, Мне нужно было бы проверить все подстроки по отдельности! например b, bl, bluи т.д. Довольно неэффективно! Не только это, но я не знаю, когда прекратить проверять. например Откуда я знаю, что нет слов, начинающихся с blueberriesqq?

Итак, мой вопрос звучит так: есть ли библиотека для проверки орфографии, подходящая для моего варианта использования?

Обратите внимание, что предложения по правописанию не помогут. Переходя blueb aspell не возвращает никаких орфографических предложений, которые начинаются с blueb, Таким образом, я бы закончил свой поиск, хотя все еще есть возможность найти более подходящие слова.

3

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]