我正在尝试使用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
,我将获得正确的意图和信心,如果尝试使用_firstname
或first_name
,我将得到以下结果:
first_name
{
"intent": {
"name": null,
"confidence": 0.0
},
"entities": [],
"intent_ranking": [],
"text": "first_name"
}
答案 0 :(得分:1)
您之所以得到0的信任正是因为您在单词中使用了下划线。训练数据中未使用单词first_name
,因此该单词对您的模型而言是陌生的。这就是为什么它无法预测该词的任何原因。 (默认情况下,它使用whitespace tokenizer
,因此单词只能由空格标记。)
因此,要解决您的问题,只需不要在单词中使用下划线,否则您可以编辑空格标记生成器以按空格和下划线标记。
希望有帮助。