お手軽POS tagging(ペルシア語編)

また例によって,ペルシア語の話である.

きょうのお題は「ちょー簡単にペルシア語の品詞タグ付けをしよう!」

そもそも品詞タグ付けってなに?

読んで字の如く,単語に品詞情報をつけること.

「なにそれ?楽しいの?」と思うかもしれないが,自然言語処理では大切な技術である.次のような例を考えて欲しい.

Time fries like an arrow

普通の人間なら「光陰矢のごとし」と解釈するが,辞書を引いて卑屈な解釈をすると「時ハエは矢が好き」になる.

(この例は古くから,言語学分野で自然言語の曖昧性を示す例として使われてきた.そんな読み方しねーだろ!と思うかもしれないが,哲学とはそういうものなのだ.本当にひく...おっと,こんな時間に誰か来たようだ...)

つまり品詞系列は

Time/N fries/V like/ADJ an/DT arrow/N

Time/N fries/NN like/V an/DT arrow/N

の2種類が存在している.

ここで,「どっちの品詞系列の方が尤もらしいか?」を考えると,当然,前者になる.

この直感をアルゴリズムにしたのがHMM(Hidden Markov Model)だ.

賢い人がいっぱい情報を公開しているので,詳しく知りたいひとはそっちを見ればいいとおもうを!

あと,自然言語処理において,品詞情報は前処理的に扱われているので,それだけ重要な処理過程である.

ペルシア語の品詞タグ付きコーパスと学習済みモデル

すでにどっちもある.便利な世の中になったものだ. 論文はこれhttp://stp.lingfil.uu.se/~mojgan/TagPer.pdf

元々はBijankhan Corpusというコーパスっていう品詞タグ付きコーパスが存在しているのだが,ちょっと問題がある(文字コードの処理とか,品詞タグ体系とか..)ので,Mojganさんが修正したコーパスを公開している.ここhttp://stp.lingfil.uu.se/~mojgan/UPC.html

さらに,学習済みモデルも公開しているので,情弱でもすぐにタグ付けできる神仕様! さっそく,使ってみよう!

まずは,モデルはhunposhttps://code.google.com/p/hunpos/downloads/listで構築されているので,hunposを使えるようにしよう.

ぼくはMacなので,コンパイル済みのファイルをdownloadして展開するだけで,めっちゃんこ簡単にできる(windows?そんなの知らね...)

次に学習済みモデルをdownloadしてくる.ここからhttp://stp.lingfil.uu.se/~mojgan/tagper.html

あとはページにも説明書いてあるけど,

prompt> hunpos-tag model_TagPer < input_file.txt > output_file.txt

で楽勝っす!ww

ついでに,テストファイルもひょいひょい作った.

#
او
هدیه<U+200C>ی
توالد
داد
.

さらにbashスクリプトも書いちゃった(うほほほーい)なので,簡単にデモができるを! やったね,たえちゃん!

echo -n "Type 'Y' to tag with HMM."
read cmd
if [ cmd = 'Y' ];
then
        ./hunpos-tag < test > out
fi
echo "Finished tagging"

論文によると,96.6%のAccuracyでタグ付けができるらしい. ま,新聞記事のようなきれいな文なら,大概はタグ付けできるってことですな.

余談だが,このMojganさん,Malt ParserのNivreの元で研究している.ちょっとうらやましい.