自然言語理解

自然言語理解（しぜんげんごりかい、Natural language understanding, NLU）は人工知能の自然言語処理の一分野であり、コンピュータに自然言語を理解（読解）または意図を抽出させるという試みである。
ニュース収集、テキスト分類、音声アクティベーション、アーカイブなどの大規模コンテンツ解析といった様々な応用があるため、商業化の面でも関心が強い分野である。

**歴史**
世界初の自然言語理解の試みとしては、1964年、MITのDaniel G. Bobrowが博士課程の研究の一環として開発したプログラムlabel=STUDENTがある。ジョン・マッカーシーが人工知能 (artificial intelligence) という呼称を生み出したのは、ボブロウが博士論文 Natural Language Input for a Computer Problem Solving System を書く8年前のことである。ボブロウの論文は、単純な英語で書かれた代数学の文章問題を入力として、それを理解して解くプログラムを示したものである。
翌1965年、同じくMITのジョセフ・ワイゼンバウムがセラピストを装って英語で人間と対話するプログラムELIZAを書いた。ELIZAは単純な構文解析とキーワードの決まり文句への置換で成り立っており、ワイゼンバウムは実世界についての知識データベースをプログラムに持たせるのを避け、豊富な語彙目録を与えるのを避けた。子供だましのプロジェクトとしては驚くほどの人気となり、例えば最近のAsk.comなどで使われていた商用システムの祖先となった。
1969年、スタンフォード大学のロジャー・シャンクが自然言語理解のためのCD理論を提唱。このモデルは言語学者Sydney Lambの研究成果を踏まえたものであり、イェール大学でシャンクの指導を受けたJanet Kolodnerをはじめとする学生らがこれを応用した。
1970年、ウィリアム・A・ウッドが自然言語入力を表現するaugmented transition network (ATN) を考案。ATNは句構造規則の代わりに同等の有限オートマトンを使い、それを再帰的に呼び出している。ATNのより一般的な形式を "generalized ATN" と呼び、その後何年もつかわれ続けた。
1971年、テリー・ウィノグラードはMITでの博士論文のためにSHRDLUを書き上げた。SHRDLUは、積み木で構成される限定的な世界について単純な英語の文を理解でき、それに従ってロボットアームで積み木を操作できる。SHRDLUのデモンストレーション成功により、その後しばらくそういった研究が続けられた。ウィノグラード自身も著書 Language as a Cognitive Process を出版し、この分野に大きな影響を与え続けた。なお、後にウィノグラードはスタンフォード大学でGoogle創業者の1人となるラリー・ペイジを指導した。
1970年代から1980年代にかけて、SRIインターナショナルの自然言語処理グループが、この分野の研究開発を続けている。そこから商業化の試みもいくつかなされている。例えば、SRI出身のGary Hendrixは1982年にシマンテックを創業したが、当初はパーソナルコンピュータからデータベースへのクエリを自然言語インタフェースで行うシステムを開発していた。しかし、マウスを使ったGUIが登場したため、シマンテックの方向性を変えることになった。同じころ他にも自然言語理解の成果を商業化する試みがなされており、Larry R. Harris の創業した Artificial Intelligence Corporation やロジャー・シャンクが教え子らと創業した Cognitive Systems がある。1983年、Michael Dyer はイェール大学でBORISシステムを開発。ロジャー・シャンクと W. G. Lehnart の行った研究と類似点がある。
2022年のある体系的な見解によると、深層学習は自然言語を理解する能力を向上させ、ほぼすべての領域を変えたという。教師なし学習とマルチタスク学習法に基づく深層学習言語モデルの組み合わせは、自然言語理解のさらなる向上をもたらす可能性を秘めている。

