-| peter |-

Рейтинг
0
Регистрация
17.04.2008

Дистанция по Ливеншейну не совсем подходит для решения этой задачи, поскольку очень трудоёмко сравнивать каждую фразу с каждой другой фразой из текста. Надо использовать хеширование

примерное решение по пунктам:

*токенайзером преобразуем текст в поток лексем

* приводим каждое слово к основе.. либо стеммером (что очень грубо), либо используя какую-нибудь морфологическую библиотеку

*далее для каждого слова выяснем группу синонимов, к которой оно принадлежит. Для определения синонимов можно использовать WordNet, поскольку у него большое покрытие, однако там может не быть некоторых современных слов

*далее хешируем (hashing) все фразы (остаётся открытым вопрос, что мы считаем фразами. можно вообще считать фразами все n-граммы (последовательности n слов)). Делаем это с учётом "дырок" (т.к. называемый insensitive hashing), т.е. у нас будет хеш для фразы "? went for a walk", "She ? for a walk", "She went ? a walk", итп

* ну и дальше уже более подробно работаем с множествами похожих фраз с совпадающими хешами

** за кадром остался вопрос в предобработке текста.. надо выкинуть все знаки препинания и, возможно, стоп слова

..было бы желание и средства, а сделать можно всё что угодно :)