如何使节词形还原器仅返回引理而不是字典?

问题描述 投票:0回答:1

我正在实现 stanza 的词形还原器,因为它可以很好地处理西班牙语文本,但是词形还原器会重新调整整个字典,其中包含 ID 和我暂时不关心的其他特征。我检查了管道中的“处理器”,但我似乎没有找到示例,我只是通过词形还原文本而不是字典来获得意义。

这就是我所拥有的:

stanza.download('es', package='ancora', processors='tokenize,mwt,pos,lemma', verbose=False)
stNLP = stanza.Pipeline(processors='tokenize,mwt,pos,lemma', lang='es', use_gpu=True)
stNLP('me hubiera gustado mas “sincronia” con la primaria')

输出:

[
  [
    {
      "id": 1,
      "text": "me",
      "lemma": "yo",
      "upos": "PRON",
      "xpos": "pp1cs000",
      "feats": "Case=Dat|Number=Sing|Person=1|PrepCase=Npr|PronType=Prs",
      "start_char": 0,
      "end_char": 2
    },
....

当然,当我尝试对我的文档进行词形还原时,它会返回很多我目前不需要的文本,我怎样才能获得词形?我知道我可以从字典中提取这个单词,但这需要很多时间,我想避免的是给这个函数带来额外的工作。

提前谢谢您。

python nlp stanford-nlp lemmatization
1个回答
0
投票

我还不完全确定,但从我所看到的来看,Stanza 的管道似乎生成了一个嵌套结构,其中每个句子都是一个标记列表,每个标记类似于一个包含各种属性(例如 ID)的字典、文本、引理等等。

通过导航这个嵌套结构可以很容易地提取引理。这就是我的做法。

stanza.download('es', package='ancora', processors='tokenize,mwt,pos,lemma', verbose=False)
stNLP = stanza.Pipeline(processors='tokenize,mwt,pos,lemma', lang='es', use_gpu=True)
doc = stNLP('me hubiera gustado mas “sincronia” con la primaria')
lemmas = [word.lemma for t in doc.iter_tokens() for word in t.words]

注意:截至撰写本文时,正在使用的 Stanza 版本为 stanza==1.7.0

© www.soinside.com 2019 - 2024. All rights reserved.