空格注释器问题/一致性

本教程将介绍空格注释器问题/一致性的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

空格注释器问题/一致性 教程 第1张

问题描述

我目前将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"。

好了关于空格注释器问题/一致性的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。