词向量简介

使用 spaCy 的自然语言处理

Azadeh Mobasher

Principal Data Scientist

词向量(嵌入)

 

  • 词的数值表示
  • 词袋法:{"I": 1, "got": 2, ...}

 

  • 早期方法无法理解含义
句子    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...