単語ベクトル入門

spaCyで学ぶNatural Language Processing

Azadeh Mobasher

Principal Data Scientist

単語ベクトル(埋め込み)

 

  • 単語の数値表現
  • Bag of words 法: {"I": 1, "got": 2, ...}

 

  • 旧来手法では意味が分からない:
   I       got      covid   coronavirus
I got covid    1     2     3
I got coronavirus    1     2        4
spaCyで学ぶNatural Language Processing

単語ベクトル

  • あらかじめ決まった次元数
  • 出現頻度類似文脈での他語の有無を考慮

単語ベクトルの例

spaCyで学ぶNatural Language Processing

単語ベクトル

  • 単語ベクトルを作る手法は複数:

    • word2vec、GloVe、fastText、トランスフォーマー系
  • 単語ベクトルの例:

単語ベクトルの例

spaCyで学ぶNatural Language Processing

spaCy の語彙

 

  • 多くの spaCy モデルに含まれる
  • en_core_web_md には 20,000 語・300 次元のベクトル

 

import spacy
nlp = spacy.load("en_core_web_md")
print(nlp.meta["vectors"])
>>> {'width': 300, 'vectors': 20000, 'keys': 514157, 
'name': 'en_vectors', 'mode': 'default'}
spaCyで学ぶNatural Language Processing

spaCy の単語ベクトル

  • nlp.vocab: 語彙(Vocab クラス)へアクセス
  • nlp.vocab.strings: 語彙内の単語IDへアクセス
import  spacy
nlp = spacy.load("en_core_web_md")
like_id = nlp.vocab.strings["like"]
print(like_id)
>>> 18194338103975822726
  • .vocab.vectors: モデルや単語のベクトルを、そのIDで取得
print(nlp.vocab.vectors[like_id])
>>> array([-2.3334e+00, -1.3695e+00, -1.1330e+00, -6.8461e-01, ...])
spaCyで学ぶNatural Language Processing

Ayo berlatih!

spaCyで学ぶNatural Language Processing

Preparing Video For Download...