Я могу предложить способ поиска информации для этого, но это требует большого количества документов для правильной работы.
Индексируйте свои данные, используя стандартные методы IR. Lucene — это хорошая библиотека с открытым исходным кодом, которая может вам в этом помочь.
Как только вы получите имя (например, Обама): получите набор коллекций, в которых встречается слово Обаама. Пусть этот набор будет D1
.
Теперь для каждого слова w
в ячейке D11 найдите Obaama AND w
(используя ИК-систему). Пусть набор будет D2
.
Оценка |D2|/|D1|
— это оценка того, насколько w
связана с Obaama
, и, скорее всего, она будет близка к 1 для w=Obama
2.
Вы можете вручную пометить набор примеров и найти значение, из которого будут ожидаться слова.
Используя стандартный метод лексикографического подобия, вы можете отфильтровать слова, которые определенно не являются орфографическими ошибками (например, Barack
).
Другое решение, которое часто используется, требует журнала запросов — найдите корреляцию между искомыми словами, если у obaama есть корреляция с obama в журнале запросов — они связаны.
1: Вы можете улучшить производительность, сначала выполнив 2-й фильтр и проверяя только тех кандидатов, которые «достаточно похожи» лексикографически.
2: Обычно также используется нормализация, потому что более часто встречающиеся слова с большей вероятностью будут в одних и тех же документах с любым словом, независимо от того, связаны они или нет.
person
amit
schedule
12.08.2012