如何在使用Spacy作为管道时提高Rasa NLU的精度? [英] How to improve accuracy of Rasa NLU while using Spacy as pipeline?
本文介绍了如何在使用Spacy作为管道时提高Rasa NLU的精度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Spacy文档中提到,它在特征化中使用vector similarity,因此在分类中使用
。例如,如果我们测试的句子不在训练数据中,但具有相同的含义,那么它应该按照与训练句子分类相同的意图进行分类。
但这并没有发生。 假设训练数据是这样的-
## intent: delete_event
- delete event
- delete all events
- delete all events of friday
- delete ...
现在,如果我测试remove event
,则它不会被归类为delete_event
,而是落入其他目的。
supervised_embeddings
,还更改了Spacy管道的组件。但这个问题仍然存在。
我不想为remove...
文本创建培训数据,因为根据Spacy的文档,它应该得到Spacy的支持。
我没有包含delete...
句子的其他意图。
RASA中的配置文件-
language: "en_core_web_sm"
pipeline:
- name: "SpacyNLP"
- name: "SpacyTokenizer"
- name: "SpacyFeaturizer"
- name: "RegexFeaturizer"
- name: "SpacyEntityExtractor"
- name: "CRFEntityExtractor"
- name: "EntitySynonymMapper"
- name: "SklearnIntentClassifier"
policies:
- name: MemoizationPolicy
- name: KerasPolicy
- name: MappingPolicy
推荐答案
这可能是一个过头的答案,但您可能只是需要更多的培训数据。这可能意味着,除了delete
之外,您还需要添加一些其他单词。
delete
,则您正在训练它只接受该单词或该单词极其重要。如果您要删除更多相似单词,则会对其进行培训,以允许使用相关单词。
就TensorFlow管道而言,在您使用它们之前,它甚至不知道单词的存在,因此最好包括至少删除一次,这样它就可以构建连接删除和删除(以及取消、调用、删除等)的矢量
另外,您当前使用的是小间距语言模型,一旦获得更多训练数据,尝试较大的语言模型可能会很有用。
这篇关于如何在使用Spacy作为管道时提高Rasa NLU的精度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文