наиболее эффективное расстояние редактирования для выявления опечаток в именах?

Алгоритмы расстояния редактирования дают меру расстояния между двумя строками.

Вопрос: какая из этих мер будет наиболее уместной для обнаружения двух разных имен людей, которые на самом деле совпадают? (отличается из-за опечатки). Хитрость в том, что он должен свести к минимуму ложные срабатывания. Пример:

Обаама Обама => вероятно, следует объединиться

Обама => Ибама не должен быть объединен.

Это просто слишком простой пример. Их программисты и компьютерщики более детально прорабатывали этот вопрос?


person seinecle    schedule 12.08.2012    source источник
comment
Вы ищете метод NLP или может подойти информационно-поисковое решение? Можете ли вы описать, где вы собираетесь его использовать, и насколько популярны слова, которые вы ищете? У вас есть коллекция документов, которые вы можете использовать для изучения шаблонов?   -  person amit    schedule 12.08.2012
comment
Вам нужны дополнительные данные (например, некоторая статистика по орфографическим ошибкам), чтобы свести к минимуму ложные срабатывания, потому что для того, чтобы свести к минимуму ошибку, вам нужно знать, что является ошибкой, а что нет.   -  person Alexey Frunze    schedule 12.08.2012
comment
Soundex был разработан для такого использования. Однако это очень специфично для английского языка (но это и ваша проблема).   -  person tripleee    schedule 12.08.2012


Ответы (2)


Я могу предложить способ поиска информации для этого, но это требует большого количества документов для правильной работы.

Индексируйте свои данные, используя стандартные методы IR. Lucene — это хорошая библиотека с открытым исходным кодом, которая может вам в этом помочь.

Как только вы получите имя (например, Обама): получите набор коллекций, в которых встречается слово Обаама. Пусть этот набор будет D1.
Теперь для каждого слова w в ячейке D11 найдите Obaama AND w (используя ИК-систему). Пусть набор будет D2.

Оценка |D2|/|D1| — это оценка того, насколько w связана с Obaama, и, скорее всего, она будет близка к 1 для w=Obama2.
Вы можете вручную пометить набор примеров и найти значение, из которого будут ожидаться слова.

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

Другое решение, которое часто используется, требует журнала запросов — найдите корреляцию между искомыми словами, если у obaama есть корреляция с obama в журнале запросов — они связаны.


1: Вы можете улучшить производительность, сначала выполнив 2-й фильтр и проверяя только тех кандидатов, которые «достаточно похожи» лексикографически.

2: Обычно также используется нормализация, потому что более часто встречающиеся слова с большей вероятностью будут в одних и тех же документах с любым словом, независимо от того, связаны они или нет.

person amit    schedule 12.08.2012

Вы можете проверить NerSim (demo), в котором также используется Вторая строка. Вы можете найти соответствующие статьи или рассмотреть эту статью: Надежные меры подобия для Соответствие сущностей.

person Kenston Choi    schedule 13.08.2012