自然言語処理に入門します
自然言語(Natural Language)・・普段使っている言葉 柔らかい,曖昧
マシン(機械)語・・0110111001 硬い、厳格
自然言語処理目的
「コンピューターに人間の言葉を理解させる」
つまり、コンピューターが言語を 1 理解し 2話す(出力する) までの過程を作る
#自然言語処理の概要
言葉は「単語」によって構成される。
「単語の意味」をうまく捉えた表現方法について考える。
3つの表現方法
DeepLearing 登場以前
1 シソーラス(thesaurus)
2 カウントベース
DeepLearing 登場後 ※今回は記載しない
(3 推論ベース(word2vec))
####1 シーソラス
・辞書的に単語の意味を定義する。
・類語辞書 'car' = 'auto' 'automobile' 'machine' 'motor-vehicle'
上位と下位の関係性によって階層的に分別される
最有力シソーラス WorldNet
課題
言葉は変化する、柔軟なもの
→辞書作りを人の手でやると大変、エンドレス・・・。
####2 カウントベース
コーパス (目的を持って集められた)大量のテキストデータ
<カウントベースとは>
周囲の単語をカウントし、文脈から意味を判断する手法。
<カウントベースの目的>
コーパスから自動的に、効率よくエッセンスを抽出する。
(コーパスを使って単語の意味を抽出する)
カウントベースを使う→単語をベクトルで表すことができる
Qなぜベクトル表現するのか?
A 数値化することで、コンピューターが理解できる厳密な定義をできるから
<ex 色の表現 >
1 コバルトブルー、シンクレッド、ダークブラウン・・・・
色の数だけ異なる名前を定義する
2 RGB 色を3次元のベクトルとして表す 【色のベクトル表現】
色をより正確・厳密に定義できる
・・・同様のことを、単語にも適応する
単語の意味をベクトルで表現する
自然言語処理において、分散表現と呼ばれる。
「単語の意味は周囲の単語によって構成される」→分布仮説という
つまり、文脈(コンテキスト)により単語の意味は定められる。
コンテキストのサイズ「ウィンドサイズ」という
<流れ 単語をベクトル化→ ベクトルの類似度を計測→ 次に来る言葉を統計的に選ぶ>
ベクトルの類似度は、コサインの類似度を計測することで求める
”コサイン類似度”・・・「2つのベクトルがどれだけ同じ方向を向いているか」を表す。
2つの直線が逆向き コサイン類似度 −1
2つの直線が同じ向き コサイン類似度 1
ノルム・・「ベクトルの大きさ」=”2点間の距離”を表す。
L1 ノルム ・・マンハッタン距離 横+縦でしか表せない距離
L2 ノルム ・・斜め(最短)で表した場合の距離
####形態素解析
形態素とは、 言葉が意味を持つまとまりの単語の最小単位のことです。
形態素解析とは、私たちが普段生活の中で一般的に使っている言葉、つまり「自然言語」を形態素にまで分割する技術のことです。
word2vec
word2vecは、大量のテキストデータを解析し、各単語の意味をベクトル表現化する手法
単語をベクトル化することで、
・単語同士の意味の近さを計算
・単語同士の意味を足したり引いたり
例えば、word2vecにより『タコ』、『イカ』、『赤い』、『白い』という言葉を以下のようにベクトル化できたりします。
・タコ (0.4,0.1,0.9,0.4)
・イカ (0.5,0.2,0.3,0.4)
・赤い (0.1,0.0,0.8,0.2)
・白い (0.4,0.1,0.2,0.3)
『タコ』、『イカ』の距離を計算すると、結構近いところにありそうだ。意味も近いのでは?
『タコ』 - 『赤い』 + 『白い』 ≒ 『イカ』 になる。のようなイメージ