各行のように、組織の名前とその組織内の個人の位置を非構造化テキストとして含むテキスト フィールドを持つ CSV ファイルを処理しようとしています。このフィールドは通常、次のようなテキストの混乱です。
Assoc. Research Professor Dept. Psychology Univ. California Santa Barbara
役職と組織名を出さなければなりません。役職については、さまざまな職業の約 60 の異なる正規表現のシリーズに preg_match を使用していますが、かなりうまく機能していると思います (私の推測では、約 80% をキャッチすると思います)。しかし、組織名を聞き取れずに困っています。簡単な preg_match を実行できる約 16,000 の組織名を含む MySQL テーブルがありますが、一般的なスペルミスと略語により、組織の約 30% しか検出できません。たとえば、私のデータベースには
University of California Santa Barbara
ただし、CSV ファイルには次のいずれかのオプションが含まれる場合があります。
Univ Cal Santa Barbara
University Cal-Santa Barbara
University California-Santa Barbara
Cal University, Santa Barbara
数十万件のレコードを処理する必要があり、現在正しく処理されていないレコードの 70% を修正したり、組織ごとに複数のエイリアスを苦労して作成したりするのに時間を費やすことはできません。私ができるようにしたいのは、小さな違い (小さなスペルミス、ハイフンとスペース、一般的な略語など) をキャッチし、それでも一致が見つからない場合は、理想的には組織名を認識して新しいレコードを作成することです。それのための。
- Python または PHP のどのライブラリまたはツールを使用すると、より広い範囲で類似性を照合できますか?
- Python の NLTK はスペルミスをキャッチしますか?
- AlchemyAPI を使用してスペルミスのある組織を検出することは可能ですか? これまでのところ、正しいスペルの組織をキャッチするためにしか使用できませんでした
- 短い文字列 (組織名) を長い文字列 (名前と無関係な情報を含む) と比較しているので、PHP の similar_text 関数を使用する希望はありますか?
どんな助けや洞察もいただければ幸いです。