私は現在、膨大な量のテキストの中で最も一般的なフレーズを選択する必要があるプロジェクトに取り組んでいます。たとえば、次のような3つの文があるとします。
- 犬は女性を飛び越えた。
- 犬は車に飛び込んだ。
- 犬は階段を飛び上がった。
上記の例から、テキストで最も一般的なフレーズである「犬がジャンプした」を抽出したいと思います。最初は、「[ノードが繰り返される]有向グラフを使用しましょう」と思いました。
有向グラフhttp://img.skitch.com/20091218-81ii2femnfgfipd9jtdg32m74f.png
編集:お詫びします。この図を「上」、「中」、「上」にすると、すべて「the」にリンクするはずです。
各ノードオブジェクトで単語が発生した回数のカウントを維持するつもりでしたが(「the」は6、「dog」と「jumped」、3など)、他の多くの問題にもかかわらず、メインの問題は次の場合に発生しました。次のような例をさらにいくつか追加します(悪い文法は無視してください:-)):
- 犬が飛び跳ねた。
- 犬はこれまでジャンプしたことがないようにジャンプしました。
- 犬は楽しくジャンプしました。
「dog」が(「the」と同じレベルで)新しいルートノードを開始し、「dogjumped」が現在最も一般的なフレーズであると識別されないため、問題が発生します。だから今、私は無向グラフを使ってすべての単語間の関係をマッピングし、最終的には一般的なフレーズを選ぶことができると考えていますが、間の順序の重要な関係が失われるため、これがどのように機能するかわかりません言葉。
したがって、大量のテキストで一般的なフレーズを識別する方法や、使用するデータ構造についての一般的なアイデアはありますか。
ありがとう、ベン