2005年スプリングセミナー 自然言語処理

「茶筌」/「南瓜」を用いた
形態素解析・係り受け解析
浅原正幸(あさはら まさゆき)
工藤拓(くどう たく)
松本裕治(まつもと ゆうじ)
概要
1.
インストール
1.
2.
3.
2.
「茶筌」の使い方
1.
2.
3.
4.
「茶筌」のインストール
「南瓜」のインストール
環境設定
実際に使ってみる
カスタマイズ
「南瓜」の使い方
演習
1.
2.
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から来た人はここから戻る]
概要
1.
インストール
1.
2.
3.
2.
「茶筌」の使い方
1.
2.
3.
4.
「茶筌」のインストール
「南瓜」のインストール
環境設定
実際に使ってみる
カスタマイズ
「南瓜」の使い方
演習
1.
2.
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. カスタマイズ
•
辞書のメンテナンス
「茶筌」辞書に登録されていない語を追加する
手順
1. 最新の辞書パッケージを展開する
2. ユーザー辞書を作成する
3. 辞書の再コンパイルを行う
4. chasenrc の変更
2.2. カスタマイズ
•
辞書のメンテナンス
1. 最新の辞書パッケージを展開する
arch\ipadic-sjis-2.7.0.zip
を展開する
C:\Program Files\ChaSen\dic と入れ換える
• 古い \dic を \dic2 としておくとよいでしょう
• 展開されたフォルダを \Program Files\ChaSen 以
下に移動してフォルダ名を \dic に変更
2.2. カスタマイズ
•
辞書のメンテナンス
2. ユーザー辞書を作成する
メモ帳などで新規ファイル User.dic を作成する
#ファイル名は拡張子が .dic であれば何でもよ
い
2.2. カスタマイズ
•
辞書のメンテナンス
2. ユーザー辞書を作成する
(サンプルファイルが text\User.dic にあります)
活用語でない場合
(品詞 (名詞 一般)) ((見出し語 (ピラティス4000)) (読み ピラティス) (発音 ピラティス) )
活用語の場合
(品詞 (動詞 自立)) ((見出し語 (あだける 4000)) (読み アダケル) (発音 アダケル) (活用型 一段) )
※
ピラティス:リハビリ用エクササイズの一種
あだける:播州弁で「おっこちる」
2.2. カスタマイズ
•
辞書のメンテナンス
3. 辞書の再コンパイル
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”)
2.2. カスタマイズ
•
辞書のメンテナンス
試しに解析してみる
> chasen (配ったフォルダ)\text\adakeru.txt
概要
1.
インストール
1.
2.
3.
2.
「茶筌」の使い方
1.
2.
3.
4.
「茶筌」のインストール
「南瓜」のインストール
環境設定
実際に使ってみる
カスタマイズ
「南瓜」の使い方
演習
1.
2.
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分休憩
概要
1.
インストール
1.
2.
3.
2.
「茶筌」の使い方
1.
2.
3.
4.
「茶筌」のインストール
「南瓜」のインストール
環境設定
実際に使ってみる
カスタマイズ
「南瓜」の使い方
演習
1.
2.
freqt を用いた木構造マイニング
頻出部分木を用いた文分類
4.1. freqt を用いた木構造マイニング
木構造マイニング
係り受け解析結果を木構造の集合(森)と考える
この中で頻出する部分木構造を取り出す
あるテキスト・著者・グループ・分野に特有の言語表現
がとりだせる
文分類をするための手ががりを得ることができる
4.1. freqt を用いた木構造マイニング
データ整形:
「南瓜」の出力を S 式(木構造を括弧の入れ子で表現する形式)へと変換
3種類(ngram,dep,dep2)定義
例文:「部屋が急に明るくなった。」
ngram:
(~BOS(部屋(が(急(に(明るい(なる(た(。(~EOS)))))))))
dep:
(~EOS(。(た(なる(明るい(に(急))(が(部屋(~BOS))))))))
dep2:
(~EOS(。(た(なる(明るい)(に(急))(が(部屋(~BOS)))))))
4.1. freqt を用いた木構造マイニング
例文:「部屋が急に明るくなった。」
ngram:
(~BOS(部屋(が(急(に(明るい(なる(た(。(~EOS)))))))))
EOS
。
た
なる
明るい
に
急
が
部屋
BOS
Ngram
単純な線形結合
4.1. freqt を用いた木構造マイニング
例文:「部屋が急に明るくなった。」
dep:
(~EOS(。(た(なる(明るい(に(急))(が(部屋(~BOS))))))))
急
BOS
部屋
に
が
明るい
なる
た
。
EOS
dep:係り受け構造
•文節内は線形結合
•係り元の最右単語は係り先の最左単語に連結
4.1. freqt を用いた木構造マイニング
例文:「部屋が急に明るくなった。」
dep2:
(~EOS(。(た(なる(明るい)(に(急))(が(部屋(~BOS)))))))
BOS
急
部屋
に
明るい
が
なる
た
。
EOS
dep2:係り受け構造
•文節内は線形結合
•係り元の最右単語は係り先の主辞に連結
4.1. freqt を用いた木構造マイニング
データ整形
「南瓜」の出力を S 式へと変換する
> (配ったフォルダ)\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 を実際に動かしてみる
> 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 [数値]: 枚挙する部分木の最小頻度
-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 sanshirocab.txt -l (配られたフォルダ)\text\sanshiro-label.txt
> sanshiro-cab-label.txt
> (配られたフォルダ)\prog\addlabel.exe -c kokorocab.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 sanshirongram.model
とまらないときは
> bact_learn.exe -T 1000 sanshiro-bact-ngram.txt sanshirongram.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 sanshirongram.model.O
4.2. 頻出部分木を用いた文分類
解析してみる
(「三四郎」で作ったモデルを「こころ」でテスト)
> bact_classify.exe kokoro-bact-ngram.txt sanshirongram.model.bin
4.2. 頻出部分木を用いた文分類
解析してみる
(「三四郎」で作ったモデルを「こころ」でテスト)
> bact_classify.exe kokoro-bact-ngram.txt sanshirongram.model.bin
4.2. 頻出部分木を用いた文分類
解析してみる
(「三四郎」で作ったモデルを「こころ」でテスト)
-v2 オプションをつける
> bact_classify.exe -v2 kokoro-bact-ngram.txt
sanshiro-ngram.model.bin > kokoro-ngramresult.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
•
「こころ」でモデルを作って「三四郎」でテストしてみる
•
芥川龍之介作品「羅生門」「鼻」でもやってみる
概要
1.
インストール
1.
2.
3.
2.
「茶筌」の使い方
1.
2.
3.
4.
「茶筌」のインストール
「南瓜」のインストール
環境設定
実際に使ってみる
カスタマイズ
「南瓜」の使い方
演習
1.
2.
freqt を用いた木構造マイニング
頻出部分木を用いた文分類