Spacy lemmatizer问题/一致性

2021-01-26 06:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在将spaCy用于NLP目的(主要是lemmatization和tokenization)。使用的模型是en-corewebsm(2.1.0)。在

运行以下代码从查询中检索单词“cleaned”的列表

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp(query)
list_words = []
for token in doc:
    if token.text != ' ':
        list_words.append(token.lemma_)

但是我在运行这段代码时面临一个主要问题。 例如,当查询为“茶叶加工”时。 存储在list_words中的结果可以是['processing'、'tea'、'leaf']或['processing'、'tea'、'leave']。在

结果似乎并不一致。我不能更改我的输入/查询(不可能为context添加另一个单词),我确实需要每次都找到相同的结果。我认为模型的加载可能是问题所在。在

为什么结果不同?我可以每次都以“相同”的方式加载模型吗?我是否遗漏了一个参数,以获得模棱两可的查询结果?在

谢谢你的帮助

1条回答
网友
1楼 ·

spaCy小组对这个问题进行了分析,他们想出了解决办法。 修复方法如下:https://github.com/explosion/spaCy/pull/3646

基本上,当应用引理规则时,使用一个集合来返回引理。由于集合没有顺序,返回的引理可能会在python会话之间发生变化。在


例如,在我的例子中,对于名词“leaves”,潜在的引理是“leave”和“leaf”。没有排序,结果是随机的-可以是“leave”或“leaf”。在

相关问题