Mconc: Morphological Concordancer

本ソフトウェアは無保証です。ライセンスを確認の上、自己責任で使用してください。このドキュメントは書きかけです。以下の仕様は今後変更する可能性があります。


1. はじめに

Mconc はコーパスを扱う言語学の研究者のために作られたプログラムです。コーパスと構文パターンを与えると、形態素解析器 MeCab を用いて日本語テキストを形態素解析し、指定したコロケーション・パターンを含んだセンテンスのみを CSV 形式で出力します。その際、パターンに表層形と品詞情報の両方を用いることができます。記述には YAML と正規表現を用います。

Mconc はプログラミング言語 Ruby で作成されており、wxRuby ライブラリによる Windows 用 GUI インタフェイスを備えています。出力される CSV ファイルは単なるテキストデータなので Excel をはじめ様々なアプリケーションから利用することができます。

スクリーンショット:結果画面

Mconc は MIT ライセンスのもとで自由に利用が可能です。

2. ダウンロード

zip または tar.gz 形式のファイルを以下のサイトから取得してください。

RubyForge: Mconc http://rubyforge.org/projects/mconc/

3. Mconc のインストールと実行方法

当初、Mconc (Ver 0.1.0) は Linux 上のコマンドライン・プログラムでした。しかし現在では基本的に Windows 上の GUI プログラム として開発されています。インストールと実行の手順は以下の通りです。なお、動作確認は Windows XP Professional で行っています。

  1. オープンソース形態素解析エンジンMeCab をインストールする(詳しくは次のセクションをご覧ください)。

  2. Mconcの圧縮ファイル mconc-x.x.x.zip をダウンロードし適当な場所に展開する。

Mconc はプログラミング言語 Ruby によって作成されていますが、利用するために Ruby をインストールする必要はありません。mconc.exe は Ruby スクリプトを Exerb を用いて Windows 用実行形式に変換したもので、Ruby の実行環境が内部に含まれています(ファイルサイズがやや大きいのはそのためです)。

Windows GUI 版のインタフェイスは wxRuby を用いて作成しています。Ruby スクリプトとして実行する際の起動ファイルは mconc/bin/mconc_gui.rb となります。なお(mconc.exe を用いずに)Ruby から実行する際には wxRuby をインストールしておく必要があります。

4. MeCab のインストールについて

Mconc を使用するには工藤拓さんによって開発されているオープンソースの形態素解析器 MeCab をインストールする必要があります。 公式サイト で、Windows 用のバイナリパッケージが用意されています。mecab-win-32 の最新版を ダウンロードしてください(本稿執筆時の最新版ファイルは mecab-0.96.exe です)。

Windows 版の MeCab にはコンパイル済みの IPA 辞書が含まれており、別途ダウンロードする必要なく自動でインストールされます。その際、辞書データの文字コードは Shift-JIS となります。

5. 基本的な使用方法

Mconc を実行するには、 mconc/bin ディレクトリ内の実行ファイル mconc.exe をダブルクリックしてください。その後、以下の設定を行ってください。一度行った設定は 設定ファイルに書き出して再利用できます。

5.1. 入出力ファイルの設定

  1. 「設定1」タブを選択します。

  2. 「入力ディレクトリ」に入力ファイルが存在するディレクトリを指定します。

  3. 「入力ファイル」 に利用可能なテキストファイル( .txt 拡張子)の一覧が表示されるので対象ファイルを選択します(複数選択可能)。

    「入力ファイル」には選択可能なテキストが半角英数字のソート順で表示され、処理もこの順番で行われます。ランダムな順番で処理を行いたい場合は「入力ファイルをシャッフル」 チェックボックスをオンにしてください。

  4. 「出力ディレクトリ」に出力ファイルの保存先ディレクトリを指定します。

  5. 「出力ファイル名」 に出力ファイルの名前を指定します(例えば mconc.csv )。

    「単一のファイルに出力」 チェックボックスがオンのとき、Mconc による分析の結果が指定した名前のファイルに書き出されます。これがオフのときには指定した「出力ファイル名」に関係なく、入力ファイル名の拡張子を .csv に代えた形で分析結果が個別に書き出されます。

5.2. 文字コードの設定

  1. 「設定2」タブを選択します。

  2. システム:Windows XP 環境では通常 Shift JIS を指定してください。

  3. MeCab辞書:Windows XP 環境では Shift JIS を指定してください。

  4. 入力ファイル:処理の対象となる入力ファイルの文字コードを指定します。

  5. 出力ファイル:出力される CSV ファイルの文字コードを指定します。Microsoft Excelで開くことが前提なら:Shift JIS の選択をお勧めします。

