You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spacy中重复词的分词规则及词向量生成疑问

SpaCy中重复词汇的分词与词向量生成问题

关于分词的说明

  • SpaCy会对文档中每一次出现的词汇生成独立token,哪怕词汇完全重复。你示例里的两个"He"是文本中两次独立的出现,因此会生成两个id、起止位置都不同的token,这和你输出的结果一致。

关于词向量的说明

这两个"he" token的词向量情况分两种:

  • 静态词向量模型(如en_core_web_sm):同一个词汇(或同一lemma)的所有token共享预训练好的静态向量,因此两个"he"的token会得到完全相同的词向量。
  • Transformer模型(如en_core_web_trf):这类模型生成的是上下文相关的动态词向量。哪怕是同一个词汇,模型会根据它所在的具体上下文计算向量。你示例中两个"He"的上下文高度相似,向量会非常接近,但本质是各自独立计算的结果,并非共享同一静态向量。

示例代码

from spacy.tokens import Doc
import json
s = "He didn't want to pay $20 for this book. He didn't want to eat pizza also!"
doc = nlp(s)
doc_json = doc.to_json()
json_formatted_str = json.dumps(doc_json, indent=2)

mytokens = json.loads(json_formatted_str)['tokens']
for token in mytokens:
  if(token['lemma']=='he'):
    print(token)

输出结果

{'id': 0, 'start': 0, 'end': 2, 'tag': 'PRP', 'pos': 'PRON', 'morph': 'Case=Nom|Gender=Masc|Number=Sing|Person=3|PronType=Prs', 'lemma': 'he', 'dep': 'nsubj', 'head': 3}
{'id': 12, 'start': 41, 'end': 43, 'tag': 'PRP', 'pos': 'PRON', 'morph': 'Case=Nom|Gender=Masc|Number=Sing|Person=3|PronType=Prs', 'lemma': 'he', 'dep': 'nsubj', 'head': 15}

内容的提问来源于stack exchange,提问作者Satya R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:23:29