首页 > 解决方案 > 如何使用 univ_pos 参数实现 spacy lemmatizer

问题描述

tokens = [The, wage, productivity, nexus, the, process, of, development,....]

我正在尝试使用 SpaCy 的 Lemmatizer 将令牌列表转换为它们的词形化形式。是我正在使用的文档。

我的代码:

from spacy.lemmatizer import Lemmatizer
from spacy.lookups import Lookups
lookups = Lookups()
lookups.add_table("lemma_rules")
lemmatizer = Lemmatizer(lookups)
lemmas = []
for tokens in filtered_tokens:
    lemmas.append(lemmatizer(tokens))

错误信息

TypeError                                 Traceback (most recent call last)
 in 
      7 lemmas = []
      8 for tokens in filtered_tokens:
----> 9     lemmas.append(lemmatizer(tokens))

TypeError: __call__() missing 1 required positional argument: 'univ_pos'

我在这个讨论中理解了 SpaCy 的 Lemmatizer 是如何工作的,并在理论上理解了它。但是,我不确定如何实现这一点。

我怎样才能找到univ_pos我的代币?

标签: pythonspacylemmatization

解决方案


这是一个改编自 spaCy 文档的示例...

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for token in doc:
    print(token.text, token.pos_, token.lemma_)

这里.pos_为您提供了您在原始问题中寻找的通用依赖词类。

但是,标记、词形还原等需要完整的组件管道。有一个用于添加pos数据的标记器。如果 Tokenizer 是您管道中的唯一功能,那么您可能不会拥有该pos信息。


推荐阅读