トピックモデル解析とポスターの分類について

 前回上手く行かなかった、RubyからのMeCabの呼び出しですが、Rubyの外部コマンド呼び出しに使うライブラリの「Open3」を用いた方法を紹介されていた、hirokan55の日記様の記事から参考にして、上手く呼び出すことができるようになりました。

def mecab_exec(text)
result = Array.new
stdin, stdout, stderr = Open3.popen3("mecab")

stdin.puts(text)
stdin.close #標準入力を切断
#標準出力を回収
stdout.each do |line|
line_list = line.split("\t") #タブで出力を区切る
line_result = @node.new(line_list[0], line_list[1])
result.push line_result
end

return result
end

 上記のようなメソッドをクラスの中に用意して、文章を形態素解析するときに呼び出すようにしました。

 これで、各ポスターの内容を英語・日本語それぞれについてトピックモデル解析ができるようになったので、今度はトピックごとに分類されたポスター間の距離をどのように決めようか考えました。
 トピックモデル解析では、各ポスターについて全てのトピックへの分類確率が計算されます。これを利用して、同じような分類確率ベクトルを持つようなポスターを”近い”と判断させることを考えています。
 トピックT個に対して、大きさTのベクトルがポスターごとに計算されるので、それらの内積とベクトルの大きさから角度を求められるので、その角度の小さい順に並べるか、単純にベクトルの距離を計算して、近い順に並べるかにしようかと思っています。

 さて、来たる10月4日・5日にトーゴーの日が開催されるので、そこでのポスターの要旨一覧をいただきました。今回はこれから筆者名とポスタータイトルと要旨をパースし、形態素解析してトピックモデル解析を試すところまで実装しました。
 全体的な分布をみると、トピックは4つか5つにするのが良さそうでした。次回は早速ポスター間の距離を調べてネットワーク図を作ってみようと思います。