私は、100 から 4000 語のテキスト (数百万) をたくさん持っています。テキストは、句読点と文法を使用して、書かれた作品としてフォーマットされています。すべて英語です。
問題は単純です:与えられたテキストからすべての WikiData エンティティを抽出するにはどうすればよいでしょうか?
エンティティは、固有名詞または通常のすべての名詞として定義されます。つまり、人、組織、場所、椅子、ポテトなどの名前です。
これまでのところ、次のことを試しました。
- テキストをOpenNLPでトークン化し、事前トレーニング済みのモデルを使用して、人、場所、組織、および通常の名詞を抽出します。
- 該当する場合は、 Porter Stemmingを適用します。
- 抽出されたすべての名詞をwmflabs-APIと照合して、潜在的な WikiData ID を取得します。
これはうまくいきますが、もっとうまくやれる気がします。明白な改善の 1 つは、関連する WikiData の部分をローカルにキャッシュすることです。これは私が計画しています。ただし、その前に、他の解決策があるかどうかを確認したいと思います。
提案?
タスクにSparkを使用しているため、質問に Scala のタグを付けました。