コンピュータはどうやって自然言語解析をしているのか

言語には自然言語と人工言語の2種類がある。

自然言語とは人が意思疎通を目的として、生活の営みの中で自然に発展させてきた言葉をいう。一方、人工言語はプログラミング言語や数式をいう。

両者の違いは何かというと、曖昧さがあるかどうかだ。

人工言語は「1+1=2」というようなもので、曖昧さが無い。そのため、人によって解釈が変わることはない。

しかし、自然言語の場合はどうか。例えば「高い」という言葉を例にとってみると様々な解釈ができるはずだ。物の位置が「高い」、金額が「高い」、程度が「高い」など。

とはいえ、「富士山は高い」という時、富士山はお金のかかる商品だ、と解釈することはあるだろうか。恐らく日本人であれば無いはずだ。

解釈がブレない理由は、日本人のほとんどが「富士山」という文字を目にしたときに、静岡県と山梨県にまたがる「山」をイメージすることができ、かつ、様々な意味があるなかで、物の位置が「高い」というときの「高い」が「山」との結びつきにおいてはふさわしい、というのを瞬時に判断することができるからだ。

このような人の思考をコンピュータで実現する「自然言語解析」は昔からあり、IBMの「ワトソン」が代表的な例として挙げられる。

さらに、昨今はICT技術の発達やSNSの普及によって安価かつ大量にテキストデータが集められる時代になった。そのため、このビッグデータを自然言語解析とAIを用いて分析するニーズは今後も高まっていくように思う。

以上の点を踏まえ、本稿は、一般的な自然言語解析はどのような仕組みで行うのかを説明する。

自然言語解析のしくみ

自然言語解析は次の手順で文章を処理する。

  1. 形態素解析(テキストを単語に切り分ける)
  2. 構文解析(単語同士の関係性から文の構造をいくつか推測する)
  3. 意味解析(推測された構文のうち正しい構文を1つに絞る)
  4. 文脈解析(複数の文にまたがって、1~3を実施する)

1~4に行くにしたがって、コンピュータの意味理解の精度は落ちる。これは冒頭に説明したとおり、自然言語は人工言語と異なって解釈の余地が大きいためだ。

では、順を追って1つずつ説明する。

形態素解析(テキストを単語に切り分ける)

形態素解析とは、文章を最小の意味をもつ単語に区切った後で、単語それぞれの品詞を判別する処理だ。最小の意味を持つ単語に区切るとはどういうことか。

英語だとはじめから区切られているといえば、わかりやすいだろうか。

I go to school.

これが日本語だと、下記のように単語が連なって文章を構成しているため、最小の意味を持つ単語に分ける必要が出てくるということだ。

私が学校へ行く

最小の意味を持つ単語に分ける。

私 が 学校 へ 行く

単語に分けたあとで、それぞれの品詞を判別する。

私(代名詞) が(助詞) 学校(名詞) へ(助詞) 行く(動詞)

ここまでが形態素解析の処理だ。

構文解析(単語同士の関係性から文の構造をいくつか推測する)

構文解析とは、単語同士の関係を推測する処理だ。

高い富士山と海が美しい

上記の文を形態素解析すると次のとおりになる。

高い(形容詞) 富士山(固有名詞) と(助詞) 海(名詞) が(助詞) 美しい(形容詞)

構文解析を行うと、係り受けには2パターンあることに気づく。

  1. 高い(形容詞)→富士山(名詞)
  2. 高い(形容詞)→富士山と海(名詞句)

もちろん、どちらが正しいかは一目瞭然ではあるが、コンピュータからすると日本語のルールに則って考えられる構文を2パターン出力しているだけである。

1は「形容詞は名詞を修飾する」というルールに則っている。
2は「形容詞は名詞句を修飾する」というルールに則っている。

このように文の中から、いくつかの構文を推測するというところまでが、構文解析だ。

意味解析(推測された構文のうち正しい構文を1つに絞る)

意味解析とは、統計的な方法などを用いて、単語同士の結びつきを見出したりして、意味付けを行う処理だ。

  1. 高い(形容詞)→富士山(名詞)
  2. 高い(形容詞)→富士山と海(名詞句)

構文解析までした結果、この文には2パターンの構造があるというところまで分かった。しかし、「高い」と「富士山」の関連性は高くても、「高い」と「海」の関連性は高くない。

もちろん、ここでいう関連性の高い・低いの判断はコンピュータに学習させるデータによっても変わってくるので、断定することは難しいものの、「高い」と「海」で構成された文章は、「高い」と「富士山」で構成された文章よりも少ないと思われる。

そのため「高い」と「海」は関連性が低いと判断され、この係り受けの構文は否定されるのである。そうして、コンピューターは正しい構文を1つに絞り込む。

高い(形容詞)→富士山(名詞)が正しい。

ここまでが意味解析だ。

文脈解析(複数の文にまたがって、1~3を実施する)

文脈解析はこれ、それ、あれ、どれといった指示語や省略された単語を補完する処理だ。

私はこの前、富士山の頂上に登った。そこで見た光景を忘れない。

多くの人が何不自由なく読めたと思うが、コンピュータからすると、意味を理解するには、形態素解析・構文解析・意味解析だけでは足りない。

なぜなら、2文目の「そこ」という指示語が示す言葉がわからないからだ。したがって、2文目の「そこ」が「富士山の頂上」であることを特定する必要がある。

また、同じく2文目の文章には主語が欠けていることに気づく。1文目には「私」という主語があったが2文目には無い。ということはコンピュータは2文目の主語を探すために、前の文章から、主語を推測しなければならない。

このような平易なテキストにおいても、コンピュータは様々な工程を経なければ、言葉の意味を理解できない。これが、私たちが普段から目にしているテキストをコンピュータが理解しようとした場合には、これまで説明してきたような基本的な技術だけでなく、より高度な技術を用いる必要があるだろう。

なお、市場性についても言及しておくと、調査会社Market Research Futureが2019年1月に発表したレポートによれば、世界の自然言語解析ビジネス市場は2023年には約2兆8,000億円規模になるようだ。

IoTNEWSでは、以前、実際に自然言語解析をビジネスとしている企業のインタビューを行っているので参照いただきたい。

[参考記事] 自然言語処理のAIエンジン「KIBIT」のしくみと活用事例 ―FRONTEO取締役CTO 武田秀樹氏インタビュー

Previous

AIによる画像認識とは

EC・自動車・製造業など、幅広く活用されるARの最新事例

Next