【发布时间】:2021-11-29 14:28:40
【问题描述】:
我不断收到标题中的错误消息,我束手无策。
正式。 Google 没有显示与此短语匹配的内容:“无法将零标记的模式添加到匹配器”。当我在 Explosion 的支持页面上搜索帮助时,我也找不到任何参考。
我留下了信息请求。那里。它包含一些附加信息,这些信息引用了之前似乎与此处无关的帖子。
But, here is the link if you wish to review it.
您能帮我解释一下错误信息吗?
并解释我可能如何解决它?
问题?如果我使用他们的 food_patterns.jsonl 文件运行我的代码(如下所示),它应该可以正常工作。如果我使用我的 food_patterns_rp.jsonl 文件运行它,我会在标题中收到错误消息。尽管我在这些文件的格式中没有发现任何视觉差异。
以下是相关代码:
nlp = spacy.load("en_core_web_lg")
ruler = nlp.add_pipe("entity_ruler")
ruler.from_disk("food_patterns_rp.jsonl")
print("This is the decoded recipe:")
print("")
doc = nlp(clean_recipe)
for ent in doc.ents:
print(ent.text, ent.label_)
简而言之,我的应用旨在识别烹饪食谱中的成分并返回食谱的营养概况。但我无法创建一个有效的“模式”文件(包含大型(10,000 多个)成分字典的 JSONL 文件)。
下面的屏幕截图显示了整个 Traceback 消息,但最相关的部分如下所示:
文件“spacy\matcher\matcher.pyx”,第 118 行,在 spacy.matcher.matcher.Matcher.add ValueError: [E012] 无法添加 零标记匹配器的模式。键:INGRED
我假设没有人有时间查看我的 JSONL 模式文件。
但这里是工作模式文件中的一个示例:
{"label":"INGRED","pattern":[{"lower":"olive"},{"lower":"oil"}]}
与我的相应样本:
{"label": "INGRED", "pattern": [{"lower": "olive"}, {"lower": "oil"}]}
除了一些额外的空格,我能找到的这些文件的格式确实没有区别。
提前谢谢你。我欢迎所有真诚的反馈
罗伯特
【问题讨论】:
-
听起来您用来生成模式列表的任何代码都存在问题,并且您在某处创建了模式类似于
"pattern":[]的东西 - 它是空的。 Matcher 无法匹配空模式,这就是您的错误的含义。