大量のテキストをデータマイニングして、使用法ごとにキーワードを取得するにはどうすればよいですか? (「ジェイコブ・スミス」または「フェンス」)
そして、これを行うソフトウェアはすでにありますか?半自動でも、「the」、「and」、「or」などの単純な単語を除外できれば、トピックにすばやく到達できます。
大量のテキストをデータマイニングして、使用法ごとにキーワードを取得するにはどうすればよいですか? (「ジェイコブ・スミス」または「フェンス」)
そして、これを行うソフトウェアはすでにありますか?半自動でも、「the」、「and」、「or」などの単純な単語を除外できれば、トピックにすばやく到達できます。
これは NLP における未解決の問題であるため、簡単な答えはありません。
迅速かつ汚い「works-for-me」に対する私の推奨は、topia.termextractです。
Yahoo のキーワード抽出サービス ( http://developer.yahoo.com/search/content/V1/termExtraction.html ) は、再現率は低いですが精度は高いです。つまり、少数の高品質の用語が得られますが、ドキュメント内の多くの用語が見落とされます。
Python には、topia.termextract ( http://pypi.python.org/pypi/topia.termextract/ ) があります。比較的ノイズが多く、多くの偽のキーワードを提案しますが、使い方は簡単です。
Termine ( http://www.nactem.ac.uk/software/termine/ ) は英国の Web サービスで、これも比較的ノイズが多く、多くの偽のキーワードを提案しています。ただし、topia.termextract よりもわずかに正確であるように思われます。YMMV。
あまりにも多くのキーワード (topia.termextract や termine など) を含む結果のノイズを除去する 1 つの方法は、頻繁に出現する用語の語彙を作成し、語彙にない提案された用語を破棄することです。つまり、コーパスに対して 2 つのパスを実行します。最初のパスでは、各キーワードの頻度を数えます。2 番目のパスでは、レアすぎるキーワードを破棄します。
自分で書きたい場合は、現在 IBM にいる Park が書いた入門書がおそらく最適です。
さらに詳しく知りたい場合は、次のリファレンスを参照してください。
一般的なアルゴリズムは次のようになります。
- テキスト入手 - 句読点、特殊文字などを取り除きます。 - 「単純な」言葉を取り除く - スペースで分割 - 分割テキストのループ - 単語が存在しない場合は、配列/ハッシュテーブル/その他に単語を追加します。 存在する場合、その単語のカウンターをインクリメントします
最終結果は、テキスト内のすべての単語の頻度カウントです。次に、これらの値を単語の総数で割り、頻度のパーセンテージを得ることができます。それ以降の処理はあなた次第です。
Stemmingについても調べる必要があります。ステミングは、単語を語根に絞り込むために使用されます。たとえば、、going => go
などcars => car
。
このようなアルゴリズムは、スパム フィルターやキーワードのインデックス作成などで一般的になるでしょう。
Alchemyという用語抽出、概念タグ付け、感情分析などを実行できるサービスもあります。
それは有効です、私はそれをテストしましたが、私は彼らの商業政策を知りません(もしあれば)。それらは、あらゆる種類の言語の API を (ほとんど) 提供します。
Alchemy の出力は、Joseph が提案した出力に比べてノイズが少ないことをどこかで読みました (申し訳ありませんが、もうどこかは覚えていません)。
個人的には Maui をお勧めします ( http://code.google.com/p/maui-indexer/ )。KeA に依存していますが、さまざまな方法で拡張されています。トレーニング可能で、RDF 形式の用語を使用できます。
以前、 NTLK を使用して名前付きエンティティを認識したことがあります。特に、人名や組織名の認識に優れています。