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
相关产品推荐
相关产品推荐

