首页 > 解决方案 > 以相同的意图进行 Rasa 多次查找

问题描述

我一直在尝试使用 Rasa NLU 作为酒店预订聊天机器人。我正在尝试提取两个特征,房间类型和房间数量。这是我的 nlu.md 文件

## intent:greet
- hey
- hello
- hi
- good morning
- good evening
- hey there

## intent:goodbye
- bye
- goodbye
- see you around
- see you later

## intent:affirm
- yes
- indeed
- of course
- that sounds good
- correct

## intent:deny
- no
- never
- I don't think so
- don't like that
- no way
- not really

## intent: book_room
- i would like to book a room
- i want a room
- i want to book room
- i would like a room
- i want to have a room
- i want to book
- i would like to book


## intent: book_n_rooms
-  [num_rooms] rooms
-  I would like to book [num_rooms]
-  I want [num_rooms] rooms
-  I need [num_rooms] rooms
-  I want to have [num_rooms] rooms

## intent: room_type
-  I would like a [room_type_name] room
-  Well, I want [room_type_name]
-  I need [room_type_name] rooms
-  I prefer [room_type_name] rooms

## book_room_all_details
-  I would like a [room_type_name] [num_rooms]
-  I would like [num_rooms] of [room_type_name]
-  I want [num_rooms] of [room_type_name]
-  I prefer [room_type_name] [num_rooms]
-  I like [num_rooms] of [room_type_name]
-  book [num_rooms] [room_type_name] rooms
-  I would like to book [num_rooms] [room_type_name]
-  I would like to book [2](num_rooms) [deluxe](room_type_name) rooms
-  I would like to book [3](num_rooms) [deluxe](room_type_name) type rooms
-  I want [1](num_rooms) [simple](room_type_name) room
-  I want [1](num_rooms) [simple](room_type_name) type room
-  I want [2](num_rooms) [simple](room_type_name) rooms
-  book [3](num_rooms) [simple](room_type_name) type rooms
-  book [3](num_rooms) [simple](room_type_name) rooms
-  I would like [5](num_rooms) rooms [deluxe](room_type_name) 
-  I want [5](num_rooms) rooms [deluxe](room_type_name) 
-  I prefer [5](num_rooms) rooms [deluxe](room_type_name) 
-  I prefer [5](num_rooms) rooms [deluxe](room_type_name) 
## regex:num_rooms
- [0-9]+

## lookup:room_type_name
- Simple
- Deluxe
- simple
- deluxe
- SIMPLE
- DELUXE

## intent:bot_challenge
- are you a bot?
- are you a human?
- am I talking to a bot?
- am I talking to a human?

当我输入“预订 2 间豪华客房”时,机器人问我需要多少间客房。意图被错误地分类。我尝试了这个答案RASA NLU: Multiple entity extract from Single intent,但这并没有取得成果。请帮忙。

标签: nlprasa-nlurasa

解决方案


请注意regexlookup被转换为特征。仅仅因为您在查找表中列出“DELUX”并不意味着您的助手总是将其提取为room_type. 另请参阅 Rasa 的文档

我猜你的助手主要是不工作,因为你的NLU数据需要更新:(1)你需要用适当的值替换[num_rooms]和。[room_type_name]Rasa 不会自行替换[num_rooms]为数字。意图下列出的例子应该是正常的句子。(2)book_room_all_details应标记为意图,否则您的助手不知道该意图。

这里更新的 NLU 数据:

## intent:book_room
- i would like to book a room
- i want a room
- i want to book room
- i would like a room
- i want to have a room
- i want to book
- i would like to book


## intent:book_n_rooms
-  [4](num_rooms) rooms
-  I would like to book [1](num_rooms)
-  I want [2](num_rooms) rooms
-  I need [3](num_rooms) rooms
-  I want to have [2](num_rooms) rooms

## intent:room_type
-  I would like a [deluxe](room_type_name) room
-  Well, I want [simple](room_type_name)
-  I need [Simple](room_type_name) rooms
-  I prefer [DELUXE](room_type_name) rooms

## intent:book_room_all_details
-  I would like to book [2](num_rooms) [deluxe](room_type_name) rooms
-  I would like to book [3](num_rooms) [deluxe](room_type_name) type rooms
-  I want [1](num_rooms) [Simple](room_type_name) room
-  I want [1](num_rooms) [simple](room_type_name) type room
-  I want [2](num_rooms) [SIMPLE](room_type_name) rooms
-  book [3](num_rooms) [simple](room_type_name) type rooms
-  book [3](num_rooms) [SIMPLE](room_type_name) rooms
-  I would like [5](num_rooms) rooms [deluxe](room_type_name) 
-  I want [5](num_rooms) rooms [DELUXE](room_type_name) 
-  I prefer [5](num_rooms) rooms [Deluxe](room_type_name) 
-  I prefer [5](num_rooms) rooms [deluxe](room_type_name) 

## regex:num_rooms
- [0-9]+

## lookup:room_type_name
 - Simple
 - Deluxe
 - simple
 - deluxe
 - SIMPLE
 - DELUXE

推荐阅读