5.3. 出力オプションの設定

  1. 「設定2」タブを選択します。

  2. スキップする要素:主にテキスト内の注釈部分や会話部分を読み飛ばしたい際に使用します。

  3. センテンス番号を出力:オンにした場合、全入力ファイル中のすべてのセンテンスの中で何番目に位置するものかを示す番号が出力されます。

  4. 各センテンスの最初のマッチのみ検出:1つの文に複数のマッチが存在することがあります(Mconc は、日本語のテキストを自動で分割し、文のレベルで処理を行っていきます)。この項目をオンにすると、2つめ以降のマッチを無視し、次の文の処理に移ります。

  5. 各記事からランダムに選んだ1例を抽出:Mconc では、 [[]] に囲まれた行を「記事の見出し」と解釈します(入力ファイルに記事の概念がない場合、必須ではありません。) 。このオプションを選択すると、各記事の中で見つかったヒット文字列の中から1件のみをランダムにピックアップして出力します。結果データの数を抑えたい時や、記事テキストのサイズの違いを吸収したい時にお使いください。

  6. 記事の最初のマッチを無視:各記事中に現れた最初のヒット文字列を無視します。記事中にヒット文字列が1つしかないケースを排除したい際にお使いください。具体的には、「~については・・・を参照」といった定型文だけから成る記事が大量にあるときなどが考えられます。

5.4. MeCab ライブラリ・ファイルの指定

  1. 「設定4」タブを選択します。

  2. libmecab.dll のボックスに MeCab のダイナミックリンクライブラリ (dll) の場所を 指定します。mecab-win-32 パッケージを標準的な手順でインストールしたならば、おそらく次のようなディレクトリに存在しているはずです。

    C:\Program Files\MeCab\bin\libmecab.dll

5.5. 抽出条件の指定

  1. 「設定3」タブを選択します。

  2. 「出力する形態素情報」では、出力ファイルに含める形態素の品詞データを設定します。設定可能な項目は「表層形」「品詞」「細分類1」「細分類2」「細分類3」「活用1」「活用2」「原形」「読み」「発音」です。

  3. 「検索条件入力」に抽出条件を記述します。記法の詳細については次のセクション「抽出条件の書き方」を参照してください。「MeCab ヘルパー」を使って、実際の例文を MeCab に解析させた結果を参考にしながら抽出条件を作ることができます。

5.6. 設定ファイルの保存と読み込み

  1. 「設定4」タブを選択します。

  2. 「設定ファイル」に各種情報を保存することができます。「保存」ボタンをクリックし、保存先とファイル名を指定します。

  3. 設定ファイルからデータを読み出す際には、「参照」ボタンを使ってファイルの場所を指定した後、「読込」ボタンをクリックします。成功すると、下のメッセージボックスに「設定ファイルが正しく読み込まれました。」と表示されます。

5.7. 処理の実行

すべての条件が整うと、ウィンドウ下部のボックスに「スタートボタンで処理を開始します」というメッセージが出ます。あとはスタートボタンをクリックするだけです。

6. 抽出条件の書き方

6.1. 概要

Mconc では抽出条件を正規表現 (Regular Expressions) と呼ばれる表記法を用いて記述する必要があります。抽出したいコロケーションを構成する形態素の1つ1つに対して正規表現を指定することで、GREPなどでは不可能な非常にきめ細かい検索・抽出が可能になります。

抽出条件は全体として YAML 形式になっている必要があります(ここで YAML とは何かということはそれほど重要でありません)。具体的には各形態素に次のような4つの項目があり、これらを組み合わせたブロックを必要なだけ列記していくという形になります。

- feature
  feature-not
  surface
  surface-not

組み合わせの方法・順番・項目数は自由ですが、必ず最初の項目の前にはハイフン1個とスペースを1個、その他の項目の前にはスペースを2個付ける必要があります。feature ではマッチすべき形態素情報の指定を行い、feature-not では逆にマッチしてはいけない形態素情報を指定します。同様に surface および surface-not では表層形に関する情報の指定を行います。このような条件セットを複数並べて記述することで、入力テキストに含まれる特定のコロケーションを抽出することができます。

6.2. 具体的な例

ここまでの説明だけでは分かりにくいと思うので、ここからは具体的な例を用いていきます。

「走った時」のように 「~した(動詞)時」あるいは「~した(動詞)とき」というコロケーション・パターンの抽出を考えてみましょう。「走った時」「留学した時」「選んだとき」といった文字列をすべて取得できることが期待されます。

