spaCy 分词器 LEMMA 和 ORTH 异常不起作用

use*_*241 6 nlp spacy

我正在遵循书中第 2 章中的示例:使用 Python 和 spaCy 进行的自然语言处理,作者:Yuli Vasiliev 2020

在此输入图像描述

该示例假设产生词形还原输出:

[“我”、“是”、“飞行”、“前往”、“弗里斯科”]

['-PRON-', '是', '飞', '飞往', '旧金山']

我收到以下错误:

nlp.tokenizer.add_special_case(u'Frisco', sf_special_case)
  File "spacy\tokenizer.pyx", line 601, in spacy.tokenizer.Tokenizer.add_special_case
  File "spacy\tokenizer.pyx", line 589, in spacy.tokenizer.Tokenizer._validate_special_case
ValueError: [E1005] Unable to set attribute 'LEMMA' in tokenizer exception for 'Frisco'. Tokenizer exceptions are only allowed to specify ORTH and NORM.
Run Code Online (Sandbox Code Playgroud)

有人可以建议解决方法吗?我不确定 SpaCy 版本 3.0.3 是否已更改为不再允许 LEMMA 成为标记器异常的一部分?谢谢!

小智 2

请参阅https://github.com/explosion/spaCy/issues/7014

import spacy

nlp = spacy.load('en_core_web_sm')

nlp.get_pipe("attribute_ruler").add([[{"TEXT": "Frisco"}]], {"LEMMA": "San Francisco"})

doc = nlp(u'I am flying to Frisco and after to frisco')    
print(['token:%s lemma:%s' % (t.text, t.lemma_) for t in doc])
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但请在这里用文字简洁地解释这个问题,而不仅仅是通过链接。SO 上的答案文本会被索引以进行搜索、检索、相似性、查找欺骗等;链接没有。*“SpaCy 3.0 中的收缩引理已发生变化...一些代码损坏;他们计划在 v3.1 模型中进行一些更新以部分修复”* (2认同)