言語には自然言語と人工言語の2種類がある。
自然言語とは人が意思疎通を目的として、生活の営みの中で自然に発展させてきた言葉をいう。一方、人工言語はプログラミング言語や数式をいう。
両者の違いは何かというと、曖昧さがあるかどうかだ。
人工言語は「1+1=2」というようなもので、曖昧さが無い。そのため、人によって解釈が変わることはない。
しかし、自然言語の場合はどうか。例えば「高い」という言葉を例にとってみると様々な解釈ができるはずだ。物の位置が「高い」、金額が「高い」、程度が「高い」など。
とはいえ、「富士山は高い」という時、富士山はお金のかかる商品だ、と解釈することはあるだろうか。恐らく日本人であれば無いはずだ。
解釈がブレない理由は、日本人のほとんどが「富士山」という文字を目にしたときに、静岡県と山梨県にまたがる「山」をイメージすることができ、かつ、様々な意味があるなかで、物の位置が「高い」というときの「高い」が「山」との結びつきにおいてはふさわしい、というのを瞬時に判断することができるからだ。
このような人の思考をコンピュータで実現する「自然言語解析」は昔からあり、IBMの「ワトソン」が代表的な例として挙げられる。
さらに、昨今はICT技術の発達やSNSの普及によって安価かつ大量にテキストデータが集められる時代になった。そのため、このビッグデータを自然言語解析とAIを用いて分析するニーズは今後も高まっていくように思う。
以上の点を踏まえ、本稿は、一般的な自然言語解析はどのような仕組みで行うのかを説明する。
自然言語解析のしくみ
自然言語解析は次の手順で文章を処理する。
- 形態素解析(テキストを単語に切り分ける)
- 構文解析(単語同士の関係性から文の構造をいくつか推測する)
- 意味解析(推測された構文のうち正しい構文を1つに絞る)
- 文脈解析(複数の文にまたがって、1~3を実施する)
1~4に行くにしたがって、コンピュータの意味理解の精度は落ちる。これは冒頭に説明したとおり、自然言語は人工言語と異なって解釈の余地が大きいためだ。
では、順を追って1つずつ説明する。
形態素解析(テキストを単語に切り分ける)
形態素解析とは、文章を最小の意味をもつ単語に区切った後で、単語それぞれの品詞を判別する処理だ。最小の意味を持つ単語に区切るとはどういうことか。
英語だとはじめから区切られているといえば、わかりやすいだろうか。
I go to school.
これが日本語だと、下記のように単語が連なって文章を構成しているため、最小の意味を持つ単語に分ける必要が出てくるということだ。
私が学校へ行く
最小の意味を持つ単語に分ける。
私 が 学校 へ 行く
単語に分けたあとで、それぞれの品詞を判別する。
私(代名詞) が(助詞) 学校(名詞) へ(助詞) 行く(動詞)
ここまでが形態素解析の処理だ。
構文解析(単語同士の関係性から文の構造をいくつか推測する)
構文解析とは、単語同士の関係を推測する処理だ。
高い富士山と海が美しい
上記の文を形態素解析すると次のとおりになる。
高い(形容詞) 富士山(固有名詞) と(助詞) 海(名詞) が(助詞) 美しい(形容詞)
構文解析を行うと、係り受けには2パターンあることに気づく。
- 高い(形容詞)→富士山(名詞)
- 高い(形容詞)→富士山と海(名詞句)
もちろん、どちらが正しいかは一目瞭然ではあるが、コンピュータからすると日本語のルールに則って考えられる構文を2パターン出力しているだけである。
1は「形容詞は名詞を修飾する」というルールに則っている。
2は「形容詞は名詞句を修飾する」というルールに則っている。
このように文の中から、いくつかの構文を推測するというところまでが、構文解析だ。
意味解析(推測された構文のうち正しい構文を1つに絞る)
意味解析とは、統計的な方法などを用いて、単語同士の結びつきを見出したりして、意味付けを行う処理だ。
- 高い(形容詞)→富士山(名詞)
- 高い(形容詞)→富士山と海(名詞句)
構文解析までした結果、この文には2パターンの構造があるというところまで分かった。しかし、「高い」と「富士山」の関連性は高くても、「高い」と「海」の関連性は高くない。
もちろん、ここでいう関連性の高い・低いの判断はコンピュータに学習させるデータによっても変わってくるので、断定することは難しいものの、「高い」と「海」で構成された文章は、「高い」と「富士山」で構成された文章よりも少ないと思われる。
そのため「高い」と「海」は関連性が低いと判断され、この係り受けの構文は否定されるのである。そうして、コンピューターは正しい構文を1つに絞り込む。
高い(形容詞)→富士山(名詞)が正しい。
ここまでが意味解析だ。
文脈解析(複数の文にまたがって、1~3を実施する)
文脈解析はこれ、それ、あれ、どれといった指示語や省略された単語を補完する処理だ。
私はこの前、富士山の頂上に登った。そこで見た光景を忘れない。
多くの人が何不自由なく読めたと思うが、コンピュータからすると、意味を理解するには、形態素解析・構文解析・意味解析だけでは足りない。
なぜなら、2文目の「そこ」という指示語が示す言葉がわからないからだ。したがって、2文目の「そこ」が「富士山の頂上」であることを特定する必要がある。
また、同じく2文目の文章には主語が欠けていることに気づく。1文目には「私」という主語があったが2文目には無い。ということはコンピュータは2文目の主語を探すために、前の文章から、主語を推測しなければならない。
このような平易なテキストにおいても、コンピュータは様々な工程を経なければ、言葉の意味を理解できない。これが、私たちが普段から目にしているテキストをコンピュータが理解しようとした場合には、これまで説明してきたような基本的な技術だけでなく、より高度な技術を用いる必要があるだろう。
なお、市場性についても言及しておくと、調査会社Market Research Futureが2019年1月に発表したレポートによれば、世界の自然言語解析ビジネス市場は2023年には約2兆8,000億円規模になるようだ。
IoTNEWSでは、以前、実際に自然言語解析をビジネスとしている企業のインタビューを行っているので参照いただきたい。
[参考記事] 自然言語処理のAIエンジン「KIBIT」のしくみと活用事例 ―FRONTEO取締役CTO 武田秀樹氏インタビュー無料メルマガ会員に登録しませんか?
現在、デジタルをビジネスに取り込むことで生まれる価値について研究中。特にロジスティクスに興味あり。IoTに関する様々な情報を取材し、皆様にお届けいたします。