Я пытаюсь очистить базу данных, в которой за прошедшие годы накопилось много повторяющихся записей с немного разными именами. Например, в таблице компаний есть такие названия, как «Some Company Limited» и «SOME COMPANY LTD!».
Мой план состоял в том, чтобы экспортировать проблемные таблицы в R, преобразовать имена в нижний регистр, заменить общие синонимы (например, «limited» -> "ltd"), удалите неалфавитные символы, а затем используйте comparep
, чтобы увидеть, что будет похоже.
Моя первая проблема в том, что comparep
принимает только один шаблон совпадение, и перебор каждого названия компании для сопоставления с другими выполняется медленно. (Некоторые таблицы, подлежащие очистке, будут иметь десятки, возможно, сотни тысяч имен для проверки.)
Я очень кратко рассмотрел tm
( статья JSS ), и он кажется очень мощным, но ориентированным на анализ больших фрагментов текста, rathe r, чем просто имена.
У меня есть несколько связанных вопросов:
Подходит ли пакет tm
для такого рода задач?
Есть ли более быстрая альтернатива соглашению
? (Указанная функция использует
Расстояние редактирования Левенштейна, которое анекдотично медленное.)
Есть ли другие подходящие инструменты в R, кроме comparep
и tm
?
Должен ли я вообще делать это в R, или должно быть такое сделано прямо в базе? (Это база данных Access, поэтому я бы лучше не прикасайтесь к нему, если это возможно.)