「茶筌」/「南瓜」を用いた 形態素解析・係り受け解析 浅原正幸(あさはら まさゆき) 工藤拓(くどう たく) 松本裕治(まつもと ゆうじ)
概要 インストール 「茶筌」の使い方 「南瓜」の使い方 演習 「茶筌」のインストール 「南瓜」のインストール 環境設定 実際に使ってみる カスタマイズ 「南瓜」の使い方 演習 freqt を用いた木構造マイニング 頻出部分木を用いた文分類
1.1. 「茶筌」のインストール Administrator もしくは「管理者権限を持ったユーザー」でログオンする インストールがうまくいったかどうか聞くこと
1.1. 「茶筌」のインストール arch\chasen233_031208.exe を実行する 以下のような画面が出てくる: [はい(Y)]を選択
1.1. 「茶筌」のインストール 以下のような画面が出てくる: [Next >]を選択
1.1. 「茶筌」のインストール 以下のような画面が出てくる: Licenseに関する項目を読んで [I accept the agreement] をチェック [Next >]を選択
1.1. 「茶筌」のインストール 以下のような画面が出てくる: [Next >]を選択
1.1. 「茶筌」のインストール 以下のような画面が出てくる: インストールするフォルダを選択し[Next >]を選択
1.1. 「茶筌」のインストール 以下のような画面が出てくる: [Install]を選択
1.1. 「茶筌」のインストール 以下のような画面が出てくる: インストールが完了 [Finish]を選択
1.2. 「南瓜」のインストール arch\cabocha-0.52.exe を実行する 以下のような画面が出てくる: [Next >]を選択
1.2. 「南瓜」のインストール 以下のような画面が出てくる: Licenseに関する項目を読んで [I accept the agreement] をチェック [Next >]を選択
1.2. 「南瓜」のインストール 以下のような画面が出てくる: インストールするフォルダを選択し[Next >]を選択
1.2. 「南瓜」のインストール 以下のような画面が出てくる: スタートメニューに作るフォルダ名の指定 [Next >]を選択
1.2. 「南瓜」のインストール 以下のような画面が出てくる: [Install >]を選択
1.2. 「南瓜」のインストール 以下のような画面が出てくる: 「南瓜」を他のユーザーにも使わせたいならば [はい(Y)]を選択
1.2. 「南瓜」のインストール 以下のような画面が出てくる: インストールが完了 [Finish]を選択
1.3. 環境設定 Windows XP の場合 [コントロールパネル]→[パフォーマンスとメンテナンス]→[システム] [詳細設定]のタブを選択 [環境変数] をクリック
1.3. 環境設定 [システム環境変数]の Path を選択し、[編集(I)]をクリック 以下の行を最後尾に付け加える (インストール先を変えた場合には適宜読み替えること) ;c:\Program Files\ChaSen;C:\Program Files\CaboCha\bin [4.1から来た人はここから戻る]
概要 インストール 「茶筌」の使い方 「南瓜」の使い方 演習 「茶筌」のインストール 「南瓜」のインストール 環境設定 実際に使ってみる カスタマイズ 「南瓜」の使い方 演習 freqt を用いた木構造マイニング 頻出部分木を用いた文分類
2.1. 実際に使ってみる コマンドプロンプトを立ち上げる [スタート]→[すべてのプログラム]→[アクセサリ]→[コマンドプロンプト] もしくは [スタート]→[ファイル名を指定して実行] 以下のように入力して[OK]
2.1. 実際に使ってみる サンプルテキストを解析してみる > chasen (配ったフォルダ)\text\sample.txt キーボードから入力
2.1. 実際に使ってみる 自由に入力したテキストを解析してみる > notepad とすると[メモ帳]が開きます。自由に日本語文を作成してみてください。 > chasen (保存したテキストファイル名)
2.2. カスタマイズ 出力フォーマットを変更する [メモ帳] などで chasenrc ファイルを編集する > notepad c:\Program Files\ChaSen\dic\chasenrc 項目 (OUTPUT_FORMAT …)をいろいろ変更する
2.2. カスタマイズ 例)単語のわかち書き (OUTPUT_FORMAT “%m ")
2.2. カスタマイズ 例)単語と読みだけの出力にする (OUTPUT_FORMAT "%m\t%y\n")
2.2. カスタマイズ 例)単語と品詞だけの出力にする (OUTPUT_FORMAT "%m\t%U(%P-)\n")
2.2. カスタマイズ より詳しい説明は マニュアル doc\chasen-2.3.3-j.pdf 1.4 節を参照のこと
2.2. カスタマイズ 簡単な分かち書き定義の変更 品詞の線形結合を一単語に [メモ帳] などで chasenrc ファイルを編集する notepad c:\Program Files\ChaSen\dic\chasenrc 項目 (COMPOSIT_POS …)をいろいろ変更する
2.2. カスタマイズ 例)数値表現 デフォルトの設定では数字一文字が一単語 > chasen (配ったフォルダ)\text\suuchi.txt
2.2. カスタマイズ 例)数値表現(続き) chasenrc に以下のように記述 (COMPOSIT_POS ((名詞) (名詞 数) (名詞 接尾 助数詞))) > chasen (配ったフォルダ)\text\suuchi.txt
2.2. カスタマイズ 例)名詞の線形結合 (COMPOSIT_POS ((名詞) (名詞))) > chasen (配ったフォルダ)\text\kyoto.txt
2.2. カスタマイズ より詳しい説明は マニュアル doc\chasen-2.3.3-j.pdf 2 節13 を参照のこと
2.2. カスタマイズ 辞書のメンテナンス 「茶筌」辞書に登録されていない語を追加する 手順 最新の辞書パッケージを展開する ユーザー辞書を作成する 辞書の再コンパイルを行う chasenrc の変更
2.2. カスタマイズ 辞書のメンテナンス 最新の辞書パッケージを展開する arch\ipadic-sjis-2.7.0.zip を展開する C:\Program Files\ChaSen\dic と入れ換える 古い \dic を \dic2 としておくとよいでしょう 展開されたフォルダを \Program Files\ChaSen 以下に移動してフォルダ名を \dic に変更
2.2. カスタマイズ 辞書のメンテナンス ユーザー辞書を作成する メモ帳などで新規ファイル User.dic を作成する
2.2. カスタマイズ 辞書のメンテナンス ユーザー辞書を作成する (サンプルファイルが text\User.dic にあります) 活用語でない場合 (品詞 (名詞 一般)) ((見出し語 (ピラティス4000)) (読み ピラティス) (発音 ピラティス) ) 活用語の場合 (品詞 (動詞 自立)) ((見出し語 (あだける 4000)) (読み アダケル) (発音 アダケル) (活用型 一段) ) ※ ピラティス:リハビリ用エクササイズの一種 あだける:播州弁で「おっこちる」
2.2. カスタマイズ 辞書のメンテナンス 辞書の再コンパイル C:\Program Files\ChaSen\dic 以下にある Makefile.bat を実行する
2.2. カスタマイズ 辞書のメンテナンス 4. chasenrc の変更 以下の行を変更 ↓ (GRAMMAR /usr/local/lib/chasen/dic/ipadic) ↓ ;;(GRAMMAR /usr/local/lib/chasen/dic/ipadic) もしくは (GRAMMAR “c:\\Program Files\\ChaSen\\dic”) Escape してちゃんと Grammar ファイルの場所を示す
2.2. カスタマイズ 辞書のメンテナンス 試しに解析してみる > chasen (配ったフォルダ)\text\adakeru.txt
概要 インストール 「茶筌」の使い方 「南瓜」の使い方 演習 「茶筌」のインストール 「南瓜」のインストール 環境設定 実際に使ってみる カスタマイズ 「南瓜」の使い方 演習 freqt を用いた木構造マイニング 頻出部分木を用いた文分類
3. 「南瓜」の使い方 試しに解析してみる > cabocha (配ったフォルダ)\text\sample.txt
3. 「南瓜」の使い方 -f1 オプション 計算機で扱いやすいフォーマット (京都大学テキストコーパスと同じ形式) > cabocha -f1 (配ったフォルダ)\text\sample.txt
3. 「南瓜」の使い方 固有表現抽出 > cabocha (配ったフォルダ)\text\koushukai.txt
3. 「南瓜」の使い方 固有表現抽出 > cabocha -f1 (配ったフォルダ)\text\koushukai.txt
3. 「南瓜」の使い方 休憩時間前に 4. で使うデータを「南瓜」を使って作成する。 >cabocha -f1 (配ったフォルダ)\text\sanshiro.txt > sanshiro-cab.txt >cabocha -f1 (配ったフォルダ)\text\kokoro.txt > kokoro-cab.txt >cabocha -f1 (配ったフォルダ)\text\hana.txt > hana-cab.txt >cabocha -f1 (配ったフォルダ)\text\rashomon.txt > rashomon-cab.txt 注意: -f1 オプションをつけるのを忘れないでください
15分休憩
概要 インストール 「茶筌」の使い方 「南瓜」の使い方 演習 「茶筌」のインストール 「南瓜」のインストール 環境設定 実際に使ってみる カスタマイズ 「南瓜」の使い方 演習 freqt を用いた木構造マイニング 頻出部分木を用いた文分類
4.1. freqt を用いた木構造マイニング 木構造マイニング 係り受け解析結果を木構造の集合(森)と考える この中で頻出する部分木構造を取り出す あるテキスト・著者・グループ・分野に特有の言語表現がとりだせる 文分類をするための手ががりを得ることができる
4.1. freqt を用いた木構造マイニング データ整形: 3種類(ngram,dep,dep2)定義 例文:「部屋が急に明るくなった。」 「南瓜」の出力を S 式(木構造を括弧の入れ子で表現する形式)へと変換 3種類(ngram,dep,dep2)定義 例文:「部屋が急に明るくなった。」 ngram: (~BOS(部屋(が(急(に(明るい(なる(た(。(~EOS))))))))) dep: (~EOS(。(た(なる(明るい(に(急))(が(部屋(~BOS)))))))) dep2: (~EOS(。(た(なる(明るい)(に(急))(が(部屋(~BOS)))))))
4.1. freqt を用いた木構造マイニング Ngram 単純な線形結合 例文:「部屋が急に明るくなった。」 ngram: (~BOS(部屋(が(急(に(明るい(なる(た(。(~EOS))))))))) EOS 。 た なる 明るい に 急 が Ngram 単純な線形結合 部屋 BOS
4.1. freqt を用いた木構造マイニング dep:係り受け構造 例文:「部屋が急に明るくなった。」 dep: (~EOS(。(た(なる(明るい(に(急))(が(部屋(~BOS)))))))) 急 BOS 部屋 に が 明るい なる た dep:係り受け構造 文節内は線形結合 係り元の最右単語は係り先の最左単語に連結 。 EOS
4.1. freqt を用いた木構造マイニング dep2:係り受け構造 例文:「部屋が急に明るくなった。」 dep2: (~EOS(。(た(なる(明るい)(に(急))(が(部屋(~BOS))))))) BOS 急 部屋 に 明るい が なる た dep2:係り受け構造 文節内は線形結合 係り元の最右単語は係り先の主辞に連結 。 EOS
4.1. freqt を用いた木構造マイニング データ整形 「南瓜」の出力を S 式へと変換する TIPS > (配ったフォルダ)\prog\tos.exe -t ngram -i sanshiro-cab.txt > sanshiro-ngram.txt > (配ったフォルダ)\prog\tos.exe -t dep -i sanshiro-cab.txt > sanshiro-dep.txt > (配ったフォルダ)\prog\tos.exe -t dep2 -I sanshiro-cab.txt > sanshiro-dep2.txt TIPS (配ったフォルダ)\prog を適切な場所にコピーして、そこにパスを通すと tos.exe だけで実行が可能になる [やりかた(1.3 環境設定)] > tos.exe -t ngram -i sanshiro-cab.txt > sanshiro-ngram.txt > tos.exe -t dep -i sanshiro-cab.txt > sanshiro-dep.txt > tos.exe -t dep2 -I sanshiro-cab.txt > sanshiro-dep2.txt
4.1. freqt を用いた木構造マイニング TOS.exe のオプションその他 -s SJIS のファイルを入力と仮定(デフォールト) -e EUC のファイルを入力と仮定 -u UTF-8のファイルを入力と仮定
4.1. freqt を用いた木構造マイニング freqt を実際に動かしてみる 最小出現回数 最小ノード(単語)数 > (配ったフォルダ)\prog\freqt.exe -m 25 -M 3 < sanshiro-ngram.txt 最小出現回数 最小ノード(単語)数
4.1. freqt を用いた木構造マイニング freqt を実際に動かしてみる 出力フォーマット 1列目の数字 出現頻度 > freqt.exe -m 25 -M 3 < sanshiro-ngram.txt > sanshiro-ngram-freqt.txt 出力フォーマット 1列目の数字 出現頻度 2列目の数字 重みつき出現頻度 (1つの文に複数回同じ部分木が出現した場合には複数回数える) 3列目の数字 ノード数
4.1. freqt を用いた木構造マイニング 他の木構造でもやってみる: (copy & paste するととまらないことがあるので手入力してください) > freqt.exe -m 25 -M 3 < sanshiro-dep.txt > sanshiro-dep-freqt.txt > freqt.exe -m 25 -M 3 < sanshiro-dep2.txt > sanshiro-dep2-freqt.txt 結果を眺めてみる: > notepad sanshiro-dep-freqt.txt > notepad sanshiro-dep2-freqt.txt オプションの値をいろいろかえてみる: > freqt.exe -m 10 -M 5 < sanshiro-ngram.txt > sanshiro-ngram-freqt2.txt > freqt.exe -m 10 -M 5 < sanshiro-dep.txt > sanshiro-dep-freqt2.txt > freqt.exe -m 10 -M 5 < sanshiro-dep2.txt > sanshiro-dep2-freqt2.txt 注意:-m や -M の値を小さくすると出力が大きすぎてHDDがあふれる場合があります。
4.1. freqt を用いた木構造マイニング 残りのファイルでもやってみる(データ整形) > tos.exe -t ngram -i kokoro-cab.txt > kokoro-ngram.txt > tos.exe -t dep -i kokoro-cab.txt > kokoro-dep.txt > tos.exe -t dep2 -i kokoro-cab.txt > kokoro-dep2.txt > tos.exe -t ngram -i rashomon-cab.txt > rashomon-ngram.txt > tos.exe -t dep -i rashomon-cab.txt > rashomon-dep.txt > tos.exe -t dep2 -i rashomon-cab.txt > rashomon-dep2.txt > tos.exe -t ngram -i hana-cab.txt > hana-ngram.txt > tos.exe -t dep -i hana-cab.txt > hana-dep.txt > tos.exe -t dep2 -i hana-cab.txt > hana-dep2.txt
4.1. freqt を用いた木構造マイニング freqt のオプション: -m [数値]: 枚挙する部分木の最小頻度 -L [数値]: 枚挙する部分木の最大ノード数 その他のオプションは以下のページを参照 http://chasen.org/~taku/software/freqt/
4.2. 頻出部分木を用いた文分類 各文にラベルが付与されているとしてそれを当てる 教師あり学習問題として解く ラベルとして考えられるもの: {意見,叙述,断定} 著者 台詞と地の文 教師あり学習問題として解く 訓練データ(ラベルつきデータ)がありそこから学習 テストデータ(ラベルなしデータ)に対してラベルを付与
4.2. 頻出部分木を用いた文分類 今回行う文分類 与えられた文が「台詞」か「地の文」かを判定する 正解ラベル付与 「台詞」か「地の文」かの正解ラベルを付与する +1 台詞 -1 地の文 と定義する
4.2. 頻出部分木を用いた文分類 今回行う文分類 与えられた文が「台詞」か「地の文」かを判定する 正解ラベル付与 「台詞」か「地の文」かの正解ラベルを付与する +1 台詞 -1 地の文 と定義する 正解ラベルは以下にある (配られたフォルダ)\text\sanshiro-label.txt (配られたフォルダ)\text\kokoro-label.txt
4.2. 頻出部分木を用いた文分類 データ整形 「南瓜」の出力に正解ラベルを付与する > (配られたフォルダ)\prog\addlabel.exe -c sanshiro-cab.txt -l (配られたフォルダ)\text\sanshiro-label.txt > sanshiro-cab-label.txt > (配られたフォルダ)\prog\addlabel.exe -c kokoro-cab.txt -l (配られたフォルダ)\text\kokoro-label.txt > kokoro-cab-label.txt
4.2. 頻出部分木を用いた文分類 データ整形: S式に変換する 注意:tos.exe に -l オプションをつける(ラベルつき) > tos.exe -t ngram -i sanshiro-cab-label.txt -l > sanshiro-bact-ngram.txt > tos.exe -t dep -i sanshiro-cab-label -l > sanshiro-bact-dep.txt > tos.exe -t dep2 -i sanshiro-cab-label -l > sanshiro-bact-dep2.txt > tos.exe -t ngram -i kokoro-cab-label.txt -l > kokoro-bact-ngram.txt > tos.exe -t dep -i kokoro-cab-label -l > kokoro-bact-dep.txt > tos.exe -t dep2 -i kokoro-cab-label -l > kokoro-bact-dep2.txt
4.2. 頻出部分木を用いた文分類 データ整形: S式に変換する 注意:tos.exe に -l オプションをつける(ラベルつき)
4.2. 頻出部分木を用いた文分類 訓練する とまらないときは > bact_learn.exe sanshiro-bact-ngram.txt sanshiro-ngram.model とまらないときは > bact_learn.exe -T 1000 sanshiro-bact-ngram.txt sanshiro-ngram.model
4.2. 頻出部分木を用いた文分類 モデルのコンパイル > bact_mkmodel.exe -i sanshiro-ngram.model -o sanshiro-ngram.model.bin -O オプションをつけるとモデルファイルを見やすくする > bact_mkmodel.exe -i sanshiro-ngram.model -o sanshiro-ngram.model.bin -O sanshiro-ngram.model.O
> bact_classify.exe kokoro-bact-ngram.txt sanshiro-ngram.model.bin 4.2. 頻出部分木を用いた文分類 解析してみる (「三四郎」で作ったモデルを「こころ」でテスト) > bact_classify.exe kokoro-bact-ngram.txt sanshiro-ngram.model.bin
> bact_classify.exe kokoro-bact-ngram.txt sanshiro-ngram.model.bin 4.2. 頻出部分木を用いた文分類 解析してみる (「三四郎」で作ったモデルを「こころ」でテスト) > bact_classify.exe kokoro-bact-ngram.txt sanshiro-ngram.model.bin
4.2. 頻出部分木を用いた文分類 解析してみる (「三四郎」で作ったモデルを「こころ」でテスト) -v2 オプションをつける > bact_classify.exe -v2 kokoro-bact-ngram.txt sanshiro-ngram.model.bin > kokoro-ngram-result.txt
4.2. 頻出部分木を用いた文分類 正解ラベル 解析器の出力(符号が一致していれば正解)
4.2. 頻出部分木を用いた文分類 モデルファイルを見てみる > notepad sanshiro-ngram.model.O
4.2. 頻出部分木を用いた文分類 モデルファイルを見てみる > notepad sanshiro-ngram.model .O 「ぼく」があると 正例「台詞」っぽい
4.2. 頻出部分木を用いた文分類 モデルファイルを見てみる > notepad sanshiro-ngram.model .O 「た。」があると 負例「地の文」っぽい
4.2. 頻出部分木を用いた文分類 他のタイプの木構造でもやってみる 「こころ」でモデルを作って「三四郎」でテストしてみる dep dep2 「こころ」でモデルを作って「三四郎」でテストしてみる 芥川龍之介作品「羅生門」「鼻」でもやってみる
4.2. 頻出部分木を用いた文分類 自分でラベルを作成する場合の注意点 ラベルファイルを自分で作成する必要がある ラベルが n 個 ある場合 (n>2) Bact は二値分類器なので複数のモデルを作成する必要がある One-vs-others 「あるラベル vs その他」のモデルを n 個作る Pairwise 任意のラベルの組み合わせについてモデルを作る (モデルを nC2個作る)
概要 インストール 「茶筌」の使い方 「南瓜」の使い方 演習 「茶筌」のインストール 「南瓜」のインストール 環境設定 実際に使ってみる カスタマイズ 「南瓜」の使い方 演習 freqt を用いた木構造マイニング 頻出部分木を用いた文分類