空格注释器问题/一致性
问题描述
我目前将Spacy用于NLP目的(主要是词例化和标记化)。使用的模型是en-core-web-sm(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中存储的结果可以是[‘正在处理’,‘茶’,‘叶’]或[‘正在处理’,‘茶’,‘叶’]。
似乎结果并不一致。我不能更改我的输入/查询(不可能为上下文添加另一个单词),我真的需要每次都找到相同的结果。我认为可能是模型的加载问题。
为什么结果不同?我可以每次都以"相同"的方式加载模型吗?对于不明确的查询,我是否错过了某个参数才能获得相同的结果?
感谢您的帮助
解决方案
Spacy团队对该问题进行了分析,并提出了解决方案。 修复方法如下:https://github.com/explosion/spaCy/pull/3646
基本上,当应用词汇化规则时,使用集合来返回引理。因为集合没有顺序,所以返回的引理可能会在不同的python会话之间更改。
例如,在我的例子中,对于名词"叶子",可能的词条是"叶子"和"叶子"。在没有排序的情况下,结果是随机的-它可以是"Leave"或"Leaf"。
相关文章