最終回である今回は、自然言語処理の代表的な例と動向、AIを使った今後の発展について解説していきます。
最近の自然言語処理動向
AIで用いる自然言語処理の方法は色々ありますが、単語や文書をコンピュータで処理するためには、何らかの形で数値情報に変えます。数値化することにより、単語や文書の関係や特徴を捉えることができるようになり、AIによる解析が行えるようになります。
自然言語処理で改めて注目されているのがベクトル化です。ベクトル化とは、自然言語を「複数の数値の組」で表すことで、文書や単語の関係を表したり、位置情報に見立てたりすることができます。
ベクトル化の方法でよく知られているものに、Bag of Wordsと分散表現があります。どんなものか簡単に見ていきましょう。
- Bag of Words
Bag of Wordsは、文書における単語の出現頻度を用いて数値化する方法です。全ての単語に対して、文書中にその単語が何回出現したか、出現した回数に着目していて、単語の並びは考慮していません。例として、以下の2つの文章を数値化してみましょう。
文章1:「私はハンバーグを料理する」
文章2:「彼はカレーを料理した」
まずは、意味をもつ表現要素の最小単位である形態素で文章を解析し、「私」「彼」「は」「ハンバーグ」「カレー」「を」「料理」「する」に分け、それぞれの出現回数を数えてみます。
以下の表の値が文章1と文章2のBag of Wordsとなります。文書中に存在する単語が含まれている回数をそのまま値として用います。
私 | 彼 | は | ハンバーグ | カレー | を | 料理 | する | した | |
---|---|---|---|---|---|---|---|---|---|
文章1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
文章2 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
2つの文章の合計で見た場合、私:1、彼:1、は:2、ハンバーグ:1、カレー:1、を:2、料理:2、する:1、した:1となります。
出現頻度が多い単語は重要度が高いと仮定し見ていくと、この中で2回ずつ出現する「は」「を」「料理」は重要度が高そうです。ただ、「は」や「を」のような助詞はこれだけでは意味をなさないため、これらの文章では「料理」が特徴になると想像できます。
実際の文書では、より多くの単語と文章があります。単語一つずつを1と0で表して、足し合わせたり、上記のように出現頻度を数値で表したりすることで、文書全体の特徴をベクトル化することができます。
- 分散表現
Bag of Wordsが文書中の単語出現回数を元にベクトル化するのに対して、次に紹介する分散表現は、単語の持つ意味的な情報をベクトル化する方法です。同じような意味や使われ方をする単語は同じような文脈の中に登場するとの仮定や、学習済みのベクトル空間内で単語に座標を与えることで、単語の関連性を数値で表していきます。
これにより、単語同士の意味の近さを計算したり、単語同士の意味を足したり引いたりすることができるようになります。例えば、以下のように単語同士で計算することができます。
「王様」-「男」+「女」=「女王」
この計算式は、「王様」という単語から「男」という単語の持つ概念を引いて「女」という単語の持つ概念を足すと「女王」という単語になる、ということを意味しています。
分散表現における「王様」と「女王」が持つ意味の位置関係のイメージをつかむため、表形式にしてみると、以下のようになります。
権力 | 男性的特徴 | 女性的特徴 | |
---|---|---|---|
王様 | 1 | 1 | 0 |
女王 | 1 | 0 | 1 |
「権力」の項目は、「王様」や「女王」が持つ概念のイメージです。このように数値化することで、単語同士の計算などを可能にしています。
分散表現を用いた手法では、最近はWord2Vecが知られています。Word2Vecは「単語」の概念上の位置関係をベクトル化しますが「文書」の概念上の位置関係を数値化するDoc2vecという手法もあります。
Bag of Wordsや分散表現は、文書や単語の「近い」「遠い」といった距離や関連性を表すことで、例えば「類似度」のように数値で比べることができるようになります。自然言語処理として活用することで、探している文書の発見や、口コミの分析、アンケート回答の仕分けなどに使うことができます。
われわれは、文書の解析において独自に開発したLandscaping(ランドスケ―ピング)という手法を用いています。Landscapingは、今日紹介した方法も駆使しながら、文書全体の構成から特徴を掴んで、軽い処理で文章の類似性を見つけ出せます。
まず、文書全体の中から単語の抽出と品詞の特定を行い、抽出されたそれぞれの単語について目的となる情報に関連性があるかないか、重要度を計算するところがポイントです。次に、文書内にある単語の重要度を集計し、スコアで関連性を示します。スコアが高いものほど、重要となり、大量の文書でも優先順位を付けて素早く調べることができます。
自然言語処理の今後の発展
最近では、お客様の声の分析やコンプライアンス違反チェックなどのために、コールセンターのオペレーターや金融機関などの営業担当とお客さまの通話内容を録音し、その音声データをテキストデータに変換して解析することも増えてきています。音声記録は文字入力と比べて記録が容易ですし、テキストデータだけでなく音声データも活用できれば、より多くのチャンスやリスクを見つけることができます。
ただ、一方で課題もあり、音声認識の精度は日々向上していることは事実ですが、話者の話し方の癖や方言、また記録や通信の環境など様々な事情により、まだまだ認識率は90%前後と言われているのが実情です。認識率95%ぐらいでも以下のように誤変換が多々見受けられます。
せっかく音声データをテキストに変換しても、誤変換が多くて解析できないということであれば意味がないですし、解析するために誤変換されたものを人間が目で見て修正していたのでは、その作業に時間がかかってしまい現実的ではありません。
しかし、先述のLandscapingのように、誤変換されたテキストであっても、誤変換は誤変換のままで解析を可能にする技術も出てきています。誤変換を修正したテキストデータと誤変換がそのままのテキストデータの両方を解析してみたところ、誤変換のまま解析しても精度は下がらないという結果が明らかになっています。
また、文書全体の構成から特徴や重要度を掴む手法は、自然言語だけでなく、プログラミング言語のコード解析でもその有用性が実証されています。
著者紹介
FRONTEO行動情報科学研究所
行動情報科学に基づいたビッグデータ解析および人工知能の研究開発を行っています。自然言語処理、機械学習の適用、アプリケーション開発などを推進し、サービスの運用から得られるユーザー体験を研究開発へとフィードバックすることで、開発のサイクルを加速し、社会に役立つ製品づくりに取り組んでいます。