Luceneでエンティティ抽出(マッチングのようなもの)を実行しようとしています。サンプルワークフローは次のとおりです。
(URLからの)テキストと人の名前のリストを指定して、テキストから人の名前を抽出してみてください。
ノート:
人の名前は完全に正規化されていません。たとえば、X氏、Y夫人、John Doe、X、Yだけの人もいます。他の接頭辞と接尾辞は、Jr.、Sr.、Dr.、I、II ...などです(私に言わせないでください)。米国以外の名前から始めてください)。
Lucene MemoryIndexを使用して各URLからテキストのメモリ内インデックスを作成し(htmlタグを削除)、StandardAnalyzerを使用してすべての名前のリストを一度に1つずつ照会しています(100kの名前、他に方法はありますか?これ?平均して、これは私が持っている平均的なテキストで約8秒かかります)。
主な問題は、ノイズを除去するために、ベーススコアとして0.01のスコアを使用し、テキストに「John Doe」が含まれている場合、「Mr。John Doe」のようなクエリは、「JohnDoe」と比較してスコアが大幅に低くなることです。多くの場合、0.01のしきい値を見逃しています。
もう1つの問題は、すべての名前を正規化し、Dr。Mrs.などの出現箇所をすべて削除し始めると、「Dr。John Edward II」のような良い一致が失われ始め、「Mr。 。ジョンエドワード」。
Luceneもその仕事に適したツールではないかもしれないことは理解していますが、これまでのところ、それほど悪くはないことが証明されています。助けていただければ幸いです。