Я пытаюсь очистить базу данных, которая за эти годы приобрела много повторяющихся записей с немного разными именами. Например, в таблице компаний есть такие имена, как "Some Company Limited" и "НЕКОТОРЫЕ КОМПАНИИ LTD!".
Мой план заключался в том, чтобы экспортировать таблички с нарушениями в R, преобразовать имена в нижний регистр, заменить обычные синонимы (например, "limited" → "ltd" ), вырезать неалфавитные символы, а затем использовать agrep
, чтобы увидеть, что выглядит аналогичным.
Моя первая проблема заключается в том, что agrep
принимает только один шаблон, который соответствует, и циклическое совпадение над каждым именем компании для соответствия другим является медленным. (Некоторые таблицы для очистки будут иметь десятки, возможно, сотни тысяч имен для проверки.)
Я очень кратко рассмотрел пакет tm
(статью JSS), и он кажется очень мощным, но предназначен для анализа больших фрагментов текста, а не просто имена.
У меня есть несколько связанных вопросов:
-
Является ли пакет
tm
подходящим для такого рода задач? -
Есть ли более быстрая альтернатива
agrep
? (Указанная функция использует Левенштейн отредактировал расстояние, которое является анекдотически медленным.) -
Существуют ли другие подходящие инструменты в R, кроме
agrep
иtm
? -
Должен ли я делать это в R, или если это будет выполняется непосредственно в базе данных? (Это база данных Access, поэтому я бы скорее избегайте прикосновения к нему, если это возможно.)