情報の活用と発展~自然言語処理~

スマートフォンに「今日の天気は?」と話しかけると「今日は晴れます」と返事がくる、このような対話アプリを始めとした「人工知能(AI: Artificial Intelligence)」に関連する技術は近年飛躍的に進歩し、これまでコンピュータでは不可能とされていたことが実現しつつあります。その人工知能のうち、私たちの言葉を理解するために必要な技術の一つとして「自然言語処理(NLP: Natural Language Processing)」があります。今回は、その自然言語処理の概要と主な技術についてご紹介します。

自然言語処理の概要

自然言語処理とは

プログラミング言語のようにコンピュータ上で利用することを目的として作られた言語(人工言語)に対して、普段私たちが書いたり話したりしている言語を「自然言語」と呼びます。この自然言語による人間とコンピュータのコミュニケーションの実現や、膨大な自然言語の文章データから有益な知見を抽出することを目的に日々研究、開発が進められている技術が自然言語処理です。

自然言語処理の難しさ

コンピュータが自然言語を理解することは簡単ではありません。なぜなら、コンピュータには自然言語の文章は単なる記号の羅列としか認識できないからです。そのため、自然言語をコンピュータ上で扱うためには様々な課題があります。まず、コンピュータが記号の羅列を文章として認識するには、単語の意味や文法を知識として登録しておく必要がありますが、それは余りに膨大な情報であるため、全てを人の手で登録することは現実的ではありません。また、自然言語には曖昧な要素が多く、文脈や背景知識を踏まえて解釈することが必要です。
私たちは何気なく言葉を書き、話し、聞いていますが、これは人間の高度な知的処理によって行われているものであり、コンピュータが非常に苦手とする部分なのです。

自然言語処理の工程

難解な自然言語を扱うために、自然言語処理では主として次の5つの工程で段階的に解析処理を行います。

①形態素解析:
入力された文について、単語に分割し、品詞などの情報を付与します。
②構文解析:
文法規則に基づいて、文中にある語句の係り受けなどの修飾関係を解析します。
③格解析:
文中の述語とその他の語句との関係を解析します。
④照応・省略解析:
文にまたがる語句の関係を解析し、代名詞や指示詞の指示対象を推定し、省略語の補完を行います。
⑤談話構造解析:
文同士の意味的な関係を解析します。
自然言語処理の応用

自然言語処理を応用した技術は、古くは仮名漢字変換に始まり、音声認識、自動翻訳、自動要約、知識抽出などがあります。特に、近年の音声認識技術の進歩は目覚ましいものがあり、日常の様々な場面で接することが増えてきました。
このように自然言語処理の技術は日々研究され、形態素解析や構文解析のように1つの文を対象とした解析は高い精度に達してきた一方で、照応・省略解析や談話構造解析のように文をまたいだ解析はまだまだ研究段階にあると言えます。

主な自然言語処理の技術

自然言語処理の技術は、実用的に利用されているものから研究段階にあるものまで様々です。その中から、高い精度で実用的に利用されている技術や、注目を集めている「ニューラルネットワーク(動物の神経細胞をモデル化した予測や分類を行うための手法)」を応用した技術についてご紹介します。

形態素解析と係り受け解析

英語のように単語と単語の間がスペースで区切られている言語とは異なり、日本語の文章は単語の区切りが明示されていないため、その区切り位置を文章から推定しなければなりません。日本語の形態素解析では、単語の表記や品詞などの情報を持つ単語辞書と、文中における単語同士のつながりの情報を保持した連接可能性辞書を用いて文を単語に分割し、それぞれの品詞を自動的に推定します。
医薬品の用法用量に関する文を形態素解析ツールの一つである「MeCab」を用いて解析すると、次のような結果となります。

<例文>

成人及び体重37.5kg以上の小児にはオセルタミビルとして1回75mgを1日2回、5日間経口投与する。

<出力結果>

