詞向量入門

使用 spaCy 的自然語言處理

Azadeh Mobasher

Principal Data Scientist

詞向量(embeddings)

 

  • 單字的數值表示
  • 詞袋法:{"I": 1, "got": 2, ...}

 

  • 舊方法無法理解語意
Sentences    I       got      covid   coronavirus
I got covid    1     2     3
I got coronavirus    1     2        4
使用 spaCy 的自然語言處理

詞向量

  • 預先定義的維度數
  • 同時考量詞頻與在相似語境其他詞的出現

詞向量範例

使用 spaCy 的自然語言處理

詞向量

  • 產生詞向量的多種方法

    • word2vec、GloVe、fastText 與以 transformer 為基礎的架構
  • 詞向量範例:

詞向量示意

使用 spaCy 的自然語言處理

spaCy 詞彙庫

 

  • 許多 spaCy 模型都包含它。
  • en_core_web_md20,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 的自然語言處理

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 的自然語言處理

一起來練習吧!

使用 spaCy 的自然語言處理

Preparing Video For Download...