首页 > 解决方案 > 如果单词中有下划线,如何修复 Rasa Nlu Confidence 给 0?

问题描述

我正在尝试使用 构建简单的聊天机器人应用程序Rasa,但如果单词中有下划线,我的机器人会给出信心 0。

下面是我的 config.yml 配置:

language: en  
pipeline: supervised_embeddings  
policies:  
  - name: KerasPolicy  
  #- name: MappingPolicy  
  #- name: MemoizationPolicy  
  #- name: FallbackPolicy  

nlu.md 配置:

## intent:name
- name
- nmae
- nme
- what is my name?

## intent: firstname
- firstName
- FName
- first name

## intent: gender
- gender
- sex
- gnder
- gendr
- sx

## intent: lastname
- lastName
- lname
- surname
- lstnme
- lstname

## intent: username
- userName
- uname
- usrnme
- usernme
- userid

如果我通过firstname了,我将获得正确的意图和信心,如果我尝试_firstnamefirst_name我得到以下结果:

first_name
{
  "intent": {
    "name": null,
    "confidence": 0.0
  },
  "entities": [],
  "intent_ranking": [],
  "text": "first_name"
}

标签: rasa-nlurasa-corerasa

解决方案


正是因为您在单词中使用了下划线,所以您的置信度为 0。该词first_name尚未在您的训练数据中使用,因此该词对您的模型来说是陌生的。这就是为什么它不能预测该词的任何内容。(默认情况下,它使用 a whitespace tokenizerso 单词仅由空格标记。)

因此,要解决您的问题,请不要在单词中使用下划线,或者您可以编辑空格标记器以按空格和下划线进行标记。

希望有帮助。


推荐阅读