如何在使用Spacy作为管道时提高Rasa NLU的精度? [英] How to improve accuracy of Rasa NLU while using Spacy as pipeline?

查看:38
本文介绍了如何在使用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之外,您还需要添加一些其他单词。

是的,Spacy可以在您包括的单词之外泛化,但如果您针对该意图的所有训练数据都使用单词delete,则您正在训练它只接受该单词或该单词极其重要。如果您要删除更多相似单词,则会对其进行培训,以允许使用相关单词。

就TensorFlow管道而言,在您使用它们之前,它甚至不知道单词的存在,因此最好包括至少删除一次,这样它就可以构建连接删除和删除(以及取消、调用、删除等)的矢量

另外,您当前使用的是小间距语言模型,一旦获得更多训练数据,尝试较大的语言模型可能会很有用。

这篇关于如何在使用Spacy作为管道时提高Rasa NLU的精度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