[連載]フリーソフトによるデータ解析・マイニング第58回

統計的テキスト解析(3)〜形態素と構文解析〜

 テキストの計量分析は、研究の視点によって用いる単位が異なる。音韻の視点で計量を行う場合は、音素(Phoneme)、音節(Syllable)などになり、語彙、意味、文体の視点で計量を行う場合は、語(Word)、句 (Phrase)、文(Sentence)、段落(Paragraph)などになる。テキストを計量的に分析するためには、まず何を単位に計量するかを決める必要がある。 日本語や中国語のような言語は、英語や韓国語のようにテキストが単語や句に分かれず、句読点によって区切られているだけである。したがって、語、文節などを計量するためには、テキストを語や文節などを単位として分割(分かち書き)し、関連の情報を付与しておくことが必要である。

1. 形態素解析

 日本語においては、意味情報を抽出ためには文字単位より、単語、文節を単位にした方がよいのは周知のことである。
 単語について、広辞苑では「文法上の意味・職能を有する、言語の最小単位。文の成分となる。例えば『花が咲く』という文における『花』『が』『咲く』など。」と説明されている。
 しかし、言語学においては、学説によって単語に対する解釈が異なる。例えば、自立語(単独で文節を構成できる語)と付属語(助詞、助動詞の類)をそれぞれ語として認めるか認めないかによって、語に関する定義が異なる。機械的に文を語に分解するときには、自立語と付属語をそれぞれ語として認めるのが一般的である。
 通常、意味を持つ最小の文字列の単位を形態素(Morpheme)といい、文を単語ごとに分割し、品詞情報などを付け加える作業を形態素解析(Morphological Analysis)という。
 形態素解析システムは、自然言語の文法知識や辞書に基づいて、文を形態素に分割し、それぞれの品詞情報などを機械的に付与する。比較的に精度が良い形態素解析のフリーソフトがいくつか公開されている。広く知られているのは「JUMAN」、「茶筌(ChaSen)」、「MeCab」、「KAKASI」などである。本稿では、JUMAN、茶筌(ChaSen)、Mecabについて簡潔に紹介する。

1.1 JUMAN

 形態素解析システムJUMANは、元京都大学総長、長尾真氏の研究室を中心に、多くの研究機関の協力により開発され、1992年に公開された。現時点では、同大学の黒橋禎夫氏の研究室で改良が続いている。最新バージョンは、次のサイトからダウンロードできる。
 http://nlp.kuee.kyoto-u.ac.jp/nl-resource/top.html
 インストールなどに関しては、ソフトに同梱されているマニュアルに説明されている。
 JUMANの使用例を示すため、例文「テキストについて計量分析を行う。」をテキストエディタに入力し、exMP.txtというファイル名でC:\tempの中に保存したとする。また、コマンドプロンプトが作業フォルダにアクセスしたとする。コマンドプロンプト上で次のようにコマンドを入力し、

juman < exMP.txt

[Enter]キーを押すと、解析結果が画面上に返される。その画面コピーを図1の上の部分に示す。

JUMANの使用例

図1 JUMANを用いた例

 返された結果は、形態素、読み、原型、品詞、品詞の細分類などの順に横に並べられている。出力形式のオプションfを次のコマンドのように用いると、

juman -f < exMP.txt

形態素解析結果の項目を揃えた図1の下の部分のような結果を返す。さらに、コマンド

juman -f < exMP.txt >exMPr.txt

 を実行すると、形態素解析の結果がファイルexMPr.txtとして保存される。

1.2 茶筌(ChaSen)

 茶筌は、奈良先端科学技術大学院大学の松本裕治氏の研究室で開発され、1997年に公開された。茶筌は松本裕治氏の研究室のサイトhttp://cl.aist-nara.ac.jp/の「自然言語処理ツール」のリンクからダウンロードすることができ、マニュアルも同梱されている。
 茶筌を実行するコマンドはchasenであり、書式はJUMANに似ている。ここでもJUMANの説明に用いたファイルexMP.txtを用いる。茶筌を実行するコマンドの例を次に示し、その出力画面コピーを図2の上の部分に示す。

>chasen exMP.txt


茶筌を用いた例

図2 茶筌を用いた例

 出力結果の第1列は、形態素(表層語)、第2列は読み方(発音)、第3列は形態素の基本形、第4列は品詞情報、第5列は活用情報である。
 出力の形式と出力項目は、オプションを用いて指定することができる。例えば、スペースで単語を区切る分かち書きの形式で出力したいときには次のように記述する。その結果の画面コピーを図2の中間部分に示す。

>chasen -F"%m " exMP.txt

 オプションの中の%mの右に半角のスペースがあることに注意してほしい。オプションの詳細に関しては、マニュアルに説明されている。
 出力形式のオプションを-F"%m\t%P-\n"にすると、図2の下の部分のような形式で返す。その結果をファイルとして保存する場合は、次のように記述する。

