似たようなことを研究で行っているので、そこで使っている手法をご紹介します。
おそらく、質問者様のやりたいことは、共起語とtfを使えば出来ると思います。
流れで説明しますが、面倒でしたら共起語とtfのお話だけお付き合いください。
共起語
文章に登場する「単語の個数」から、文章の意味を推測します。
よく、「形態素解析(けいたいそかいせき)」という手法が用いられます。
形態素解析とは、文章を意味のある後群(名詞、動詞、形容詞…等)に分解します。
(例)
「今日未明、震度5の地震が発生しました。この地震の影響での津波の心配はいりません。」
この文章を形態素解析し、名詞、動詞辺りを抜き出し、その数をカウントします。ます。
今日 1回
未明 1回
震度 1回
5 1回
地震 2回
発生 1回
影響 1回
津波 1回
心配 1回
短い文章ですが、単語の登場回数からこの文章がなんとなく「地震」についての文章だとわかりますね?
LLmanさんのご回答がこれです。
tf-idf
では、今度は共起語の登場回数から、単語の重要度を数値化してみます。
tf-idfと呼ばれる方法がメジャーです。
tf:term frequency
idf:inverse Ddocument frequency
と呼ばれるもので、要は、
tf = 単語の登場頻度
idf = 文章ごとのその単語のレア度
のようなものです。
そしてそれぞれ、
tf = 目的の単語数 / その文章中の全単語数
idf = log(全文章(ドキュメント)数 / 目的の単語が出てくる文章(ドキュメント)の数) + 1
で、よく計算します。
※時と場合によって、多少計算式は変わりますが気にしないでください。
先程の文章、「今日未明、震度5の地震が発生しました。この地震の影響での津波の心配はいりません。」の例で、
単語「地震」のtf値は、tf = 「地震」の登場回数 / 全単語数
なので
tf = 2/10 = 1/5 = 0.2
と、なります。
また、「津波」のtf値は、
tf = 1/10 = 0.1
となりますね。
まあ、短い文章なので値は小さいですが、このように単語のtf値が大きいほど、その文章はその
tf値が大きな単語のことをメインに取り扱いたい、と言う考え方です。
おそらく、今回のご質問に関してはこのtfが有効ではないかと。
話は変わって、idfについて。
こいつは、ドキュメントがたくさんあるときに、その単語のレア度について…つまり、
文章全体で登場回数が少ない単語は、よりその文書を特徴付けるものということですね。
いくつもの文書で使われている単語はあまり重要じゃない!
文章Aに「地震」という単語が5回
文章Bに「地震」という単語が0回
文章Cに「地震」という単語が100回
だとすると、
例えば、「地震」のidfは、
log(3/2)+1
となります。
登場回数関係ない!!
要は、登場するかしないかをみます。
tfとidfが出せたら、それらをかけ合わせます。
tf-idf = tf * idf
この値が大きいと、その文章は、その単語にとういて述べていると思われるのです。
例:「地震」についてのtf-idf
tf-idf = 0.2 * ( log(3/2)+1 )
こんな感じですね。
使えるツール
Mecab!
手前味噌ではありますが、
http://qiita.com/nnahito/items/545126933f844804d3b9
何かをどうぞ。
文章を形態素解析してくれます。