Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Алгоритмы > Правильное написание слова (орфография)


Автор: Soul :) 11.09.07, 12:24
Есть некий текст (скорее всего будет браться из распознавалки). Естественно, что его орфография будет оствлять лучшего. Какие существуют алгоритмы по исправлению этого дела и т.д.?

Хотя бы в какую сторону копать?

Автор: R-2 12.09.07, 12:57
Мне кажется к словарю... т.е. по любому есть какие-то правило, которое позволяет безошибочно определить правильно ли написано слово. Допустим однокренные слова для проверки написания гласной к корне. Соответственно слова исключения это сто процентный словарь, по которому происходит поиск нужного слова... Собственно если есть большой словарь, то и правописание можно проверить... В Ворде по моему тоже словарь и правила, он даже синонимы подбирает и однокоренные слова... Короче словарь.. :)))

Добавлено
А вот пунктуация сложнее, хотя там тоже правила... куда без них.. :))

Автор: Soul :) 12.09.07, 20:33
Даже имея очень хороший словарь, нужен алгоритм, по которому выбирать из него слова...

Люди, подскажите хоть в каком направлении копать? /ключевые слова что ли/

Автор: kl 12.09.07, 22:46
Да, тебя спасет только словарь. Проблема в том, как найти похожие слова. Ну для начала, надо определиться с метрикой, т.е. что мы называем "похожим". Для этого вполне подойдет Levenshtein distance (так же известная как string edit distance). Да-да, если в слове "хлеб" сделать 4 ошибки, получится слово "пиво". Это как раз оттуда. Расстояние Левенштайна между этими словами как раз 4.
Далее. Разумеется, бежать по словарю из 40,000-60,000 слов и считать эту метрику - дело затратное. Т.е. нужна некая структура данных, которая позволила бы быстро находить все слова из словаря, которые находятся на расстоянии не более заданного (некая маленькая константа, скажем 2-3) от нашего слова. Это дело известно как fuzzy string matching. Смотри по ссылке на suffix trees, metric trees и т.д. для организации своего словаря.

PS. Угу, я видел, что ты писал мне в аську. Дико извиняюсь, что не ответил, но ты выбрал самый неподходящий для этого момент - я смотрел Англия-Россия :)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)