**スコープと文脈**
「自然言語理解」は様々な範囲のコンピュータアプリケーションに適用される。ロボットを操作する単純化されたコマンドから、新聞記事や詩を完全に理解しようという大掛かりなものまで幅広い。多くの実世界の応用はこれら2つの極端な例の中間に位置し、例えば電子メールの内容を分析して分類して企業内の適切な部門に振り分けるシステムは、それほど深い理解を必要としないが、固定のスキーマをもつデータベースへの簡単なクエリの管理よりはずっと複雑である。
長年に渡り、自然言語処理あるいは英語風の文をコンピュータへの入力に利用する試みが様々なレベルで行われてきた。一部の試みはそれほど深い理解を必要としないものだったが、それでもシステム全体の使いやすさを向上させる役に立っている。例えば、Wayne Ratliffが開発した Vulcan というプログラムはスタートレックに出てくる会話するコンピュータを真似て英語風の構文でコンピュータに指示できるようになっていた。Vulcanは後にdBaseへと発展し、その使いやすさで人気となり、パーソナルコンピュータのデータベース市場を生み出した。しかし、単に英語風の構文で使いやすくすることは、豊富な語彙目録を持つシステムとは全く異なり、後者は自然言語文の意味論を表すのに独特の内部表現（一階述語論理であることが多い）を持つ。
例えば文章を論理式に変換することによって、意味を扱う方法がある。
「太郎が車を買った」
という文を論理式に表すと
買った（太郎、車）
のような形になる。このような形の論理式に文を変換することによって、意味が扱えると考えられている。
それゆえ、システムが目指す「理解」の幅と深さは、そのシステム（およびそれによって暗示される挑戦）の複雑さと対応できる応用の種類の両方を決定する。システムの「幅」は、それが持つ語彙と文法の大きさで示される。「深さ」は、その理解が流暢な母語話者のそれにどれだけ近いかで示される。最も浅く狭い英語風のコマンドインタプリタは要求される複雑さも小さいが、応用できる範囲も小さい。狭いが深いシステムは、理解の機構を探ってモデル化することを意図しているが、やはり応用範囲は限られている。単純なキーワードマッチングではない理解を行おうとするシステムは、例えばニュース記事の内容を理解してそれがユーザーに適しているかを判断するシステムなどで、かなりの複雑さを要求するが、まだ範囲は若干狭い。非常に広く非常に深いシステムが実現するのは、まだ先のことである。

**コンポーネントとアーキテクチャ**
どのような技法であっても、多くの自然言語理解システムにはいくつかの共通のコンポーネントがある。自然言語理解システムは対象言語の語彙目録と構文解析器と文法規則を必要とし、それらを駆使して文章を内部表現に変換する。適切なオントロジーを備えた豊かな語彙目録を構築することは、多大な努力を要する。例えば、WordNetの語彙目録は多大な工数を必要とした。
理解を誘導するには、「意味論」も必要とされる。言語理解システムの解釈能力は、それが使用する意味論に依存する。様々な意味論は、自然言語理解システムの基盤とする際にそれぞれ固有のトレードオフを持っている。その範囲は、naive semanticsやstochastic semantic analysisから語用論を使用した文脈からの意味の抽出まで幅広い。
自然言語理解の高度なアプリケーションはまた、そのフレームワーク内に論理推論を取り入れようとする。それは一般に、抽出した意味を一階述語論理の論理式群にマッピングし、それらから演繹によって結論を導出する。そのためLISPなどの関数型言語をベースとしたシステムは論理式を表現するためのサブシステムを必要とするが、Prologなどの論理言語を使ったシステムは内包する論理表現フレームワークを拡張することに依存している。
自然言語理解における文脈の管理は、特に難しい。多種多様な例と反例は、結果として固有の長所と短所を持つ文脈の形式的モデリングを複数生じた。

**利用**
自然言語理解の利用には次のようなパターンがある。- 文章の読み取り
** 情報検索：知りたい情報を探してくる
** テキストマイニング：膨大な情報を短時間で集約する- ユーザーとのインタラクション

**ツール**
 SyntaxNet: A TensorFlow toolkit for deep learning powered natural language understanding (NLU).
** 構文解析の機能を一部含む

**関連企業・サービス**
 株式会社 ⾔語理解研究所, Institute of Language Understanding Inc. - ニュアンス・コミュニケーションズ・ジャパン株式会社（Nuance Communications, Inc. 日本オフィス）

**脚注**

**参考文献**
 http://www.cl.ecei.tohoku.ac.jp/~inui/papers/0610Fuzzy.pdf

**関連項目**
 自然言語- 自然言語処理- 句構造規則- 人工知能- AI完全- 談話分析- CD理論- 形式文法- 形式言語- コンピュータ言語- 品詞- 音声認識- WordNet