如何在使用 Spacy 作为管道时提高 Rasa NLU 的准确性?
How to improve accuracy of Rasa NLU while using Spacy as pipeline?
在 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 应该支持它。
我没有其他包含句子 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 语言模型,一旦获得更多训练数据,尝试使用较大的语言模型可能会有用。
在 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 应该支持它。
我没有其他包含句子 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 语言模型,一旦获得更多训练数据,尝试使用较大的语言模型可能会有用。