自然言語処理
ー古典的手法から言語モデルまでー
森山 直人
注意
• 私個人の主観に基づく表現が多数あり、
間違っていたらすみません!!
• 概念の理解を最優先としており、数式を排除して
います。そのため一部厳密な定義を割愛しました
2
アジェンダ
• 自然言語とは(5分)
• 古典的な手法(10分)
• word2vec(10分)
• ニューラルネットワーク言語モデル(15分)
3
• 自然言語とは
• 古典的な手法
• word2vec
• ニューラルネットワーク言語モデル(NNLM)
4
自然言語とは?
• つまり、人間の人間による人間のための意味記号の集合体
• 「概念」という摩訶不思議なデータ構造を符号化したもの
• 人間の頭脳がどのようにして処理しているかはまだ研究中
5
逆に自然言語じゃないのは?
• コンピュータはこれじゃないと処理できない
• こっちのほうが論理的
• いろいろ呼び方はあるが、よく「構造化データ」とよばれる
{
"name": "森山",
"sex": "男”
"age": 27,
"language": "python",
}
口語ではなく、要素ごとに存在
し、それぞれの要素同士の関連
を明確に記されている
“森山という男がいて、彼は今年27歳でpythonをつかう”
6
自然言語処理とは
人間だけが処理できる記号の集合体を、何らかの手法で
コンピュータに処理させ、意図するものを出力させる
7
自然言語処理とは
人間だけが処理できる記号の集合体を、何らかの手法で
コンピュータに処理させ、意図するものを出力させる
簡単そうに聞こえるが、機械学習で最も難しい分野
(ビジネス観点で)最大の金脈とも言われている
8
文書を数字化する
コンピュータは数字しか処理できないのであれば、
単純に単語にIDをつけて、数字にすればよいのでは??
9
闇へようこそ!!
10
• 自然言語とは
• 古典的な手法
• word2vec
• ニューラルネットワーク言語モデル(NNLM)
11
単語を数字化する
単語同士の意味に関連性があると同じように、数字化させた
際に近い意味を持つ単語のIDが近く来るようにしたい
(ユークリッド距離が近い)
パソコン
インターネット
プログラミング
アメリカ
ホワイトハウス
ワシントン
ID
近い意味を
持つ単語群
IDが近い
ID 単語
1999 プログラミング
… …
2342 インターネット
… …
2652 パソコン
単語同士
では一定
の関連性
はある
数字(ID)
は近い
12
単語を数字化する
• 日本語の単語は約25万語(広辞苑より)あり、各単語同士の関連
性を1次元の数字順列で表現するのはほぼ不可能
• 曖昧な数字IDは逆にコンピュータの計算を妨げる
13
単語を数字化する
• 日本語の単語は約25万語(広辞苑より)あり、各単語同士の関連
性を1次元の数字順列で表現するのはほぼ不可能
• 曖昧な数字IDは逆にコンピュータの計算を妨げる
とは言え、
計算するには数字化しないと始まらないので、
「意味を伴わないID」をつける方法を考える
14
Bug-Of-Words(BOW)
※ここからベクトル(線形代数)の話が入ります
① 予め、処理する単語の総ユニーク数を算出
② ①の数字を次元としたゼロベクトル配列を用意
③ 各単語の出現順に、その単語が位置が1となるベクトルを付与
パソコン
インターネット
プログラミング
エンジニア
UNIX
CPU
②6次元のゼロベクトル[0, 0, 0, 0, 0, 0]
①6次元
⇒ [1, 0, 0, 0, 0, 0]
⇒ [0, 1, 0, 0, 0, 0]
⇒ [0, 0, 1, 0, 0, 0]
⇒ [0, 0, 0, 1, 0, 0]
⇒ [0, 0, 0, 0, 1, 0]
⇒ [0, 0, 0, 0, 0, 1]
※これの何がうれしいか
• 各ベクトルの値が違うにもかかわらず、
• すべて互いの距離が等しい(ノルム距離)!!
• つまり、独自性を保ちつつ、無駄な相対関係を
持たない
• 機械学習で自然言語以外でもよく使われる
③
15
例)
Bug-Of-Words(BOW)の計算
• 前述のBOW化により、一旦単語を数値化できるようになった
• ただし、単語の意味を計算することはまだできていない
• とりあえず、単語の出現位置や出現回数を元に単語の性質が計算で
きる様になる
16
でも・・・
本質的な意味解析はできてないので、万能なアルゴリズムを
諦め、やりたいことに応じて何らかの計算を行う
• 単語の出現頻度と希少性を考慮し、重要な単語を推定するTF-IDF法(教師なし)
• 予めウォッチする単語を決めて、文章の分類を行うナイーブベイズ法(教師あり)
• 単語の品詞を元に、文脈判定を行うチャンクや構文木法(半教師あり)
これ以外にもたくさんあります(ニーズがあれば別途解説致します!)
17
古典的手法の限界
• 単語の出現位置と回数や品詞だけで考えられており、
結局意味の理解にはつながらない
• ルールベースの処理しかできない
• 長年目覚ましい進歩がない・・・
18
• 自然言語とは
• 古典的な手法
• word2vec
• ニューラルネットワーク言語モデル(NNLM)
19
word2vec
a1
a2
a3
a4
a5
Continuous Bag–of–Words
周囲の単語から中心の単語を予測する
Skip-Gram
中心の単語から周囲の単語を予測する
• 2014年にGoogleより発表され、性能の高さから瞬く間に世界中に広がった
• 文中で連続する5つの単語(シーケンス)をベースに、2つのアルゴリズムで実装
ベースは2つのアルゴリズムで構成
・・・
・・・
20
word2vec-注目すべきデータ構造
• 右図は200次元のベクトルを特別に2次
元にプロットしたもの
• 「中国+北京」のベクトルが「ロシア+モ
スクワ」及びその他の国+首都のベクトル
とかなり近い
• その他、「王様ー男+女=女王」といった
演算ができる
• つまり、ベクトル化さえすれば、広い範囲
の処理が可能に!
• 前述の処理により、単語を任意の次元ベクトルに変換(100〜200次元くらい)
(多次元空間に、単語を埋め込む)
• 単語ベクトル同士で、ベクトル演算が可能(足し引き)
21
word2vec-で完璧か??
• 擬似的に単語の「意味」に繋がる表現ができたとは言え、
まだまだ単語の出現頻度の枠を抜け出せていない
• 時系列的に、文章を捉えることはできない
• 単語ごとの話にとどまっている
22
word2vec-で完璧か??
• 擬似的に単語の「意味」に繋がる表現ができたとは言え、
まだまだ単語の出現頻度の枠を抜け出せていない
• 時系列的に、文章を捉えることはできない
• 単語ごとの話にとどまっている
無数の単語が時系列順に並べられた文章を解析する
手法は無いものか・・・
23
• 自然言語とは
• 古典的な手法
• word2vec
• ニューラルネットワーク言語モデル(NNLM)
24
深層学習(DNN)を用いたアプローチ
• 近年目覚ましい成果を上げている深層学習(ディープニューラル
ネットワーク)を応用
• これにより、これまで手動で設定していた処理の手順を自動化
• 細かいパラメータさえ気にしなければ、結構うまくいく
25
深層学習(DNN)を用いたアプローチ
• 近年目覚ましい成果を上げている深層学習(ディープニューラル
ネットワーク)を応用
• これにより、これまで手動で設定していた処理の手順を自動化
• 細かいパラメータさえ気にしなければ、結構うまくいく
深層学習ってなに???
26
超ざっくり言うと
入力層 隠れ層
出力層
複数の情報を元に、“見解“を得る
• どの要素がそれくらいの重要度を占めるか
• それぞれの要素同士の相関関係はどんなものか
• そもそも与えられた情報で、見解が得られるのか
これらを自動で計算してくれるパワフル
なフレームワーク
※くわしい方は突っ込みたい気持ちを
抑えてください
(多分言いたいこと察しています)
27
さらに、時系列データが扱える
• ニューラルネットワークは様々な種類がある
• リカレントニューラルネットワーク(RNN)だと時系列を処理しやすい
• たとえば、過去の単語列から、次の単語を予測する
y1
h1
x1
y2
h2
x2
y4
h4
x4
y3
h3
x3 x
h
y
:入力層
:隠れ層
:出力層
いつ やるの ? 今でしょ
やるの ? 今でしょ ・・・
28
RNNは過去のデータから、現在のデータを推定
h1
x1
h2
x2
y3
h3
x3
いつ やるの ?
今でしょ
①「いつ」②「やるの」③「?」の3単語がこの順に来
ると次に「今でしょ」が推定される
• 一つの単語の推定には、過去のすべ
ての単語から入力順に計算
• 入力順はすなわち時系列と捉えるこ
とができ、これにより文脈を学習
• 他にも金融情報や音声情報など、時
系列の概念があるものはだいたい適
応可能(原則上)
• ただし、RNNはあくまで概念であり、
実装するにはLSTMと呼ばれる理論
が重要
29
RNNがあれば完璧?
• 残念ながら、まだ不十分
• 確かに単語のみならず、文脈も学習できるようになったが、
結局のところ単語の持つ意味は理解出来ていない
• 意味って何??
30
RNNがあれば完璧?
• 残念ながら、まだ不十分
• 確かに単語のみならず、文脈を学習できるようになったが、
結局のところ単語の持つ意味は理解出来ていない
• 意味って何??
31
RNNがあれば完璧?
• 残念ながら、まだ不十分
• 確かに単語のみならず、文脈を学習できるようになったが、
結局のところ単語の持つ意味は理解出来ていない
•意味って何??
32
ココらへんが、機械学習の限界かも
• 今のところ、機会学習における計算の精度を高める方法はあるが、
意味の表現方法は検討がつかない
• どのような構造化がわからない以上、計算のしようがない
• 結論、まずは人間(脳)の処理について学ぶべき
33
意味の解明を求め、数学・脳科学領域へ広がる
数学分野
• トポロジーアナリティクス
• ベイジアンネットワーク
• 複素ニューラルネット
• etc...
34
脳科学分野
• コネクトーム
• ニューロサイエンス
• 新大脳皮質モデル
• etc...
意味の解明を求め、数学・脳科学領域へ広がる
数学分野
• トポロジーアナリティクス
• ベイジアンネットワーク
• 複素ニューラルネット
• etc...
脳科学分野
• コネクトーム
• ニューロサイエンス
• 新大脳皮質モデル
• etc...
優れたアイディアはたくさん得られたが、なかなか体系立てができない
コンピューターで実装できない・・・
35
戦いはこれからだ・・・
36

自然言語処理