>chasen -F"%m\t%P-\n" exMP.txt>exMPcha.txt

 茶筌の入門に関する演習資料が次のサイトにある。
 http://chasen.naist.jp/chaki/t/2007-09-04/doc/enshu-slide.pdf
 茶筌のオプションの設定や操作を簡便にしたツールとして、WinChaがある。WinChaは茶筌に同梱されている。WinChaの作業画面コピーを図3に示す。

WinChaの作業画面

図3 WinChaの作業画面

は、辞書とコーパスに依存しない汎用的な設計とChaSen、JUMANより高速である。MeCabおよび関連情報は、次のサイトから入手できる。
 http://mecab.sourceforge.net/
 MeCabのコマンドの書式は、基本的にはChaSenと同じであるが、出力形式およびオプションの表記は異なる。
 MeCabの出力項目は次の順になっている。\tはタブを意味する。

 表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音

 前例のJUMANやChaSen同じ例文を用いたMeCabの実行例とコマンドプロンプトの画面コピーを図4に示す。

MeCabを用いた使用例

図4 MeCabを用いた使用例

 MeCabは、ChaSenの出力フォーマットで出力することも可能である。
 形態素解析の結果は、用いるソフトによって異なる場合がある。
 その例として、例文「私にとっては非常に重要である。」をJUMAN、ChaSenで解析した結果をそれぞれ表1、表2に示す。

表1 JUMANの結果
普通名詞
格助詞
とって 動詞 子音動詞ラ行 タ系連用テ形
副助詞
非常に 形容詞 ナ形容詞 ダ列基本連用
重要である 形容詞 ナ形容詞 デアル列基本
句点

表2 茶筌の結果
名詞-代名詞-一般
にとって 助詞-格助詞-連語
助詞-係助詞
非常 名詞-形容動詞語幹
助詞-副詞化
重要 名詞-形容動詞語幹
助動詞 特殊・ダ 連用形
ある 助動詞 五段・ラ行アル 基本形
記号-句点

 表1、2から分かるように、JUMANでは、「にとって」を「に(格助詞)」「とって(動詞)」に分解しているのに対し、茶筌では「にとって」を1つの形態素(助詞)としている。また、「重要である」に関しては、JUMANでは1つの形態素「重要である(形容詞)」と解析しているのに対し、茶筌では「重要(名詞)」「で(助動詞)」「ある(助動詞)」のように3つの形態素に、分解している。
 これは、形態素システムに用いた文法ルールや辞書が異なるからである。また、例文「朝はきりさめであった。」を、JUMANでは「きりさめ」は1つの形態素(普通名詞)として解析するが、茶筌は「きり(動詞)」「さめ(動詞)」、MeCabは「きり(動詞)」「さ(名詞)」「め(名詞)」に分解する(表3〜5)。

表3 JUMANの結果
時相名詞
副助詞
きりさめ 普通名詞
であった 判定詞 判定詞 デアル列タ形
句点

表4 茶筌の結果
名詞-副詞可能
助詞-係助詞
きり 動詞-自立 五段・ラ行 連用形
さめ 動詞-自立 一段 連用形
助動詞 特殊・ダ 連用形
あっ 助動詞 五段・ラ行アル 連用タ接続
助動詞 特殊・タ 基本形
記号-句点

表5 MeCabの結果
名詞、 副詞可能…
助詞、 係助詞…
きり 動詞、 自立…
名詞、 接尾、特殊…
名詞、 接尾、一般…
助動詞…
あっ 助動詞…
助動詞…
記号、句点…

 このような異なり、あるいは誤りは、辞書や文法ルールの登録などで改善させることができる。
 以上のことから、形態素解析ソフトの結果を用いてテキストを解析する際には、何らかの学説や理論に基づいて解析結果についてのチェックを行い、訂正などを行うことが必要である。
 また、日本文を形態素解析するフリーソフトとしては、(株)富士通研究所から開発・公開された「Breakfast」、京都大学の佐藤雅彦氏が開発した「KAKASI」、NTTコミュニケーション科学基礎研究所が開発した「すもも」などがある。
 工藤拓氏は2008年2月に、わずか25kバイトのソースコードで、日本語の新聞記事で95%程度(文字単位)の精度で分かち書きすることが可能なソフトを公開している。

