More Related Content Similar to PerlでKyTea (20) PerlでKyTea1. OECU Visual Media Lab.
Perl で KyTea
大阪電気通信大学
吉岡 康平 (@_pawa_)
2011 年 11 月 26 日
Kansai.pm #14 1
2. OECU Visual Media Lab. Kansai.pm #14
自己紹介
大阪電気通信大学 3年生
視覚・メディアの研究室( 3 年次に卒研がある)
趣味:草野球
2
3. OECU Visual Media Lab. Kansai.pm #14
KyTea とは
読み方:きゅーてぃー
JUMAN ・ ChaSen ・ MeCab より新しい,形態素解
析も可能なテキスト解析器
特徴
簡単に分野適応が可能
読み・発音推定も可能
3
4. OECU Visual Media Lab. Kansai.pm #14
第 8 回 NLP 勉強会にも登場!?
2011 年 11 月 23 日
「点予測による自然言語処理」
ハッシュタグ: #TokyoNLP
発表資料: http://plata.ar.media.kyoto-
u.ac.jp/mori/research/public/TokyoNLP11Nov.pdf
NLPer じゃない人が見たら -> 「なるほど、わからん」
4
5. OECU Visual Media Lab. Kansai.pm #14
Perl での使用例 (1/2)
1.KyTea のインストール
root 権限がないレンタルサーバ等の場合は「 --prefix 」
でインストールディレクトリを変更する
2.Text::KyTea のインストール
cpanm Text::KyTea
cpanm -v Text::KyTea または
cpanm –-interactive Text::KyTea
(インストールディレクトリを変更した場合)
5
6. OECU Visual Media Lab. Kansai.pm #14
Perl での使用例 (2/2)
3.解析
my $kytea = Text::KyTea->new(%config);
$kytea->parse($text);
4.出力
農産 名詞 /2.70334713695609 のうさん /100
物 接尾辞 /1.6587805017786 ぶつ /1.98600310003943
価格 名詞 /2.52071395143603 かかく /100
安定 名詞 /2.71772008997416 あんてい /100
法 名詞 /1.77926630244534 ほう /100
を 助詞 /4.1659655242444 を /100
施行 名詞 /2.37552852395856 しこう /1.80822732106356 6
7. OECU Visual Media Lab. Kansai.pm #14
読み推定のレベル
正解
小鳥遊さん -> たかなしさん
長野久義 -> ちょうのひさよし
鏡音リン -> かがみねりん
薬袋 -> みない
不正解
高次元 -> たかじもと (正解:こうじげん)
巡音ルカ -> じゅんおんるか (正解:めぐりねるか)
注連本 -> しめぼん (正解:しめもと) 7
8. OECU Visual Media Lab. Kansai.pm #14
いろいろなモデル
中国語用モデル
ひらがなもでる
(http://www.phontron.com/kytea/model-ja.html)
京都大学 森准教授のモデル(森モデルと呼ぶ )
(http://plata.ar.media.kyoto-
u.ac.jp/mori/research/topics/ASR/)
8
9. OECU Visual Media Lab. Kansai.pm #14
中国語用モデル
「我是日本人。」
我 wo3_
是 shi4_
日本 ri4_ben3_
人 ren2_
。 。_
9
10. OECU Visual Media Lab. Kansai.pm #14
ひらがなもでる
「さいくろんまぐなむ」
さいくろん 名詞
まぐなむ 名詞
デフォルトのモデルの場合
さ 助詞
い 語尾
くろんまぐ 形状詞
な 助動詞
む 語尾
10
11. OECU Visual Media Lab. Kansai.pm #14
森モデル
「黒毛和牛上塩タン焼き六百八十円」
黒毛 クロゲ
和牛 ワギュー
上 ジョー
塩 シオ
タン タン
焼き ヤキ
六百 ロッピャク
八十 ハチジュー
円 エン
11
12. OECU Visual Media Lab. Kansai.pm #14
KyTea の仕組み
農 |1 産 |2 物 |3 価 |4 格 |5 安 |6 定 |7 法 |8 を |9 施 |10 行
|1 ~ |10 に対して境界があるかないか推定
例えば, |8 に境界があるかないか推定する場合
|8 の周りの文字列
|8 の周りの文字列の文字種(ひらがな・漢字など)
辞書に含まれている単語
から推定
-> 農産 | 物 | 価格 | 安定 | 法 | を | 施工
12
13. OECU Visual Media Lab. Kansai.pm #14
KyTea の使いどころ
読み推定の機能が欲しい場合
既存の形態素解析器では上手く解析できない場合
( e.g. ツイート,専門分野,み○くら語など)
簡単に分野適応可能!
13
14. OECU Visual Media Lab. Kansai.pm #14
MeCab より良い感じに
Twitter のツイートを形態素解析できる
モデルを作ってみよう!
14
15. OECU Visual Media Lab. Kansai.pm #14
用意するもの
Linux か Mac OSX か CygWin (メモリ 3.5GB 以上)
KyTea の分野適応ツールキット v. 1.0
http://www.phontron.com/kytea/active-ja.html
KyTea の素性ファイル
http://www.phontron.com/kytea/train- ja.html#feature
ツイート (とりあえず 1000 ツイートぐらい?)
AnyEvent::Twitter::Stream などで収集可能
target-train.raw というファイル名で保存
15
16. OECU Visual Media Lab. Kansai.pm #14
ファイル移動
KyTea の素性ファイル (kytea-0.3.2.feat)
ツイート (target-train.raw)
両ファイルともツールキットの data ディレクトリへ
16
17. OECU Visual Media Lab. Kansai.pm #14
ツールキット内の makemodel.sh の修正
- GEN_CORPORA="-full data/wiki-sample.word"
+ GEN_CORPORA="-feat data/kytea-0.3.2.feat"
「 -nope 」 という文字列を全て削除
17
18. OECU Visual Media Lab. Kansai.pm #14
ツールキット内の merge-annot.pl を修正
$2 =~ /([^ ?|-&][^ ?|-&])/ and die
"Unmarked character bigram '$1' at $_n";
↑ をコメントアウト
(単語分割のみの場合しか使えない)
18
19. OECU Visual Media Lab. Kansai.pm #14
アノテーション(注釈付与) (1/3)
$ ./makemodel.sh
モデルが作成され,アノテーション(注釈付与)すべき
箇所が選択される
メモリ 3GB ほど使用する
LIBLINEAR という高速なライブラリを使用しているの
で,意外と速い( 10 分ぐらい)
ツールキットの work ディレクトリに「 ddd.annot 」
というファイルが生成されるので,
ddd が最も大きいファイルを開く.
19
20. OECU Visual Media Lab. Kansai.pm #14
アノテーション (2/3)
[ ク - リ - ス - マ ! ス - ま - で - あ - と |4 7
日 、 、 、 ♥]
「 ! (半角)」を「 - 」(境界なし)や「 | 」(境界あり)に
書き換えて前後の単語と併せてタグ付与
「 ! 」意外でも目についた部分は書き換えて良い
例)
[ ク - リ - ス - マ - ス / 名詞 / くりすます | ま - で / 助
詞 / まで | あ - と |4 7 日 、 、 、 ♥ ]
20
21. OECU Visual Media Lab. Kansai.pm #14
アノテーション (3/3)
全ての「 ! 」に同様の処理ができたら
$ ./saveannot.sh
良い感じになるまでループ
( $ ./makemodel.sh に戻る)
21
22. OECU Visual Media Lab. Kansai.pm #14
顔文字も推定させたい場合
global -1 で学習させる
Makemode.sh を編集する
# make the model
echo "$TRAIN $TRAIN_OPT $GEN_CORPORA $DICTS
-part save/$num.wann -model work/$num.mod"
$TRAIN $TRAIN_OPT $GEN_CORPORA $DICTS -part save/
$num.wann -global 1 -model work/$num.mod
ヽ -(-´-▽- ` -)- / / 顔文字 /UNK
のようにアノテーション 22
23. OECU Visual Media Lab. Kansai.pm #14
作った Twitter 用モデルで解析
「だよねー (´ ; ω ;` ) トイレで着替えなきゃwww」
だ 助動詞 だ
よ 助詞 よ
ねー 助詞 ねー
(´ ; ω ;` ) 顔文字 UNK
トイレ 名詞 UNK
で 助詞 で
着替え 名詞 きがえ
な 助動詞 な
きゃ 語尾 きゃ
www 記号 わらわら
23
24. OECU Visual Media Lab. Kansai.pm #14
もうちょっと難しそうなテキスト
「ノノ * ` ω´* ルつお弁当」
ノノ * ` ω´* ルつ 動詞 UNK
お 接頭辞 お
弁当 名詞 べんとう
デフォルトのモデルの場合
ノノ 名詞 UNK つ 動詞 つ
* 補助記号 UNK お 接頭辞 お
` 補助記号 ` 弁当 名詞 べんとう
ω 補助記号 おめが
´* 補助記号 UNK
ル 補助記号 UNK
24
25. OECU Visual Media Lab. Kansai.pm #14
Text::KyTea の高速化
notag => [2]
n 個目のタグを推定しない
2 でデフォルトモデルの場合 -> 読みを推定しない
tagmax => 1
接頭辞 記号 言いよどみ などの候補の最大何個
出力するか
まだまだ勉強中です。 Text::KyTea にバグ・改善点
などあれば気軽にお知らせください。 < ( . _ . ) >
25
26. OECU Visual Media Lab. Kansai.pm #14
参考文献
Graham Neubig ,中田 陽介,森 信介 : 点推定と能
動学習を用いた自動単語分割器の分野適応 , 言
語処理学会第 16 回年次大会 , 2010.
Chin-Wei Hsu et al. : A Practical Guide to Supprot
Vector Classification,
<http://www.csie.ntu.edu.tw/~cjlin/papers/guide/
guide.pdf>, 2010.
26