Соответствие нечетких строк - PullRequest
8 голосов
/ 19 января 2012

У меня есть две таблицы, которые мне нужно объединить в PostgreSQL, с общей переменной «название компании».К сожалению, многие из названий компаний не совпадают точно (например, MICROSOFT в одной таблице, MICROSFT в другой).Я попытался удалить общие слова из обоих столбцов, таких как «корпорация» или «inc» или «ltd», чтобы попытаться стандартизировать имена в обеих таблицах, но у меня возникают проблемы при рассмотрении дополнительных стратегий.Есть идеи?

Спасибо.

Также при необходимости я могу сделать это в R.

1 Ответ

7 голосов
/ 19 января 2012

Рассматривали ли вы модуль fuzzystrmatch?Вы можете использовать soundex, difference, levenshtein, metaphone и dmetaphone или их комбинацию.

fuzzystrmatch документация

SELECT something
FROM somewhere
WHERE levenshtein(item1, item2) < Carefully_Selected_Threshold

Например, расстояние Левенштейна от MICROSOFT до MICROSFT равно единице (1).

levenshtein(dmetaphone('MICROSOFT'), dmetaphone('MICROSFT')

Выше возвращается ноль (0).Сочетание Левенштейна и Dmetaphone может помочь вам найти много орфографических ошибок.

...