2.構文解析

 構文解析(Syntactic Analysis)とは、文法規則によって、文の構造を句・文節を単位として解析することである。
 句とは、2つ以上の語が集まって1つの品詞と同じような働きをしながら、文を構成する語の塊のことである。
 名詞の役割を果たす句を名詞句(NP)、動詞の役割を果たす句を動詞句(VP)とするように、形容詞句(ADJP)、副詞句(ADVP)などがある。
 英語では、句構造で構文解析を行うが、日本語の場合は、文節を単位に係り受け関係を用いて構文を解析するのが一般的である。
 文節とは、日本語を意味の分かる単位で区切ったものであり、国語学者橋本進吉の文法学説用語によると、文を読む際に、自然な発音によって区切られる最小の単位である。日本語においては、文における任意の1つの文節は、少なくともその文節の後の1つの文節と係り受け関係を持つ特徴がある。
 例文「太郎と花子は一緒に学校に行った。」を文節に分割し、係り受け関係を矢印で示したものを図5に示す。

係り受け関係を矢印で示したもの

図5 文節の係り受け関係

 係り受け関係を解析するフリーソフトとしては、JUMANをベースとした「KNP」、茶筌をベースとした「南瓜(CaboCha)」がある。文節の切り分けの精度は非常に高いが、係り受け関係の精度は80%〜90%であるのが現状である。

2.1 JUMAN/KNP

 KNPは、京都大学のJUMANをベースとした係り受け関係による構文解析器であり、1993年に公開された。現時点では、次のサイトからダウンロードできる。
 http://nlp.kuee.kyoto-u.ac.jp/nl-resource/top.html
 JUMANとKNPがインストールされている環境上で、文節の係り受け関係を解析するコマンドと返す結果を次に示す。

>juman|knp
太郎は花子と一緒に学校に行った。
# S-ID:1 KNP:2008/03/10

文節の係り受け関係の解析結果

 このような係り受け関係の結果を構文木とも呼ぶ。構文木は、文の構造を視覚的に考察するのには非常に有益である。しかし、計量分析を行うのには向いていない。KNPの出力形式のオプション-tabを次のように用いると、係り受け関係に関するデータが返される。図6に出力画面の一部分のコピーを示す。

>juman|knp -tab


juman|knpの出力画面

図5 juman|knpの出力画面

 出力された結果には、品詞、文節の性質、係り受け先に関する多くの情報が含まれている。アステリスク(記号*)の右の数値とアルファベットは、係り受け先の文節の番号である。例えば、「* 4D」は、この文節は4番目の文節に係ることを意味する。文末は-1Dで示す。  KNPを用いたテキストファイルの構文解析は、まず、JUMANの形態素解析の結果をファイルに保存し、次に、KNPに形態素解析済みの結果ファイルを投入する。
 例文「太郎は花子と一緒に学校に行った。」のファイルがexMP2.txtである場合の、コマンド例を次に示す。

> juman exMPju2.txt
> knp -tab< exMPju2.txt>exKNP.txt

2.2 南瓜(CaboCha)

 南瓜(CaboCha)は、工藤拓氏と松本裕治氏により開発された。南瓜はサポートベクターマシン(Supprot Vector Machines)と呼ばれている機械学習の分類アルゴリズムに基づいた係り受け解析器である。南瓜は、次のサイトからダウンロードできる。
 http://chasen.org/~taku/
 KNPはJUMANを介して文節の係り受け解析を行うが、南瓜は単独で用いることができるように作成されている。
 前節と同じ文を用いた南瓜(コマンドはcabochaである)の実行例を次に示す。

>cabocha
太郎は花子と一緒に学校に行った。
南瓜の実行例

 デフォルトは、係り受け関係図を出力するように設定されている。出力形式のオプション -f1を用いると、図7のような結果が出力される。
 保存したテキストファイルを解析し、その結果をファイルとして保存するコマンドの例を次に示す。

> cabocha -f1< exMP2.txt > exCA.txt


南瓜の結果画面のコピー

図6 南瓜の結果画面のコピー

 形態素解析、文節の係り受け解析の結果を計量するためには、簡単なプログラム、あるいは何らかのツールを用いることが必要である。
 茶筌の結果を用いて計量を行うツールとしては、松本研究室で作成された「茶器(ChaKi)」、大阪大学の樋口耕一氏が作成した「KH_coder」などがある(http://khc.sourceforge.net/dl.html)。
 茶器は、松本研究室のメインページ(http://cl.aist-nara.ac.jp/)に張られているリンク「自然言語処理ツール」からダウンロードできる。茶器は、タグ付きコーパスを、データベースフリーソフトMySQLを用いて管理する。主な機能としては、コンコーダンス(KWIC)、検索(文字列、単語、係り受け構造)、コロケーション(Collocation)の抽出である。計量機能としては、単語の出現頻度、単語の共起頻度などを集計する機能がある。
 KH_coderは、茶筌とMySQLを用いる。主な機能は、文字列や語の抽出および出現頻度の統計、コロケーションの統計であり、統計量としては語・品詞の記述統計(出現度数、累積度数、それぞれのパーセント)、語の出現度数と文書数との関連の分布、語の重要度、クロス集計などである。