一案として、次のような条件式が可能です。

(1) -
(2) - feature: /^動詞/
(3) - feature: /^助動詞/
(4)   surface: /^(た|だ)$/
(5) - surface: /^(時|とき)$/

(1) については後述することにして、(2) から説明していくことにします。(2) が - で始まっているのは、これが形態素ブロックの最初であることを表しています。その後 feature: /^動詞/ と続きますが、これは MeCab が動詞としてみなした形態素にマッチすることを意味します(すなわち「走る」「する」「選ぶ」などです)。正規表現は / でくくられることになっており、 ^ は行頭を意味します。MeCab の出力で品詞名が行頭に来るのでこのような指定になります。

次に (3) で後続する形態素の条件が示されます。feature は基本的に (2) と同じ形で、ここでは助動詞が指定されています。しかしその次の (4)では surface: /^(た|だ)$/ という1行が続いています。これは当該の形態素が助動詞であるだけではなく、表層において「た」あるいは「だ」という形式を持っていることを指定しています。正規表現で (x|y) と書くと「x または y」という意味になります。また、 $ は行末を意味します。ここでは (た|だ)^$ に囲まれていますから、厳密に「た」または「だ」にマッチする必要があるということになります。したがって同じく「だ」から始まる助動詞でも「だろう」などはマッチしません。

(4) では - が付けられていない代わりに3とインデントを合わせた形になっていることに注意してください。これは (3) と (4) が同じ形態素ブロックに属する条件項目であることを意味します。

(5) の前には - が付けられていますので、また新たな形態素ブロックの始まりであることがわかります。ここでの記述は (4) と同様です。 feature 行を付けてもいいのですが、「時」や「とき」といった表層形を持つ形態素は名詞以外ではほとんどあり得ないので意味がないでしょう。

さて、このように (2)-(5) だけでも用を足すことはできるのですが、これだけでは「留学したとき」のような例において、助動詞「た」に接続する動詞として「留学する」というサ変動詞全体ではなく「する」のみがピックアップされます。その場合でも、オリジナル・センテンスは出力されるので、さほど問題はないかもしれませんが、MeCab の出力する詳細な形態素データが得られないことになります。そこで形態素ブロックとして

-

を単体で使用すると、この部分にマッチする「あらゆる形態素」を出力に含めてくれます。

6.3. MeCab ヘルパーについて

以上のような抽出条件式を作成することは、正規表現に慣れさえすればさほど大変なことではありません。正規表現についてはいくつか専門の書籍も出ていますし、ウェブ上に多くの情報があります。それらを参考に試行錯誤していれば、基本はすぐに身につくと思います(極めようとするとそれは非常に大変ですが・・・)。

とはいえ、YAML 形式の条件式を毎回いちから作成するのは大変ですので、Mconc にはこれをサポートする機能を付け加えています。「設定3」のタブ上で「ヘルパー起動」ボタンをクリックすると「MeCab ヘルパー」のウィンドウが現れます。MeCab ヘルパーを用いると、実際の文を MeCab に解析させた結果をもとにした抽出条件式のテンプレートを得ることができます。

6.4. 実験

さて、先ほどの条件式が実際に使えるかどうかを試してみましょう。ここでは Wikipedia 日本語版の2007年10月13日のデータベースダンプから取得・抽出した10MB程のテキストデータを入力データとして用います。

実行の結果、Mconc はテキスト中に含まれていた72328文を調査し、328件の該当文字列とその詳細な形態素情報を出力しました。CSV データをExcelで表示させると下のようになります。

これではよく分からないので、少し拡大します。

結果データにはオリジナルの文も含まれています。

7. 最後に

抽出条件式を書くのは少し面倒ですが、上手く使えば Mconc は言語学の研究にとって大きな助けになってくれると思います。計量的な研究のための基礎データ作りのほか、特定の構文形式を持った例文探しにも役立ちます。

Mconc についての質問などがありましたら下記までお知らせください。作者の時間と能力の許す限りでお答えしたいと思います。(新たな機能の追加などは少し難しい状況です・・・。)

8. 連絡先

Author: 長谷部 陽一郎 (同志社大学言語文化教育研究センター)

Web: http://www.yohasebe.com

Email: yohasebe@gmail.com

9. ライセンス

このソフトウェアは MIT License によって配布されています。

10. 参考文献

以下の文書(研究ノート)で、Mconc 開発の目的や方針などについて述べています。

$Id: README 41 2007-11-13 14:58:40Z yohasebe $