英文の単語出現頻度を計算するクラスの続き

 前回に引き続き、英文から名詞を抜き出すRubyクラスの実装を行いました。
 前回は英文の単語数で分類するところまで書いたので、今回は分類された英文ごとに、品詞解析にかけて名詞を抜き出し、その出現数をカウントするところを実装しました。
 品詞解析はGENIA taggerを使用しているので、これを別プロセスで起動していることを前提に、そのポートに英文を投げるというように書きました。あとは「NN」というタグが名詞を表しているので、そのタグがついた単語を回収するように書きました。

@socket.puts @original_hash[id].gsub("\n", " ")
result = @socket.gets.gsub(" ", "\n").chomp

result.each_line do |line|
elements = line.split(/\t/) #タブ区切り

if elements[2] =~ /^NN/ #名詞を回収
word = elements[1].downcase #小文字に直す

if word_list.include?(word) #既に追加済なら
word_list[word] += 1
else #新規登録
word_list[word] = 1
end
end
end

 分類された英文ごとに結果をファイルに出力するメソッドも用意して完成したので、私のGitHubの方にアップしてあります。

 そして書いていて気づいたのですが、GENIA taggerをわざわざサーバプログラムとして起動する必要もなく、品詞解析を行うときに起動すれば良いように思ったので、品詞解析を行うメソッドを集めたクラス「GENIA_controller」を作成しています。
 今回は英文1分だけを解析できるところまで作成したので、次回複数行に対応させて使用できる形にしたいと思います。