SlideShare a Scribd company logo
OECU Visual Media Lab.




   Perl で KyTea

                         大阪電気通信大学
                  吉岡 康平 (@_pawa_)
                          2011 年 11 月 26 日

                            Kansai.pm #14    1
OECU Visual Media Lab.   Kansai.pm #14




自己紹介
  大阪電気通信大学 3年生
  視覚・メディアの研究室( 3 年次に卒研がある)
  趣味:草野球




                                    2
OECU Visual Media Lab.        Kansai.pm #14




KyTea とは
  読み方:きゅーてぃー

  JUMAN ・ ChaSen ・ MeCab より新しい,形態素解
  析も可能なテキスト解析器

  特徴
      簡単に分野適応が可能
      読み・発音推定も可能


                                         3
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
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
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
OECU Visual Media Lab.                         Kansai.pm #14




読み推定のレベル
  正解
      小鳥遊さん              ->   たかなしさん
      長野久義               ->   ちょうのひさよし
      鏡音リン               ->   かがみねりん
      薬袋                 ->   みない


  不正解
      高次元                -> たかじもと        (正解:こうじげん)
      巡音ルカ               -> じゅんおんるか      (正解:めぐりねるか)
      注連本                -> しめぼん         (正解:しめもと)  7
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
OECU Visual Media Lab.        Kansai.pm #14




中国語用モデル
  「我是日本人。」
      我           wo3_
      是           shi4_
      日本          ri4_ben3_
      人           ren2_
      。           。_




                                         9
OECU Visual Media Lab.         Kansai.pm #14




ひらがなもでる
  「さいくろんまぐなむ」
      さいくろん 名詞
      まぐなむ 名詞


      デフォルトのモデルの場合
         さ               助詞
         い               語尾
         くろんまぐ           形状詞
         な               助動詞
         む               語尾

                                         10
OECU Visual Media Lab.    Kansai.pm #14




森モデル
  「黒毛和牛上塩タン焼き六百八十円」
      黒毛          クロゲ
      和牛          ワギュー
      上           ジョー
      塩           シオ
      タン          タン
      焼き          ヤキ
      六百          ロッピャク
      八十          ハチジュー
      円           エン
                                    11
OECU Visual Media Lab.                        Kansai.pm #14




KyTea の仕組み
  農 |1 産 |2 物 |3 価 |4 格 |5 安 |6 定 |7 法 |8 を |9 施 |10 行
      |1 ~ |10 に対して境界があるかないか推定


      例えば, |8 に境界があるかないか推定する場合
         |8 の周りの文字列
         |8 の周りの文字列の文字種(ひらがな・漢字など)
         辞書に含まれている単語
      から推定


      -> 農産 | 物 | 価格 | 安定 | 法 | を | 施工
                                                         12
OECU Visual Media Lab.    Kansai.pm #14




KyTea の使いどころ
  読み推定の機能が欲しい場合
  既存の形態素解析器では上手く解析できない場合
  ( e.g. ツイート,専門分野,み○くら語など)
      簡単に分野適応可能!




                                    13
OECU Visual Media Lab.        Kansai.pm #14




              MeCab より良い感じに

Twitter のツイートを形態素解析できる

             モデルを作ってみよう!



                                        14
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
OECU Visual Media Lab.               Kansai.pm #14




ファイル移動
  KyTea の素性ファイル (kytea-0.3.2.feat)
  ツイート (target-train.raw)
      両ファイルともツールキットの data ディレクトリへ




                                               16
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
OECU Visual Media Lab.                     Kansai.pm #14




ツールキット内の merge-annot.pl を修正
  $2 =~ /([^ ?|-&][^ ?|-&])/ and die
  "Unmarked character bigram '$1' at $_n";
  ↑ をコメントアウト
  (単語分割のみの場合しか使えない)




                                                     18
OECU Visual Media Lab.         Kansai.pm #14




アノテーション(注釈付与) (1/3)
  $ ./makemodel.sh
      モデルが作成され,アノテーション(注釈付与)すべき
      箇所が選択される
      メモリ 3GB ほど使用する
      LIBLINEAR という高速なライブラリを使用しているの
      で,意外と速い( 10 分ぐらい)

  ツールキットの work ディレクトリに「 ddd.annot 」
  というファイルが生成されるので,
  ddd が最も大きいファイルを開く.
                                         19
OECU Visual Media Lab.                       Kansai.pm #14




アノテーション (2/3)
  [ ク - リ - ス - マ ! ス - ま - で - あ - と |4 7
  日 、 、 、 ♥]

  「 ! (半角)」を「 - 」(境界なし)や「 | 」(境界あり)に
  書き換えて前後の単語と併せてタグ付与
      「 ! 」意外でも目についた部分は書き換えて良い


  例)
      [ ク - リ - ス - マ - ス / 名詞 / くりすます | ま - で / 助
      詞 / まで | あ - と |4 7 日 、 、 、 ♥ ]
                                                       20
OECU Visual Media Lab.      Kansai.pm #14




アノテーション (3/3)
  全ての「 ! 」に同様の処理ができたら
  $ ./saveannot.sh


  良い感じになるまでループ
  ( $ ./makemodel.sh に戻る)




                                      21
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
OECU Visual Media Lab.                Kansai.pm #14




作った Twitter 用モデルで解析
  「だよねー (´ ; ω ;` ) トイレで着替えなきゃwww」
      だ                  助動詞   だ
      よ                  助詞    よ
      ねー                 助詞    ねー
      (´ ; ω ;` )        顔文字   UNK
      トイレ                名詞    UNK
      で                  助詞    で
      着替え                名詞    きがえ
      な                  助動詞   な
      きゃ                 語尾    きゃ
      www                記号    わらわら
                                                23
OECU Visual Media Lab.                         Kansai.pm #14




もうちょっと難しそうなテキスト
  「ノノ * ` ω´* ルつお弁当」
      ノノ * ` ω´* ルつ 動詞         UNK
      お             接頭辞        お
      弁当            名詞         べんとう

      デフォルトのモデルの場合
         ノノ   名詞         UNK   つ    動詞  つ
         *    補助記号       UNK   お    接頭辞 お
         `    補助記号       `     弁当   名詞  べんとう
         ω    補助記号       おめが
         ´*   補助記号       UNK
         ル    補助記号       UNK
                                                         24
OECU Visual Media Lab.       Kansai.pm #14




Text::KyTea の高速化
  notag => [2]
      n 個目のタグを推定しない
      2 でデフォルトモデルの場合 -> 読みを推定しない

  tagmax => 1
      接頭辞 記号 言いよどみ などの候補の最大何個
      出力するか

  まだまだ勉強中です。 Text::KyTea にバグ・改善点
  などあれば気軽にお知らせください。 < ( . _ . ) >
                                       25
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
OECU Visual Media Lab.   Kansai.pm #14




       ご清聴ありがとうございました.




                                   27

More Related Content

PerlでKyTea

  • 1. 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
  • 27. OECU Visual Media Lab. Kansai.pm #14 ご清聴ありがとうございました. 27