21

私は現在、膨大な量のテキストの中で最も一般的なフレーズを選択する必要があるプロジェクトに取り組んでいます。たとえば、次のような3つの文があるとします。

  • 犬は女性を飛び越えた。
  • は車に飛び込んだ。
  • は階段を飛び上がった。

上記の例から、テキストで最も一般的なフレーズである「犬がジャンプした」を抽出したいと思います。最初は、「[ノードが繰り返される]有向グラフを使用しましょう」と思いました。

有向グラフhttp://img.skitch.com/20091218-81ii2femnfgfipd9jtdg32m74f.png

編集:お詫びします。この図を「上」、「中」、「上」にすると、すべて「the」にリンクするはずです。

各ノードオブジェクトで単語が発生した回数のカウントを維持するつもりでしたが(「the」は6、「dog」と「jumped」、3など)、他の多くの問題にもかかわらず、メインの問題は次の場合に発生しました。次のような例をさらにいくつか追加します(悪い文法は無視してください:-)):

  • 犬が飛び跳ねた。
  • 犬はこれまでジャンプしたことがないようにジャンプしました。
  • 犬は楽しくジャンプしました。

dog」が(「the」と同じレベルで)新しいルートノードを開始し、「dogjumped」が現在最も一般的なフレーズであると識別されないため、問題が発生します。だから今、私は無向グラフを使ってすべての単語間の関係をマッピングし、最終的には一般的なフレーズを選ぶことができると考えていますが、間の順序の重要な関係が失われるため、これがどのように機能するかわかりません言葉。

したがって、大量のテキストで一般的なフレーズを識別する方法や、使用するデータ構造についての一般的なアイデアはありますか。

ありがとう、ベン

4

1 に答える 1

13

この関連する質問をチェックしてください:テキストのチャンクで一般的なフレーズを発見するためのテクニック/ツールは何ですか?最も長い一般的な部分文字列の問題 にも関連しています。

これは以前に投稿したことがありますが、すべてのデータマイニングタスクにRを使用しており、この種の分析に適しています。特に、tmパッケージを見てください。関連するリンクは次のとおりです。

より一般的には、 CRANの自然言語処理ビューには多数のテキストマイニングパッケージがあります。

于 2009-12-18T16:57:58.537 に答える