目次
まず「形態素」、「構文」などといった用語は、ほとんどが現在の科学的な「言語学」という分野に帰するものであることを最初に知っておく必要がある。体系だった言語学は、おもにチョムスキー言語学の創始とともに始まった。
チョムスキーは 1960年代に、世界じゅうの数多くの言語には、実はそのすべてに共通する「普遍文法 (universal grammer)」がある、と言った。またチョムスキーはそのような文法を数学的な人工言語で厳密に表現する方法をも開発した。彼によれば、言語にはその理想化されたかたち (言語が言い間違われたり省略されたりしない場合) がある。そして理想化された状況下では、言語というものはみな決まりきった規則の適用からなる一種の「機械」によって生成された、出力結果であるというのである。このような普遍文法は現在「変形生成文法(transformational generative grammer)」と呼ばれる。例をみてみよう。以下にしめす文脈自由文法 :
このゲームはいつまでも続けることができる。上の例では次に展開する部分を下線で示したが、ひとつの NP はいくらでも展開できる。上の例ではわざと「彼女が書いた」の部分を先に展開したが、ここで「彼女が書いた試験」と読んだ人は少ないだろう。ここでは「試験に落ちた青年の着いた駅」がひとまとまりになっており、「彼女が書いた」は最後の「小説」にかかっている。つまりまんなかの名詞節 NP が入れ子になっている。このような「入れ子」や「繰り返し」の構造は、世界中のどの言語にもみられ、これこそがチョムスキーの発見した普遍文法であった。文脈自由文法は現在コンパイラなどの文法記述にも使われているが、もともとは自然言語の文法を記述するためにチョムスキーが考案した方法だったのである。
さて、言語はすべてこのような規則で記述できる、と仮定したとしよう。規則は言語に現れる記号 (文字とか、音とか) を操作し、それらは数学的に厳密に記述されたものになっている。「科学的な」言語学の誕生である。チョムスキーは「地球上の生物のなかで人間だけが言語能力をもつのはなぜか?」という問いに対し、それは人間がこのような記号生成マシーンを脳の中に持っているからであり、それらはいずれ実際に脳の一部として発見されるであろう、とさえ言っている。
現在、「言語学」という分野は、次の 5つの階層に分けられた諸分野全体のことをいう。最初のほうに出てくる分野はすでによく研究されており、下に行くほど問題のレベルが高くなっていき、まだ謎が解けていない部分が多くなってくる :
これらの分野について簡単に解説しておく。音韻論とは、「あー」とか「ひょげ」とかいう音と文字の関係、子音と母音の組み合わさり方などを明らかにするものである。形態論が単語とか、品詞とかについて、その語形変化や並び方などを研究する分野。語形論とも呼ばれる。構文論がチョムスキーの考えた生成文法を研究する分野にあたる。語や文節がどのように「かたまり」を作って、どのようにそれらが入れ子になったり、他の「かたまり」を修飾したりするのだろうか、といった研究である。意味論とは、ひとつひとつの「単語」がどのような意味をもっているか、といった分野だが、この分野はまだ構文論にくらべて研究が進んでいない。語用論はあるひとつの文 (発話) をとりあげ、その発話が文脈の中でどのような働きをもっているかを研究する (たとえば依頼や婉曲、皮肉など)。こっちのほうはもっと研究が進んでいない。ましてやこれらをとり入れた自然言語処理システムなど、今のところ一つもない。
最終的には、自然言語処理システムはこれらすべてをとり入れたものになるかもしれない。しかしたいていの工学的構造物がそうであるように、システムはいくつかのレベルに分けて設計し、ひとつひとつのモジュールを積み重ねていくことが望ましい。このシステムを言語学と同じように分割するとすれば、最終的なシステムは次のようなモジュールが必要になるだろう :
これらのモジュールのうち、現在研究が進んでいるのは形態素解析モジュールと構文解析モジュール、せいぜい意味解析モジュールまでである。そしてこの形態素解析と構文解析という 2つの技術こそが、現在の自然言語処理技術の中核をなすものでもあるのだ。では、次にこの 2つの技術をみていこう。
さて、すでに予想がついただろうが、「形態素」ということばは上にあげた形態論の「形態」と関係がある。日本語の活用をみればわかるように、ある語はいろいろな形態に変化する。これは英語でもそうだし、ほとんどの言語にみられる現象である。形態素とは文字どおりその形態の「素」、つまり語のなかで変化しない最小単位をさす。これは単語と呼ばれているものに近いが、日本語ではもっと細かく分類される。たとえば、文
このように形態素解析 (Morphological analysis) とは、与えられた文を形態素に分ける作業のことをいう。この作業には、それぞれの形態素がどの品詞に対応するかという対応づけも含まれる。形態素解析はのちに述べる構文解析の材料となる品詞列を提供し、構文解析の足場をつくる。こんなことがなぜ計算機に可能かというと、それは日本語には単語のどの品詞がどの品詞とつながるか、という厳密な規則があるためである。たとえば「来られないようだが」は日本語として可能でも、「来だないがようられ」は許されない。形態素解析の技術は、自然言語処理の中ではもっとも基本的な技術であり、現在のところ唯一実用で普及しているものである (かな漢字変換)。では、次のような問題をやってみよう :来 コ 来る 動詞-自立 カ変・来ル 未然レル接続られ ラレ られる 動詞-接尾 一段 未然ナイ接続ない ナイ ない 助動詞 特殊・ナイ 基本形よう ヨウ よう 名詞-非自立-助動詞語幹 だ ダ だ 助動詞 特殊・ダ 基本形が ガ が 助詞-接続助詞
問 : 次の文をかな漢字変換せよ。
この問題は思ったより単純でない。今までに聞いた知識から
これらはいずれも意味は不明だが、日本語として許されないわけではない(追加研究としてはここ を参照)。どれが妥当かはその文の意味によって決まるし、さらには文脈や相手の意図までも考慮に入れなければ完璧な正解は出せない。ここに、自然言語解析の難しさがある。形態素解析にしろ構文解析にしろ、そのレベルの規則だけですべてなんとかなるといったことはなく、最終的には意味まですべて考慮に入れなければ正しい正解は出せないのである。しかし今のところそんなに技術は発達してないので、とりあえずここでは「複数の解答がある」とするしかない。このように解答が複数あって、どちらとも決定できない状況を言語処理の分野では「曖昧である」と言う。またそのような曖昧な解答をたくさん出す可能性のことを「曖昧性」という。この 2つの用語は研究室でもしょっちゅう使われるから、覚えておくこと。
一般に形態素解析の結果は一通りではなく、かなりの曖昧性がつきまとう。これは構文解析でも同じことである。形態素解析に曖昧性があり、その候補が多数出力されると、当然それを使う構文解析はもっとたくさんの曖昧性を生ずることになる。つまり形態素解析モジュールは構文解析モジュールの下に位置するために、この足場があやういと、構文解析までが難しくなるのである。構文解析では 10の20乗もの正解「候補」が出されることさえある。いろいろな手法を用いてこれらの候補から間違っているものを除き、正解を見つけることを曖昧性の解消と呼ぶ。現在の自然言語処理の最大の問題は、まさにこの莫大な「曖昧性」をいかにして減らすか、ということにあるのである。計算論で NP 完全問題などの概念を習ったと思うが、これを解決しなければその先にある文の意味を細かく議論することができない、とされている。少くとも現在の方法論ではそうである。
ちなみに田中・徳永研究室で研究されている MSLR 構文解析は、形態素解析 (M) と 構文解析 (S) を同時に行うことができる LR構文解析の手法である。
例として、次のような文法が与えられているとしよう :
上の文を構文解析した結果は、たとえば次のように表される。
こうして見てみると、この文は先にあげた規則を次のような順序で展開していったということがわかるだろう :NP( ADJP(美しい) NP( ADJP( NP(水車小屋) pp(の) ) NP(乙女) ) )
形態素解析の項ですでに述べたように、この構文解析にもほとんどの場合 複数の候補が存在する。つまり、構文木が複数付与できるような文が多々あるのである。先の例文だと、以下のように 2通りの構文木が考えられる。それぞれ、日本語として意味を考えた場合に異った意味をもっている。