成人
名詞,サ変接続,*,*,*,*,成人,セイジン,セイジン
及び
接続詞,*,*,*,*,*,及び,オヨビ,オヨビ
体重
名詞,一般,*,*,*,*,体重,タイジュウ,タイジュー
名詞,数,*,*,*,*,3,サン,サン
名詞,数,*,*,*,*,7,ナナ,ナナ
名詞,数,*,*,*,*,.,.,.
名詞,数,*,*,*,*,5,ゴ,ゴ
kg
名詞,接尾,助数詞,*,*,*,kg,キログラム,キログラム
以上
名詞,非自立,副詞可能,*,*,*,以上,イジョウ,イジョー
助詞,連体化,*,*,*,*,の,ノ,ノ
小児
名詞,一般,*,*,*,*,小児,ショウニ,ショーニ
助詞,格助詞,一般,*,*,*,に,ニ,ニ
助詞,係助詞,*,*,*,*,は,ハ,ワ
オセルタミビル
名詞,一般,*,*,*,*,*
として
助詞,格助詞,連語,*,*,*,として,トシテ,トシテ
名詞,数,*,*,*,*,1,イチ,イチ
名詞,接尾,助数詞,*,*,*,回,カイ,カイ
名詞,数,*,*,*,*,7,ナナ,ナナ
名詞,数,*,*,*,*,5,ゴ,ゴ
mg
名詞,接尾,助数詞,*,*,*,mg,ミリグラム,ミリグラム
助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
名詞,数,*,*,*,*,1,イチ,イチ
名詞,接尾,助数詞,*,*,*,日,ニチ,ニチ
名詞,数,*,*,*,*,2,ニ,ニ
名詞,接尾,助数詞,*,*,*,回,カイ,カイ
記号,読点,*,*,*,*,、,、,、
名詞,数,*,*,*,*,5,ゴ,ゴ
日間
名詞,接尾,助数詞,*,*,*,日間,ニチカン,ニチカン
経口
名詞,一般,*,*,*,*,経口,ケイコウ,ケイコー
投与
名詞,サ変接続,*,*,*,*,投与,トウヨ,トーヨ
する
動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
記号,句点,*,*,*,*,。,。,。

形態素解析における課題に、単語辞書に登録されていない「未知語」への対応が挙げられます。SNSへの投稿のように砕けた表現が多い文章や専門用語が頻出するような文章には、この未知語が多く含まれる場合があります。そのため、意図した解析結果が得られないことがあり、このような課題に対しては、未知語に対応した専用の辞書やインターネット上の辞書のデータを登録することで、解析精度を向上させることができます。
形態素解析の次のステップである構文解析のツールとして、文節間の修飾関係の解析である係り受け解析が行える「CaboCha」などがあります。先程と同じ例文を解析すると、次のような結果が得られます。
“*”(アスタリスク)で始まる行は1つの文節の区切りを表し、自身の文節番号と係り先の文節番号を含んでいます。最初の文節を例にすると、1行目の“*”で始まる行の1つ目の数字“0”は自身の文節番号、2つ目の数字“9”は係り先の文節番号を表し、続く行の“成人”と“及び”を連結した“成人及び”が1つの文節を表します。これに従うと、文節番号“0”の“成人及び”の係り先は文節番号“9”の“5日間経口投与する。”となります。

<出力結果>

