読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】単語を数字にする方法、ワンホット・BoW・n-gram・TF-IDF を同じ例で比べたい【G検定】

12レスカテゴリ:AI・機械学習
1: 名無しさん

文章を機械学習に入れるには数字にせなあかんのは分かる。ワンホット・BoW・n-gram・TF-IDF、それぞれどう数字にしてるん?

2: 名無しさん

前提のおさらい。自然言語処理では、まず形態素解析などで文を語に分ける。ここから先は、分けた語をどう数字にするか

3: 名無しさん

>>1
ワンホットは、語彙の数だけ並べた0の列のうち、その語の場所だけ1にする
語彙が「猫・犬・好き」の3語なら、猫 = (1, 0, 0)、犬 = (0, 1, 0)、好き = (0, 0, 1)

4: 名無しさん

>>3
それやと、猫と犬が似てるかどうかが出んやろ。どの2語をとっても内積は0や

5: 名無しさん

>>4
そう、ワンホットは語どうしの近さを表せん。しかも語彙が1万語なら、1万個のうち1つだけ1の、ほとんど0の長いベクトルになる

6: 名無しさん

>>1
BoW(Bag of Words)は、文書の中で各語が何回出たかを数えて並べる。語の順番は捨てる
「猫が好き、猫は好き」なら(猫, 犬, 好き)=(2, 0, 2)

7: 名無しさん

>>6
順番を捨てたら「犬が猫を追う」と「猫が犬を追う」が同じになるやん

8: 名無しさん

>>7
それを少し補うのがn-gram。となり合うn個の語のまとまりを1つの単位として数える
2語ずつ(バイグラム)なら、「犬が/が猫/猫を」と「猫が/が犬/犬を」は別のまとまりになって、区別できる
そのかわり、まとまりの種類が爆発的に増える

9: 名無しさん

TF-IDFは、BoWの回数に「その語がどれだけ珍しいか」を掛ける

は文書の数、df はその語が出てくる文書の数

10: 名無しさん

>>9
文書が3つで計算してみる
全部の文書に出る「の」:。どれだけ出ても重みは0
2つに出る「猫」:
1つだけに出る「量子」:。その文書の特徴を表す語として重くなる

11: 名無しさん

>>10
どこにでも出る語の重みを下げて、その文書らしい語を上げるわけか。検索で、質問と文書の近さをコサイン類似度で測るときによく使われる

12: 名無しさん

>>11
どれも、語の意味の近さは表せんのは同じ。「車」と「自動車」は別の列になる。そこを解決するのが、語を短い数字の列で表す分散表現

管理人のひとこと