私は現在、膨大なテキスト本文から最も一般的なフレーズを抜き出すプロジェクトに取り組んでいます。たとえば、次のような 3 つの文があるとします。
- 犬が飛び跳ねたその女性に対して。
- 犬が飛び跳ねた車の中に。
- 犬が飛び跳ねた上の階。
上記の例から「犬が飛び跳ねた」と入力しました。これはテキスト内で最も頻繁に使用されるフレーズだからです。最初は、「ああ、有向グラフ(繰り返しノード付き)を使用しましょう」と考えました。
有向グラフ http://img.skitch.com/20091218-81ii2femnfgfipd9jtdg32m74f.png
編集: 申し訳ありませんが、この図を作成する際に間違いを犯しました。「over」、「into」、「up」はすべて「the」にリンクする必要があります。
各ノード オブジェクトで単語が何回出現したか (「the」は 6 回、「dog」と「jumped」は 3 回など) をカウントするつもりでしたが、他にも多くの問題があるにもかかわらず、次のような例をいくつか追加したときに主な問題が浮上しました (文法の誤りは無視してください :-)):
- 犬は飛び跳ねました。
- その犬は、今までにどんな犬も跳んだことのないような跳躍をしました。
- 犬は嬉しそうに飛び跳ねました。
私たちは今、問題を抱えています。犬「は新しいルートノード(「the」と同じレベル)を開始し、「犬が飛び跳ねた」が最も一般的なフレーズになっていると思います。そこで、無向グラフを使用してすべての単語の関係をマッピングし、最終的に一般的なフレーズを選び出すことができるのではないかと考えていますが、単語間の順序という重要な関係が失われるため、これがどのように機能するかはわかりません。
それで、大量のテキスト本文内の一般的なフレーズを識別する方法と、どのようなデータ構造を使用するかについて、一般的なアイデアを持っている人はいますか。
ありがとう、ベン
ベストアンサー1
関連する質問を確認してください:テキストのチャンク内で共通のフレーズを見つけるためのテクニックやツールにはどのようなものがありますか?関連:最長共通部分文字列問題。
以前にも投稿しましたが、私はR私のデータマイニングタスクのすべてに使用しており、この種の分析に適しています。特に、パッケージをご覧くださいtm
。関連リンクをいくつか示します。
- Journal of Statistical Computing に掲載されたパッケージに関する論文:http://www.jstatsoft.org/v25/i05/paperこの論文には、R-develメーリングリストの分析の優れた例が含まれています(https://stat.ethz.ch/pipermail/r-devel/) 2006 年からのニュースグループの投稿。
- パッケージホームページ:http://cran.r-project.org/web/packages/tm/index.html
- 紹介のビネットをご覧ください:http://cran.r-project.org/web/packages/tm/vignettes/tm.pdf
より一般的には、テキストマイニングパッケージは多数存在する。CRANの自然言語処理の視点。