为什么我的 Fallback Intent 和 FallbackClassifier 在 Rasa 中不起作用?

Why is my Fallback Intent and FallbackClassifier not working in Rasa?

我在 config.yml 文件的管道中提到过,我将使用 FallbackClassifier。

所以我的代码看起来像:

language: en
pipeline:
  - name: FallbackClassifier
    threshold: 0.7
    ambiguity_threshold: 0.1

但是,当我尝试 运行 时收到此错误:

InvalidConfigException: The pipeline configuration contains errors. The component 'FallbackClassifier' requires 'IntentClassifier' to be placed before it in the pipeline. Please add the required components to the pipeline.

您的 FallbackClassifier 需要 IntentClassifier,它还需要 Featurizer,而 Featurizer 需要 Tokenizer。

因此,让您的 FallbackClassifier 工作的最简单方法是在您 运行 rasa init 上获取 config.yml 文件CLI。复制粘贴 config.yml 代码并从 "pipeline".

的属性中删除所有“#”注释行

因此您的管道代码应如下所示:

language: en

pipeline:
# # No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model.
# # If you'd like to customize it, uncomment and adjust the pipeline.
# # See https://rasa.com/docs/rasa/tuning-your-model for more information.
  - name: WhitespaceTokenizer
  - name: RegexFeaturizer
  - name: LexicalSyntacticFeaturizer
  - name: CountVectorsFeaturizer
  - name: CountVectorsFeaturizer
    analyzer: char_wb
    min_ngram: 1
    max_ngram: 4
  - name: DIETClassifier
    epochs: 100
    constrain_similarities: true
  - name: EntitySynonymMapper
  - name: ResponseSelector
    epochs: 100
    constrain_similarities: true
  - name: FallbackClassifier
    threshold: 0.7
    ambiguity_threshold: 0.1

现在你的 FallbackClassifier 应该可以正常工作了!

当 IntentClassifier 对意图没有信心时,FallbackClassifier 介入。所以你不能在不使用 Intentclassifier 的情况下使用 Fallback 分类器。

您可以从中选择一个 IntentClassifier https://rasa.com/docs/rasa/components/#intent-classifiers

最简单的 Intentclassifier 是“KeywordIntentClassifier”,但如果希望机器人进行复杂的对话,它就不是一个很好的选择。

这是使用回退分类器的工作流水线示例:

language: "en"

pipeline:
 - name: "WhitespaceTokenizer"
 - name: "CountVectorsFeaturizer"
 - name: "DIETClassifier"
 - name: FallbackClassifier
    threshold: 0.7
    ambiguity_threshold: 0.1