现在我有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"
我不知道我已经正确理解了你的问题。据我了解,您不必担心诸如greet,拒绝拥有很少数据(示例)而其他拥有数千数据(示例)的意图。
当您尝试处理多个意图并且这些意图彼此之间的差异非常小时,就会出现问题。在这种情况下,如果您不向RASA提供正确和正确的数据,则会造成混淆,并可能产生错误的输出。您应该担心如何针对每种意图使这些数据不同,并使RASA减少混乱,以便获得正确的输出。
这里是Rasa文档,希望您能获得所需的东西。
如果类别失衡很大,例如,如果您有很多针对某些意图的训练数据而很少有针对其他意图的训练数据,则分类算法通常效果不佳。为了缓解此问题,rasa的supervised_embeddings管道使用了平衡的批处理策略。