私は、何年にもわたって、わずかに異なる名前で多くの重複レコードを取得してきたデータベースをクリーンアップしようとしています。たとえば、companysテーブルには、「SomeCompanyLimited」や「SOMECOMPANYLTD!」などの名前があります。
私の計画は、問題のあるテーブルをRにエクスポートし、名前を小文字に変換し、一般的な同義語( "limited"-> "ltd"など)を置き換え、アルファベット以外の文字を取り除き、それを使用agrep
して類似したものを確認することでした。
私の最初の問題は、agrep
一致する単一のパターンのみを受け入れ、他の会社と一致するようにすべての会社名をループするのが遅いことです。(クリーニングするテーブルの中には、数万、場合によっては数十万の名前をチェックするものがあります。)
tm
パッケージ(JSSの記事)を簡単に見てきましたが、非常に強力なようですが、名前だけでなく、テキストの大きな塊を分析することを目的としています。
関連する質問がいくつかあります。
パッケージは
tm
この種のタスクに適していますか?より速い代替手段はあり
agrep
ますか?(上記の関数は、逸話的に遅いレーベンシュタイン編集距離を使用します。)と以外に、Rには他の適切なツールが
agrep
ありtm
ますか?これをRで実行する必要がありますか、それともこの種のことをデータベースで直接実行する必要がありますか?(これはAccessデータベースなので、可能であれば触れないようにします。)