Методы поиска почти повторяющихся записей

Я пытаюсь очистить базу данных, в которой за прошедшие годы накопилось много повторяющихся записей с немного разными именами. Например, в таблице компаний есть такие названия, как «Some Company Limited» и «SOME COMPANY LTD!».

Мой план состоял в том, чтобы экспортировать проблемные таблицы в R, преобразовать имена в нижний регистр, заменить общие синонимы (например, «limited» -> "ltd"), удалите неалфавитные символы, а затем используйте comparep , чтобы увидеть, что будет похоже.

Моя первая проблема в том, что comparep принимает только один шаблон совпадение, и перебор каждого названия компании для сопоставления с другими выполняется медленно. (Некоторые таблицы, подлежащие очистке, будут иметь десятки, возможно, сотни тысяч имен для проверки.)

Я очень кратко рассмотрел tm ( статья JSS ), и он кажется очень мощным, но ориентированным на анализ больших фрагментов текста, rathe r, чем просто имена.

У меня есть несколько связанных вопросов:

  1. Подходит ли пакет tm для такого рода задач?

  2. Есть ли более быстрая альтернатива соглашению ? (Указанная функция использует Расстояние редактирования Левенштейна, которое анекдотично медленное.)

  3. Есть ли другие подходящие инструменты в R, кроме comparep и tm ?

  4. Должен ли я вообще делать это в R, или должно быть такое сделано прямо в базе? (Это база данных Access, поэтому я бы лучше не прикасайтесь к нему, если это возможно.)

46
задан Richie Cotton 13 July 2011 в 17:58
поделиться