* 0 9D 1/1 -0.345479
成人
名詞,サ変接続,*,*,*,*,成人,セイジン,セイジン
及び
接続詞,*,*,*,*,*,及び,オヨビ,オヨビ
* 1 2D 0/0 1.458572
体重
名詞,一般,*,*,*,*,体重,タイジュウ,タイジュー
* 2 3D 5/6 1.732613
名詞,数,*,*,*,*,3,サン,サン
名詞,数,*,*,*,*,7,ナナ,ナナ
名詞,数,*,*,*,*,.,.,.
名詞,数,*,*,*,*,5,ゴ,ゴ
kg
名詞,接尾,助数詞,*,*,*,kg,キログラム,キログラム
以上
名詞,非自立,副詞可能,*,*,*,以上,イジョウ,イジョー
助詞,連体化,*,*,*,*,の,ノ,ノ
* 3 9D 0/2 -0.345479
小児
名詞,一般,*,*,*,*,小児,ショウニ,ショーニ
助詞,格助詞,一般,*,*,*,に,ニ,ニ
助詞,係助詞,*,*,*,*,は,ハ,ワ
* 4 9D 0/1 -0.345479
オセルタミビル
名詞,一般,*,*,*,*,*
として
助詞,格助詞,連語,*,*,*,として,トシテ,トシテ
* 5 6D 1/1 1.528564
名詞,数,*,*,*,*,1,イチ,イチ
名詞,接尾,助数詞,*,*,*,回,カイ,カイ
* 6 9D 2/3 -0.345479
名詞,数,*,*,*,*,7,ナナ,ナナ
名詞,数,*,*,*,*,5,ゴ,ゴ
mg
名詞,接尾,助数詞,*,*,*,mg,ミリグラム,ミリグラム
助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
* 7 8D 1/1 1.900301
名詞,数,*,*,*,*,1,イチ,イチ
名詞,接尾,助数詞,*,*,*,日,ニチ,ニチ
* 8 9D 1/1 -0.345479
名詞,数,*,*,*,*,2,ニ,ニ
名詞,接尾,助数詞,*,*,*,回,カイ,カイ
記号,読点,*,*,*,*,、,、,、
* 9 -1D 4/4 0.000000
名詞,数,*,*,*,*,5,ゴ,ゴ
日間
名詞,接尾,助数詞,*,*,*,日間,ニチカン,ニチカン
経口
名詞,一般,*,*,*,*,経口,ケイコウ,ケイコー
投与
名詞,サ変接続,*,*,*,*,投与,トウヨ,トーヨ
する
動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
記号,句点,*,*,*,*,。,。,。
EOS
キーワード抽出

文章から形態素解析によって得られた単語について、その文章中における出現頻度を数えてみると、重要な単語は出現頻度が高くなる傾向があります。「タミフルカプセル75」の添付文書から抽出された単語における名詞を出現頻度順に並べると、次のようになります。

名詞の出現頻度上位10単語
単語 頻度
投与 100
59
51
インフルエンザ 44
mg 43
感染 42
ウイルス 38
37
37
36

“インフルエンザ”、“感染”、“ウイルス”のような特徴的な単語が見られる一方で、“投与”や“%”のような一般的な単語も出現頻度が高くなっています。
そこで、「重要な単語は、当該文書での出現頻度は高いが他の文書における出現頻度は低い」という考え方に基づいて、単語頻度(TF: Term Frequency)に文書頻度の逆数(IDF: Inverse Document Frequency)を乗算することで得られる「TF-IDF値」によって、重要な単語を抽出することができます。先程と同じ「タミフルカプセル75」の添付文書から抽出された名詞のTF-IDF値を高い順に並べると、次のようになります。

名詞のTF-IDF値上位10単語
単語 TF-IDF値
オセルタミビルリン 0.0113
オセルタミビル 0.0106
プラセボ 0.0052
罹病 0.0048
予防 0.0038
ウイルス 0.0034
インフルエンザ 0.0030
未成年 0.0028
0.0026
白人 0.0025

頻度のみで並べた場合と異なり、タミフルの成分名である“オセルタミビル”に関する単語や、度々話題にあがる異常行動の注意喚起※に関する単語の“未成年”が上位に来ることがわかります。
TF-IDF法は直感的にもわかりやすく、かつ単語の出現頻度のみからその重要度を算出することができるため、キーワード抽出などに用いられることがあります。

※ 2017年9月改訂の添付文書より得られた結果であり、2018年8月の改訂にて未成年の異常行動に関する記載が見直されています。

Word2Vec

大量のテキストデータから得られる単語とその前後に出現するいくつかの単語を、ニューラルネットワークに入力することで単語の意味を表すベクトルを得ることができる「Word2Vec」という手法が、近年注目を集めています。これは「単語の意味はその周辺に出現する単語に依存する」という分布仮説の考え方に基づいたものです。
単語をベクトル化することのメリットの一つは、単語間の類似度を算出できるという点です。添付文書のテキストデータから“十二指腸”、“包装”と類似度の高い単語をWord2Vecでそれぞれ取得してみると、次のような結果が得られます。

