Чем осуществить нечеткий поиск ключевых фраз в тексте?
Есть текст на русском языке. Он написан в свободной форме и потенциально содержит опечатки. Нужно алгоритмически вытащить из него определенные факты, описываемые ключевыми словосочетаниями.
Допустим, мы ищем упоминания даты по фразе сегодня в ЧЧ:ММ. Строгое совпадение можно найти регуляркой, но она не найдет различные варианты написания - севодня в ЧЧ:ММ, сегодняв ЧЧ:ММ, в ЧЧ:ММ сегодня, сегодня в полдень и так далее.
Варианты, которые приходили в голову:
* Поиск регулярками по звуковому хешу (Metaphone / Soundex)
* Поиск регулярками по тексту, прогнанному через стеммер \ лемматизатор
* Полнотекстовый поиск в чистом виде (Lucene.Net)
Есть ли какой-то готовый способ сделать это достаточно качественно, используя стек .NET? Платные сервисы \ библиотеки тоже рассматриваются.
Где-то видел статью с кодом на JS: то ли на Хабре, то ли ещё где-то. Там на входе была строка, а на выходе - ориентировочная дата события (ведь не всегда точно получается).
Если вспомню - напишу.
Как вариант, мне приходит взять строку, сверить её с требуемой строкой посимвольно.
Если символ совпадает с символом искомой строки, ставим единичку, нет ставим 0. Если набирается какой-то процент от исходной фразы, то мы принимаем её.
Тогда потребуется хитрый способ восстановления, если в исходном тексте пропущена буква или, наоборот, добавлена лишняя - иначе все последующие будут считаться несовпадающими. Кроме того, как описывать и захватывать "аргументы" типа часов-минут?