今月何もブログを買いていなかったのと、最近アニメのことしか書いていないなと思ったので少し技術的なことを書いていこうと思います。
と言ってもそれほど複雑なことはしていないです。
時々文章の特徴分析などで用いられるTFIDF計算をする処理をライブラリ化したものです。
TFIDFについて簡単に書くと文章集合中の一つの文章の特徴となる言葉を数値化する方法です。基本的には二つの指標の掛け合わせで計算します。
詳しくはWikipediaを参照ください→tf-idf
その指標か以下の通りです。
1)文章の中に多く出てくる単語は重要とする
[計算方法] 特定の単語の数/文章の中の全ての単語の数
2)特定の文章で出てくる単語は重要する
[計算方法]log(文章の数/特定の単語が出てくる文章の数)+1
上の2つの指標を掛け合わせると、文章中に多く出てくるかつ特定の文章で出てくる単語が高評価になります。文章中に出てくる頻度が少ない単語や多くの文章で出てくる単語は低評価になります。+1しているのは全ての文章に出てくる単語だと対数の計算結果が0になるので、もう一要素の評価がどのような値であっても0になってしまうので必ず0以上にするための値です。
・使用方法
1.変数の宣言
TFIDFInput input=new TFIDFInput();
TFIDFAnalyzer analyzer=new TFIDFAnalyzer();
2.文章の入力
今回は単語の分割は別処理でしています。今回はStringの変数のリストを登録します。
input.addSentence(単語のリスト);
登録順で番号を自動採番して登録されます。
3.TFIDFの計算
TFIDFResult result=analyzer.analyze(input);
結果はTFIDFResultの中に保存されます。
以下の記述で結果が取得できます。
result.getTfidfValue(番号)
取得結果は単語とTFIDFの値の組み合わせとなります。
ソースコードも同じくGithubに上げています。
SentenceAnalyzer
以上です。