Nlp spaCy标记符引理和ORTH异常不起作用

Nlp spaCy标记符引理和ORTH异常不起作用,nlp,spacy,Nlp,Spacy,我遵循Yuli Vasiliev 2020的《Python和spaCy的自然语言处理》一书第2章中的一个例子 假设该示例生成柠檬化输出: ['I'、'am'、'flying'、'to'、'Frisco'] ['-PRON-','be','fly','to','San Francisco'] 我得到以下错误: nlp.tokenizer.add_special_case(u'Frisco', sf_special_case) File "spacy\tokenizer.pyx&qu

我遵循Yuli Vasiliev 2020的《Python和spaCy的自然语言处理》一书第2章中的一个例子

假设该示例生成柠檬化输出:

['I'、'am'、'flying'、'to'、'Frisco']

['-PRON-','be','fly','to','San Francisco']

我得到以下错误:

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.
有人能建议一个解决办法吗?我不确定SpaCy版本3.0.3是否已更改为不再允许引理成为标记器异常的一部分?谢谢


是的,这是。为了澄清这一点,spaCy v3.0在不到一个月前发布时做了更改。这本书最有可能使用spaCy v2(我猜是v2.2或v2.3,希望作者在某个地方提供准确的版本),因此请降级到spaCy v2来运行这些示例,例如,
pip-install-spacy==2.2.4
pip-install-spacy==2.3.5
。感谢您的澄清和建议。谢谢,但请在此处用文字简要解释问题,而不仅仅是通过链接。答案的文本在这里,以便为搜索、检索、相似性、重复查找等建立索引。;链接不会。“SpaCy 3.0改变了收缩的引理…一些代码中断;他们计划在v3.1模型中进行一些更新以部分修复”
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])