麗澤大学言語研究センター第1回ワークショップ「日本語コーパス研究のための『茶筌』入門」は2005年3月4日に無事終了しました。このページでは,ワークショップのディスカッション「形態素解析システム『茶筌』を日本語コーパス研究にどう利用するか」で使用したスクリプトその他を公開しています。
茶筌を使った用例検索,分析用のツールをPerlスクリプトで作成しています。ワークショップのディスカッションで紹介しました。
茶筌の標準的な解析結果を標準出力から読み込み,キーワードで検索し,EOSで区切られた文の単位で結果を出力するPerlスクリプト。Windows XPのコマンドプロンプト上で ActivePerl 5.8.6 を使い, chasen 2.3.3で解析したシフトJISテキストを用いて動作確認している。
使用法
利用方法
- メインオプション(
-s -w -W のいずれか)は必須
- 検索モードのオプションはメインオプションで
-w -W を指定した場合のみ必要
- 検索キーワードは複数個指定可能
- 検索したいデータは必ず標準入力 (<) から読み込む。入力データは茶筌の標準的な解析結果を想定している。
- 出力結果をファイルに保存したい場合には,標準出力 (>) として出力ファイル名を指定する。例:
perl searchChasen.pl -w -M "^から$_助詞" "^(へ|に|まで)$_助詞" < input.txt > output.txt (茶筌の解析結果であるファイル input.txt から助詞「から」と「へ,に,まで」のいずれかを含む文を output.txt に出力)
- 検索結果のリポートは標準出力として出力され,スクリプト名,バージョン,検索された文の数,検索作業をおこなった時間,使用したオプションが記録される。
perldoc [パス]searchCasen.pl で Pod (plain old documentation) スタイルのヘルプを読むことができる (途中で perldoc を終了する場合は q キーを押す)。
メインオプション:オプションがない場合も-?と同様に使用法が表示される
-s = 茶筌の解析結果から文章を再構築して検索。形態素の区切りは入らない
-w = 指定したパターンを正規表現として検索
-W = 完全一致するパターンのみを検索。正規表現は使えない。
-? = 使用法の表示 ($instructionを表示する)
検索モード:
-m = 出現形を単語として検索
-y = 読み (カタカナ) を検索
-M = 辞書形を単語として検索
検索キーワードの書き方:
- Windows のコマンドプロンプトなど,シェルによっては検索キーワードをダブルクオートで囲まなくともOK。
- キーワードの後に半角アンダーバー _ に続けて品詞の情報を指定できる。例:
perl searchChasen.pl -w -M "いる_動詞-非自立" < ... (非自立形の動詞「いる」の各種変化形を検索する)
- -w を指定している場合は部分文字列もマッチするので,もし完全一致させたい場合には,正規表現を使う。例:
perl searchChasen.pl -w -m "^の$" < ... (「の」という出現形のみにマッチする)
-w または -W を指定している場合,品詞が指定できる。指定したパターンは品詞の解析列のいずれかにマッチすればよい。
-w を指定している場合は品詞にも正規表現が使える。
- 検索キーワードはいくつでも指定可能。
- 検索モードを変更する場合は,検索キーワードの前に再度モードを指定する。例:
perl searchChasen.pl -w -m "書い" -M "みる" < ... (「書いてみた」にもマッチする)
perl searchChasen.pl -w -m "書い" "みる" < ... (「書いてみる」などのみがマッチする)
TODO
- encodingで Shift JIS をうまく指定できていない...
use encoding の行はコメントアウトしてある。したがって,現バージョンではコントロール文字と同じコードが含まれる一部のマルチバイトの文字をうまく処理できない。
- 現在は文中に現れたキーワードを全てマークしているが,例えばキーワードをその順番でマークする,さらには特定の範囲内 (○語以内) に出現するキーワードをマークする,など応用が考えられる。
指定した検索パターンを含む茶筌の解析パターンを抽出し,頻度順に出力するPerlスクリプト。Windows XPのコマンドプロンプト上で ActivePerl 5.8.6 を使い, chasen 2.3.3で解析したシフトJISテキストを用いて動作確認している。
使用法
利用方法
メインオプション:オプションがない場合も-?と同様に使用法が表示される
-m = 出現形から検索
-y = 読み(カタカナ)を検索
-M = 辞書形を単語としてならべたものを検索
-? = 使用法の表示 ($instructionを表示する)
-mp, -yp, Mp = -m, -y, -M の各パターンで検索するが,結果の頻度の計算と表示の際に品詞情報は基本的なもの (品詞情報の最初の列) 以外を省略する
TODO
- encodingで Shift JIS をうまく指定できていない...
use encoding の行はコメントアウトしてある。したがって,現バージョンではコントロール文字と同じコードが含まれる一部のマルチバイトの文字をうまく処理できない。
本スクリプトをWindows上で利用する基本的な手順は以下の通り。
1. Perl の入手:以下はWindows上のPerlとして最も人気のある ActiveState の ActivePerl の導入方法。フリーウエアである。
ActivePerl:ActiveState が提供する Windows 版 Perl のインストールパッケージ ActivePerl のダウンロードはこちらから (Linux, Solaris版やプログラムソースも入手できます)。Windows XP 以前の Windows に導入する場合は システム条件 を確認しておくとよい。
- ページ左上にある「ダウンロード」ボタン (図参照) からダウンロード画面に移動する。(ダウンロード時のユーザ登録は必須ではない。「Next」ボタンでそのままダウンロード画面に進める。)
- MSI用のパッケージをダウンロードし,インストールする。
2. Chasen の入手とインストール:マニュアルを参照。chasen とコマンドを指定するだけでコマンドプロンプトから茶筌を起動できるようになります。
3. スクリプトの起動
- コマンドプロンプトを開く。[スタート]ボタンから[ファイル名を指定して実行]を選び,「
cmd」と入力してEnterキーを押す。
- コマンドa:で,Aドライブ (ディスケット) にカレントフォルダを移動する。Aというドライブ名が表示される。
C:\Documents and Settings\your ID> a:
A:\>
- スクリプトはAドライブの直下にあり,この状態ですぐにスクリプトを使える。サンプルのテキストファイルもAドライブの直下にあるので,スクリプトの起動は至ってシンプル。
A:\> perl searchChasen.pl -? (searchChasen.pl の使用法を表示)
A:\> perl pickChasen.pl -? (pickChasen.pl の使用法を表示)
A:\> perldoc searchChasen.pl (searchChasen.pl のドキュメントを表示。スペースでページ繰り,qキーで終了)
A:\> perldoc pickChasen.pl (pickChasen.pl のドキュメントを表示。スペースでページ繰り,qキーで終了)
A:\> perl searchChasen.pl -s "ている" < kokoro_joo.chasen.txt (searchChasen.pl で「ている」を含む文を文モードで検索)
A:\> perl pickChasen.pl -m "ている" < kokoro_joo.chasen.txt (pickChasen.pl で「ている」を含む文の解析フラグメントを検索)
- 出力結果をページごとに見たい場合には,コマンドの最後に
| more をおきます。スペースでページを繰ることができます。
- 別のドライブやフォルダにあるテキストデータを解析する場合には,「マイコンピュータ」などでファイルのあるフォルダを表示させ,上記のファイルの位置にドラッグ&ドロップしてファイルのパス名を指定することができる。
- 出力結果をファイルに書きだす場合には,> の後に出力ファイルの出力先を入力する。この場合も,「マイコンピュータ」でファイルを保存したいフォルダのアイコンを表示させ,フォルダのアイコンをドラッグ&ドロップしてパス名をコマンドプロンプト上に記述し,その直後にファイル名を記すと簡単である (フォルダ名とファイル名の間は \ (日本語環境では半角の円記号) で区切る。出力ファイルとして既に存在するファイル名を指定してしまうと上書きされてしまうので注意!)。
A:\> perl searchChasen.pl -w -M "いる_動詞-非自立" < C:\"Documents and Settings"\hoge\"My Documents"\chaseninput.txt > C:\"Documents and Settings"\hoge\"My Documents"\chasenoutput.txt (C:\Documents and Settings\hoge\My Documents というフォルダにある chaseninput.txt を読み込み,「いる」の動詞-非自立形の各変化形を含む文を検索し,結果を同じフォルダに chasenoutput.txt という名前で保存する。)
青空文庫に所蔵されている夏目漱石『こころ』について,以下のような編集をおこなったファイルと,そのファイルを茶筌 (バージョン 2.3.3 Windows版) で解析したファイル。
- 元ファイル:
kokoro_joo.txt
-
- 『こころ』の上,第1章から第20章までの抜粋
- ルビ (《》) 及びルビの始まり (|) を指定する記号を削除 (ただし,冒頭の凡例には残してあります)
- 読点 (。) の後に改行記号を挿入 (ただし,カギ括弧が直後に続く場合は改行をしていません)
- オリジナルテキスト末尾の著作権情報はそのまま残してあります。
- 茶筌解析済みファイル:
kokoro_joo.chasen.txt
-
- 上記ファイルを茶筌によって解析したファイル。出力形式は標準的なもの。コマンドプロンプトから以下のようにして作成。
A:\>chasen kokoro_joo.txt > kokoro_joo.chasen.txt
なお,茶筌は通常一行を一文と解釈して解析する。文が行をまたいでいる場合,また一行に複数の文が含まれる場合には,文の区切り (EOS = end of sentence) が間違って挿入されることがあります。chasen の起動時に -j オプションを使用することで,文の区切りを自動的に調整してくれます。-j オプションを指定して同じ『こころ』データを解析したファイルはこちらです: kokoro_joo.chasen-j.txt (行内にある複数文の切り分けができていない箇所があるようです。調査中。)
正規表現による検索置換機能があるエディタを使った青空文庫式のルビ削除の手順は以下の通りです。
| |
正規表現 |
結果 |
1. オリジナルのファイルを開く。 |
|
…広い寺の境内《けいだい》にある…
…同じ言葉を二|遍《へん》繰り返した。 |
2. ルビに当たる箇所 (《から》まで) を削除する。 |
(置換) 《[^》]+》→(何も入力しない) |
…広い寺の境内にある…
…同じ言葉を二|遍繰り返した。 |
3. ルビの付く文字列の始まりを特定する記号を削除する。 |
(置換) |→ (何も入力しない) |
…同じ言葉を二遍繰り返した。 |
4. 検索結果を保存する。 |
|
|
ただし,完全ではない場合がありますので,一部手動で検索置換が必要になることがあります。
Windows XP に ChaSen 2.3.3 をインストールし,コマンドプロンプトからすぐに実行できるようにするための手順。PDF 文書,283KB。作成:夷石寿賀子 (言語情報プロジェクト研究協力者)。このマニュアルは「茶筌」開発者による公式のマニュアルではありません。このマニュアルに関するお問い合わせは言語情報学プロジェクトまでお願いします。