“十二指腸”の類似度上位10単語
単語 類似度
胃潰瘍 0.918
潰瘍 0.662
エピリゾール 0.569
メピリゾール 0.549
システアミン 0.524
幽門 0.494
胃炎 0.485
結腸 0.477
消化 0.463
Zollinger 0.450
“包装”の類似度上位10単語
単語 類似度
製品 0.706
アルミピロー 0.677
加速 0.660
PTP 0.624
バラ 0.618
アルミ 0.595
保存 0.589
最終 0.573
取扱い 0.568
取り出し 0.557

単語のベクトル化によって、単語の意味に基づいた加算減算ができるとも言われています。この説明において、度々「王-男+女=女王」という例が用いられます。これは、「“女”にとっての“王”とは何か?」を計算していることを意味します。
これを添付文書に出現する単語を用いて、「代謝-肝臓+腎臓」と「シロップ-水+粉」を例として計算してみたところ、それぞれ次のような結果が得られました。

代謝 - 肝臓 + 腎臓 = 排泄
シロップ - 水 + 粉 = ドライ

“排泄”については、医薬品は体内で主に肝臓に運ばれて代謝され、腎臓で尿となって排泄されるという過程を経ることから、この4つの単語の関係が表現されていると読み取れます。
“ドライ”については、水を加えることでシロップ剤となる粉状の製剤のことをドライシロップと呼ぶことから、こちらも関係式として納得できる結果が得られました。
このWord2Vecに必要なものは、形態素解析された大量の文章データのみで、単語同士の関係を定義することなく単語の意味を扱うことができるため、特に注目を集めています。
更に、Word2Vecを応用した技術として、文書全体をベクトル化する「Doc2Vec」という手法もあり、これにより文書同士の類似度を算出することもできます。

医療分野への応用

医療分野においても、自然言語処理の利活用が多方面に広がりを見せています。
以前から、電子カルテに蓄積された診療記録や膨大な論文から、有益な知見を抽出する試みが行われてきました。自然言語処理技術の進歩に加えて、コンピュータの処理性能の向上によって大量のデータを扱うことができるようになったため、更なる発展が期待されています。その他にも、SNSに投稿された文章から、感染症の発生を推定する試みなどもあります。
最近では、問診時に患者さんから得られた回答を自然言語処理技術により解析する自動問診ソリューションの開発や、認知症の兆候を文章や会話の内容から予測する研究なども行われています。

今後の発展

今回取り上げた技術の他に、注目度が高いものとして「リカレントニューラルネットワーク(RNN: Recurrent Neural Network)」と呼ばれるニューラルネットワーク技術を応用した「sequence-to-sequenceモデル」があります。これは、文章の単語列のように順序を持った系列データから別の系列データを生成するというもので、具体的には、日本語文から英語文を生成する機械翻訳や、質問文から回答文を生成する自動応答への活用が挙げられます。特に、機械翻訳は自然言語処理研究の起源とも言われている重要なテーマの一つであり、今後更なる精度の向上が期待されます。
このRNNや今回紹介したWord2Vecのように、コンピュータの処理性能の向上により、単語間の詳細な意味の関係や構文規則などの言語知識を必要とせず、大量のテキストデータからの学習によって自然言語を扱うアプローチが可能になりました。その一方で、それら言語知識に基づいた従来のアプローチも、これまでと同様に重要な位置づけとして引き続き研究されています。これは、私たちが外国語を習得する時の「実践から学ぶべきか」「文法から学ぶべきか」という視点と似ているように思えます。とりわけ母語については、前者のアプローチが中心であることを考えると、大量の言語データを用いた学習に基づく手法は、大きな可能性を秘めています。今後の自然言語処理技術の更なる発展により、私たちと同じようにコンピュータが自然言語を扱える日は近いのかもしれません。

―参考資料―
自然言語処理概論(サイエンス社)
自然言語処理の基礎(サイエンス社)
入門 自然言語処理(オライリー・ジャパン)
MeCab(https://taku910.github.io/mecab/
CaboCha(https://taku910.github.io/cabocha/

(2018年10月更新)

ページTOPへ