ページの先頭です

自然言語処理の世界

意味を理解するAI

2018年7月31日 事業戦略部 相澤 祐一

突然ではあるが、ここでクイズを出したい。皆さんは、以下の計算結果が何になると思われるだろうか。

「東京」-「日本」+「ドイツ」=?

この言葉の計算を可能にしているのが、自然言語処理と呼ばれる技術である。今回は、この自然言語処理の多様な世界の一端をご紹介したい。

自然言語処理とは

自然言語処理は、人間が使う言葉(自然言語)をコンピュータに処理させる一連の技術であり、AI(人工知能)の一分野である。身近なところでは、スマートスピーカーなどに応用されている。また、ビジネスへの活用事例として、コールセンターを中心に、お客さまからの問い合わせに対して自動で回答するといったチャットボットが普及してきており、当社も、「質問に自動で応対するチャットボットができないか」といったご相談をいただくようになってきた。学術研究の領域では他にも、最適な締めの文の選択、文の穴埋めや、文章生成といった取り組みがなされており、自然言語処理の応用が広がってきている。

単語の意味を捉える

自然言語処理の難しさの1つとして、単語の意味が文脈によって変わるという点が挙げられる。例えば、bankの和訳には、「銀行」と「土手」の二種類があり、文脈によってどちらの言葉を選択するべきか、判断する必要がある(*1)。

そこで、「単語の意味は、一緒に登場しやすい傾向にある、他の単語によって決まる」という仮説が着目されている。例えば、「猫は哺乳類だ」「猫はかわいい」「猫は谷中にいる」など、様々な文を集めることで、「猫」がどういうものなのかが見えてくる。これを実現するため、単語をベクトルと見立て、その単語の近傍に登場することが多い単語は、ベクトルの向きが似ている単語だとAIに学習させる。人間の話す言葉がベクトルに置き換えられるなら、コンピュータでも扱えるというわけだ。

単語の意味を計算するAIを作ってみた

筆者は、Wikipediaの全記事(日本語)を使って、ある単語に対し、近傍に登場しやすい単語を返すAIを作ってみたので、ご紹介したい。

このAIに、ワールドカップ優勝国の「フランス」と入力してみたら、「ドイツ、ベルギー、イギリス・・」など近隣諸国が返ってきた。「江戸」と入力してみたら、「室町、鎌倉、平安・・・」など時代の名称が返ってきた。同類のカテゴリに入ると思われる単語を返すようになるのである。

また、単語をベクトルとして表現することで、冒頭のクイズに示したような、足し算や引き算もできる。冒頭のクイズに対してAIは、

「東京」-「日本」+「ドイツ」=「ベルリン」

と答えた。この式を変形すると、

「東京」-「日本」=「ベルリン」-「ドイツ」

となる。これはすなわち、「日本」にとっての「東京」は、「ドイツ」にとっての「ベルリン」であるということを示している。「東京」「ベルリン」に共通するのは、国の首都という点であることから、AIが共通概念を獲得できている可能性を示していると言える。

では、次の計算の答えは何になるであろうか。本コラムの終わりに、AIがはじきだした答えを載せているので、ぜひトライしてみてほしい。

例題1 「緑茶」-「日本」+「イギリス」=?

例題2 「月食」-「満月」+「新月」=?

例題3 「ラーメン」-「中華」+「日本」=?

文章の意味理解へ

近年では、さらに、文章自体をベクトル表現することにより、文章間の類似度を算出するといった事例が増えている(*2)。例えば、研究論文や特許の類似文献検索や、クチコミやニュースの類似投稿・記事をいくつかのトピックに分類する、といった応用例がある。他にも、チャットボットに応用すれば、過去に受けたことのある質問と同一の単語が使われていない新たな質問文に対しても、AIがより精度高く回答することができるであろう。

少しずつではあるが、自然言語処理の技術は、単語や文章の理解に迫りつつある。今後の発展からますます目が離せない。

*****

本コラムの締めに、計算例題の答え合わせをしたい。

例題1:紅茶
例題2:日食
例題3:うどん

いかがだっただろうか。

例題3は、「そば」じゃないのかというツッコミが入りそうだ。私のAIは、2番目に「そば」を回答候補として出しているので、お許しいただきたい。

  1. *1 http://www.anlp.jp/proceedings/annual_meeting/2017/pdf_dir/P5-2.pdf(PDF形式/227KB)
  2. *2 http://db-event.jpn.org/deim2017/papers/305.pdf (PDF形式/1MB)
ページの先頭へ