東京理科大学の
研究者たち

現象としての「言葉」を
数学的に理解したい

理学部第一部 応用数学科松崎拓也教授

データとしての言葉と人間の言葉の違い

近年、英語から日本語、日本語から英語へといった自動翻訳器の性能が顕著に向上しています。利用したことがある方であればご存じのように、かつての自動翻訳は単語ごとにみると正しくても文章全体としては意味をなさないものが多く、結果として使えないということが多くありました。それらが急速に改善し、意味の通じる、自然な文章が生成されるようになってきています。
その背景にあるものが、人工知能(AI)の一分野である「自然言語処理」という研究領域です。自然言語処理では、人間が日常的に使っている言葉を電子データ(テキストファイル)として記録し、自動翻訳や情報の検索、情報のまとめなど、様々な形で加工するための技術を研究します。また、人間が言葉を理解するしくみを数理的に紐解くという、サイエンス的側面があります。
例えば、文を単語に区切る、単語を動詞や名詞などの種類に分ける、主語-述語-目的語といった単語の間の関係を見つける、日本語の文を英語に翻訳する、日本語の文をコンピュータ言語に翻訳して実行する、長い文章を自動的に要約する、といったことはどれも自然言語処理によるものです。これらの多くには現在の人工知能技術の主流である深層学習の手法が取り入れられており、自動翻訳であれば英文と日本語文の組み合わせを大量に集めて巨大なニューラルネットを訓練します。
しかし、言葉と言葉、あるいは言葉と現象の間には必ずしも一対一の関係が成り立つものではありません。野球の試合の結果を伝える文章を見ても、一方のチームにとっては「勝った」となる反面、相手チームにとっては「負けた」となるように、同じ現象を指す言葉であっても立ち位置によって正反対になりえます。このような言葉の「ゆらぎ」は、深層学習における学習データを用意する上での課題でもあり、翻訳した言葉は正しいのだけれど文章としてはおかしい、ということが起きる原因の一つです。
そのように言葉というものが定義しにくいものだからこそ、入力データとしての言葉をさまざまな側面から数学的に記述しつつ、できるだけ多くの言語データに対して最大公約数的な描像を与えることで実用的な価値を生み出そうとするのが、現在の自然言語処理研究です。

「文字のつらなり」から「意味」を紡ぐ構文解析

自然言語処理技術の中でも私が特に関心を寄せているのは、構文解析と呼ばれるものです。構文解析とは、文の中の単語間における文法的・意味的な関係を自動的に判定する課題で、自然言語処理の中でも基盤的な領域にあたります。詩的な表現をすれば、構文解釈とは「単なるインクの染み」である文字のつらなりから、「意味」という別の何かが立ち上がってくる瞬間を、数学的に捉えようとする試みの第一歩です。
具体的な取り組みとしては、大学入試問題を自動的に解く「ロボットは東大に入れるか(東ロボ)」という研究プロジェクトがあります。私はこのプロジェクトで富士通研究所の方と協力し、日本語で書かれた数学問題を自動的に解くシステムを開発しました。このシステムは、最終的には東大理系型の模試で偏差値76.2を達成しました。
日本語と数式で書かれた数学の問題の中で、どのような数学的内容が記述されているかをコンピュータに分かる形に翻訳するまでが、構文解析にあたります。そのために数学の教科書をたくさん取り寄せ、数学科の学生と協力して数学の単語の辞書を作るところから始めました。その上で、単語ごとにコンピュータ上での対応関係を作っていきます。例えば、文の中で「直線Lと直線Mが直交する」という文があったとき、「と」という言葉でつながる2つのオブジェクトが「垂直」という関係でつながるというような意味づけをしていく。そういった関係がたくさん文の中で組み合わさって、最終的に問題の意味に相当するものが出てくるのです。
ただし、部分部分で文を捉えられたとしても、全体で捉えられるとは限りません。その言葉を知っている人間でも、正しい知識がないために理解できないことがあるのと同じです。しかし、人間は無限に存在する文の意味をあらかじめ全て知っているわけではないのに、個々の意味を徐々に理解し、文全体の意味を導く能力を持っています。このように時間の流れの中で少しずつ意味を導いていくというプロセスを理解する道具として、コンピュータが役立つのではないかと期待しています。その期待こそ私が構文解析に魅力を感じているところです。

見えないプロセスに「理由」を見つけたい

ここ数年は、構文解析によって主語、述語などの関係性などを教え込まなくても、大量の入出力データを入れて学習させると、複雑なネットワークの中でかなり良い答えを出せるようになっています。だからといって、AIが言葉の意味を理解して、自ら考えられるようになったのではありません。かなり正確な自動翻訳が可能にはなりましたが、細部まで見ていくと、難しいところを読み飛ばしていたり、人間ならばありえない間違いをしたりすることが少なくない。それでも全体としてはおおむね正しく訳せていることも多いのはなぜなのか。今特に興味を引かれているのはこの部分です。
入力データとしての言葉が何らかの出力データとなって出てくるまでの中間には、膨大かつ複雑なネットワークプロセスがあります。しかし、中間プロセスには何の構造も意味もなく、学習データのどこから情報を得て、それがどう出力につながっていくのかといったことが表面的には見えません。この見えていない部分を解析して、なぜうまく動くのかを言語化して理解する必要があります。言葉という現象の研究としては隔靴掻痒の感もありますが、数値のかたまりであるモデルの中身を人間が理解する方向の研究を進めることで、さらに良い言語処理システムの開発につなげたいと考えています。
同時に、今世の中にある個々の課題を解決する中に、言語を読み解くプロセスのヒントが隠れているのではないかとも期待しています。例えば、教師や医師などが持つ特定のスキルを自然言語処理で自動化したいという相談を受けることがあります。その要望の多くは今の言語処理技術で実現することはできませんが、教師や医師が持っているノウハウを言語化して整理することならできますし、整理されたノウハウこそ業界にとって資産になるはずです。そのノウハウに数学的構造を見つければ、言語処理につなげることができるかもしれません。
大量のデータと大規模な計算機を必要とする現在の自然言語処理は、そのような資源をもつ一部の企業に牽引される傾向が現れつつありますが、個々の課題、個々の人に向けて技術が広がるような仕組みを作っていけないかと模索しているところです。

連携したい分野松崎研究室+数学

現在の自然言語処理の方向性は、論理学をベースとして、人間の言語を「一種のコンピュータ言語」として捉えようとするものと、言語を統計的現象とみなして数量的に捉えようとするものという二つに分けられます。しかし、その二つしかないということには納得しておらず、第3の数学的見方を見出したいと考えています。同じ数学を研究している方に、何かヒントになるような考え方がないかどうか、話を聞いてみたいです。