構文木 1 (水車小屋が美しい場合)

構文木 2 (乙女が美しい場合)
これらの曖昧性も、やはり文脈などを考慮しなければ最終的には解消できない。しかし、こういった修飾の関係は、「何が、何を修飾しているか」を見ぬけば、解決できることもある。たとえば「建設中の水車小屋の乙女」だったら、乙女を建設するとはいえないから、我々は自然に「水車小屋が建設中なのだ」という結論にたどりつく。しかしこのような解決は計算機にとってはむずかしい。問題を解決するにあたって、膨大な一般常識が必要となる。しかし最近は文法にこのような制約を与える研究もなされている。
構文解析に発生する曖昧性は莫大なもので、それをいかに少なくするかといった研究テーマは田中・徳永研究室でも多い。それには文法の制約と呼ばれるものがカギになる。つまり、文法規則をうまくつくると、解析結果が何通りも現れないようにできるのだ。日本語の文法は、数百からなる規則の文脈自由文法でだいたい表現することができるが、この「文法規則を書く」という作業はちょうどプログラムを組むのに似ている。ある文法が、どれくらい多様な構造の文を生成できるかを、その文法の「能力」という。実際、同じ能力をもつ文法には何通りもの書き方があり、解析するときには曖昧性の発生の仕方がまるで違うといったことが生じる。研究者はこれらの文法をさして「いい文法」とか「わるい文法」と呼んだりする。それを使って構文解析するときに曖昧性がなるべく発生しないような文法が、かれらのいう「いい文法」である。現在いくつもの解析用の日本語文法が作られ、使われている。
構文解析にあたっては、その計算量に関する研究も行われている。チョムスキーは変形生成文法をその生成アルゴリズムの複雑さによって4つのレベルに分けた。これはすでに学部でやったと思うが、ここでもう一度まとめておく。
次の練習問題は、やる気のある人だけやればよい (たぶん誰もやらないと思うけど)。解答はとくに用意していないが、新山まで聞いてもらえば相談にのる。