表1 自然言語処理の研究に関する主な出来事*1
図1 機械翻訳の基本的な考え方
意味レベルで言語に依存しない共通の表現が存在するのなら,そこまで分析すれば他の言語へ翻訳できるはずである。
図2 オーソドックスな機械翻訳の手順
意味レベルで変換できればいいが,現実には難しい。そこで,構文レベルで目標とする言語に変換してしまう「構文トランスファ」方式が普通である。
 いまでは仕事や生活に欠かせなくなった日本語ワープロ・ソフト。日本語でキーワードを指定すると,その言葉を使っているWebサイトを見つけてくる検索サービス。また,パソコンを購入すると簡単な翻訳ソフトが付いてくることも多く,それを使うと英文サイトの内容をある程度意味の通じる日本語に翻訳してくれる。コンピュータが日本語を扱う場面は,いまではごくありふれた風景になった。

 このように,人間が使う言葉をコンピュータに処理させようとする分野を,自然言語処理と呼ぶ。自然言語とは,コンピュータのプログラミング言語のような記述形式の定まったものと区別して,人間が普通に用いる言語を指すときに使う表現である。およそ言葉で表せるデータの存在するところ,すべてその応用範囲である。

 自然言語処理研究の歴史は長く,コンピュータの登場とともに始まったと言ってもいいだろう(表1[拡大表示])。この種の知的なシステムは期待と失望のサイクルを繰り返すものだが,自然言語処理もその例に漏れなかった。日本で過去最も盛り上がったのは1980年代のことだ。折からの人工知能ブームと相まって,言葉についても人間並みの処理が可能になるのではないかという希望を多くの人々に与えた。そして,今なお夢のままである。

 しかしその後,1990年代に,自然言語処理技術は大きな変身を遂げた。完ぺきな知的処理を目指すのではなく,現実的で有効な成果を出す道への方向転換であった。その成果が,インターネットの普及に伴い爆発的にコンテンツが増加した今になって,新たな情報分析の手段として再登場してきた。これを自然言語処理の“復活”と呼ぶことにしたい。

 それでは復活の実態はどのようなものなのか。それを確かめる前に,自然言語処理の歴史を簡単に振り返っておこう。

言語を自動翻訳する夢

 コンピュータ最初期から重要な応用として期待され,今なお自然言語処理の代表的なテーマであり続けているのが,ある言語で書かれた文章を別の言語に自動的に翻訳する「機械翻訳」である。機械翻訳を実現するプロセス(図1[拡大表示])には,コンピュータに言葉を理解させるために必要な条件がすべてそろっている。

 図1を簡単に説明しよう。与えられた文章に対して,語の区切りや語尾を処理して品詞を判断する形態素解析,語や句がどのように関係するかを分析する構文解析,そして語句の意味を調べる意味解析と処理を進める。その結果が言語に依存しない(さまざまな言語に共通の)形式で表現できるのであれば,同じ内容の文章を別の言語を使って生成できるはずである。

 この考え方自体に疑問の余地はあまりない。図2[拡大表示]の文例で詳しく説明しよう。例えば「I eat meat」という英文は,「I」「eat」「meat」という要素に分けることができる(英語の場合はスペースで単語が区切られているのでそのまま分けられる。日本語は語を区切るのにある程度の処理が必要である)。

 次に名詞句(I)+動詞句(eat meat)という構造に分解する。この場合,名詞句は代名詞(I)のみである。そして動詞句はさらに,動詞(eat)+名詞句(実際には名詞meatのみ)に分解される。こうしてできた木のような形の構造を構文木という。

 そして構文木から,文章の意味構造を考える。ここでは「eat」という動詞を中心とし,これに対して他の語がどのような格の関係にあるかを考える。すなわち,主格がIで,目的格がmeatである。

 この構造が示す文章の意味は,他の言語であっても同じであるから,ここで日本語に変換して,動詞「食べる」を中心に,主格「私」,目的格「肉」という構造に置き換える。

 あとは,英文を解析したときと同様の過程を逆にたどる。日本語の意味構造から構文木を生成するが,このとき日本語のルールに従って,文章後半の名詞句と動詞の順序が英文の場合とは逆になる。同時に助詞も補われて,最終的に「私は肉を食べる」という翻訳文を生成するに至る。

 この例は非常に単純な場合を示したにすぎない。人間が実際に使う文章はもっと複雑であるが,基本的にはこのような文法上の処理と意味上の処理によって,遠からず自動的な翻訳も可能になると考えても無理はない。それには言語の構造や意味を精密に定式化する必要がある。しかし,現実がそう甘くなかったことは周知の通りである。