как распознать подобные слова с различием в написании

Я хочу отфильтровать дублирующиеся имена клиента от базы данных. У единственного клиента может быть больше чем одна запись в систему с тем же именем, но с небольшим различием в написании. Таким образом, вот пример: у клиента по имени Brook может быть три записи в систему с этим изменения:

  1. Brook Berta
  2. Брук Berta
  3. Biruk Berta

Давайте предположим, что мы ставим это имя в одном столбце базы данных. Я хотел бы знать, что различные механизмы определяют, что такая форма дублирований говорит 100,000 записи. Мы можем использовать регулярные выражения в C# для итерации через все записи или некоторый другой метод сопоставления с образцом, или мы можем экспортировать эти записи на то, что когда-либо лучше всего соответствует таким запросам (SQL с возможностями Регулярного выражения)).

Это - то, что я думал как решение

  • Напишите код C# для итерации через каждую запись
  • Приведите в порядок только Совместимые буквы (в вышеупомянутом случае: BrKBrt)
  • Ищите тот же Совместимый шаблон от других записей, рассматривая подобные звучащие буквы как (C, K) (C, S), (F, PH)

Поэтому передайте любые идеи.

6
задан Wiktor Stribiżew 22 February 2019 в 11:15
поделиться

8 ответов

Алгоритм Double Metaphone, опубликованный в 2000 году, является новой и улучшенной версией алгоритма Soundex, запатентованного в 1918 году.

В статье есть ссылки на реализации Double Metaphone на многих языках.

8
ответ дан 8 December 2019 в 14:40
поделиться

Очевидные, установленные (и хорошо задокументированные) алгоритмы поиска сходства строк:

2
ответ дан 8 December 2019 в 14:40
поделиться

Изучите саундекс. Это довольно стандартная библиотека для большинства языков, которая делает то, что вам нужно, то есть алгоритмически определяет фонетическое сходство. http://en.wikipedia.org/wiki/Soundex

1
ответ дан 8 December 2019 в 14:40
поделиться

Я бы подумал о написании чего-нибудь вроде "знаменитого" средства проверки орфографии на Python.

http://norvig.com/spell-correct.html

Это будет использовать слово и найти все возможные альтернативы, основанные на пропущенных буквах, добавлении букв, замене букв и т. Д.

1
ответ дан 8 December 2019 в 14:40
поделиться

Вы можете найти в Google алгоритм фонетического сходства , и вы найдете много информации об этом. Включая эту статью на Codeproject о реализации решения на C #.

1
ответ дан 8 December 2019 в 14:40
поделиться

Существует очень хороший пакет R (просто найдите "R" в Google) для Record Linkage. Стандартные примеры направлены именно на вашу проблему: R RecordLinkage

Си-код для Soundex и т.д. взят прямо из PostgreSQL!

1
ответ дан 8 December 2019 в 14:40
поделиться

Я бы порекомендовал Soundex и производные алгоритмы по расстоянию Lev для этого решения. Расстояние Левенштейна больше подходит для проверки орфографии imho.

0
ответ дан 8 December 2019 в 14:40
поделиться

Have a look at Soundex

Существует функция Soundex в Transact-SQL (см. http://msdn.microsoft.com/en-us/library/ms187384.aspx):

SELECT 
SOUNDEX('brook berta'),
SOUNDEX('Bruck Berta'),
SOUNDEX('Biruk Berta')

возвращает одно и то же значение B620 для каждого из значений примера

2
ответ дан 8 December 2019 в 14:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: