如何处理rasa nlu数据不平衡问题?

时间:2019-10-19 10:12:54

标签: embedding rasa-nlu rasa-core rasa imbalanced-data

现在我有12种意图可以识别,但是每个意图的数据量都不一致,像开会设置一样,提醒这些意图,数据量将成千上万。但是像问候一样,感谢您的这种意图,数据样本很少,也许只有几十个。

如何处理此数据不平衡问题?

我的config.yml文件内容如下:

language: en

pipeline:
  - name: "WhitespaceTokenizer"
  - name: "RegexFeaturizer"
  - name: "CountVectorsFeaturizer"
    analyzer: char_wb
    min_ngram: 2
    max_ngram: 5
    stop_words: "english"
  - name: "CRFEntityExtractor"
  - name: "extractor.regex.RegexEntityExtractor"
  - name: "EmbeddingIntentClassifier"
    epochs: 100
    num_neg: 2
  - name: "DucklingHTTPExtractor"
    url: "http://localhost:8000"
    dimensions: ["time", "duration", "phone-number", "distance"]

policies:
  - name: MemoizationPolicy
  - name: EmbeddingPolicy
    epochs: 20
  - name: FormPolicy
  - name: MappingPolicy
  - name: FallbackPolicy
    fallback_action_name: "action_default_fallback"

2 个答案:

答案 0 :(得分:1)

我不知道我是否正确理解了您的问题。据我了解,您不必担心诸如greet,拒绝拥有很少数据(示例)而其他拥有数千数据(示例)的意图。

当您尝试处理多个意图并且那些意图以很小的方式彼此不同时,就会出现问题。在这种情况下,如果您不向RASA提供正确和正确的数据,则会造成混淆,并可能输出错误。您应该担心如何针对每种意图使这些数据有所不同,并减少RASA的混乱,以便获得正确的输出。

答案 1 :(得分:0)

这是Rasa文档,希望您能得到所需的内容。

如果类别失衡很大,例如,如果您有很多针对某些意图的训练数据而对于其他意图却只有很少的训练数据,则分类算法通常效果不佳。为了缓解此问题,rasa的supervised_embeddings管道使用了平衡的批处理策略。