Spacy 中德语词形还原的惊人结果

Surprising results for German lemmatization in Spacy

我想在 Spacy 中使用德语的词形还原器,但我对结果感到非常惊讶:

import spacy

nlp = spacy.load("de_dep_news_trf")
[token.lemma_ for token in nlp('ich du er sie mein dein sein ihr unser')]

给予

['ich', 'du', 'ich', 'ich', 'meinen', 'mein', 'mein', 'mein', 'sich']

我不确定我是否可以使用它:

vielen dank für deinen sehr guten tweet

变成

viel danken für mein sehr gut tweet

这明显改变了句子的意思。

这是预期的吗?我是否缺少 tuning/configuration 会使词形还原器不那么“激进”?

当前 (v3.1) 默认的德语词形还原器不是很好。这是一个非常简单的查找词形还原器,在其查找 table 中有一些有问题的条目,但是考虑到德国预训练管道的许可限制,没有其他好的选择。 (我们确实有一些关于统计词形还原器的内部工作正在进行中,但我不确定它何时会发布。)

如果引理对您的任务很重要,这里最好的建议是使用不同的词形还原器。根据您的任务/大小/速度/许可证要求,您可以考虑使用来自 spacy-stanza or a third-party library like spacy-iwnlp 的德国模型(目前仅适用于 spacy v2,但可能不难更新到 v3)。