YamChaとかMeCabとか使って顔文字抽出

概要

Ruby,YamCha,MeCabで顔文字抽出を作りました。前に情報特別演習(筑波大学の実践的な授業)でやっていたものより精度が良かったので、こっちを先に公開します。先に言っておくと、残念ながら私のオリジナルではありません。

精度とか

私が勢い良く書いた10分割交差検定が正しければ、8割から9割くらいの精度が出ています。Twitterのsample streamから取得したデータにタグ付けを施したものだけを、教師データとして使っているため、偏りがあるかもしれません。

素性

素性は「さよならー(^_^)/~」を例に取ると、こんなかんじ。

さ 感動詞 __nil__ __nil__ B
よ 感動詞 __nil__ __nil__ I
な 感動詞 __nil__ __nil__ I
ら 感動詞 __nil__ __nil__ E
ー 名詞 一般 __nil__ S
( 名詞 サ変接続 __nil__ B
^ 名詞 サ変接続 __nil__ I
_ 名詞 サ変接続 __nil__ I
^ 名詞 サ変接続 __nil__ I
) 名詞 サ変接続 __nil__ I
/ 名詞 サ変接続 __nil__ I
~ 名詞 サ変接続 __nil__ E

各文字、MeCabが出した品詞と、各文字が、その単語の何処の位置に来るかをBIESタグで表したものが素性。BIESタグは、例えば「さよなら」は一単語なので、「さ」はB, 「よ」「な」はI、「ら」はEとなる。例文中には出てこないが、一文字で一単語となる場合はSタグが付与される。

使い方

YamCha, MeCab (IPAdic)、Rubyをインストールしたら、以下のコマンドで抽出できる。

$ ./emext
入力
こんにちは(*^_^*)
出力
こんにちは<em>(*^_^*)</em>
ファイルを入れる
$ ./emext hoge.txt

ダウンロード

参考文献など、詳細はこちらに書いておきましたわ。
http://www.haroperi.info/emoticon/emext.html