我正在尝试使用rasa nlu和rasa core开发一个聊天机器人。但是我没有获得如何使用lookup_tables进行实体提取的rasa_nlu链接。我已经通过(http://blog.rasa.com/improving-entity-extraction/)链接,但是没有得到。 lookup_table应该如何用于提取实体?
答案 0 :(得分:1)
要求:
如果要使用查找表,请确保:
在您的训练数据中
要使用查找表,您可以直接在训练数据中定义它们,例如:
## intent:check_balance
- what is my balance <!-- no entity -->
- Could I pay in [yen](currency)? <!-- entity matched by lookup table -->
## lookup:currency <!-- lookup table list -->
- Yen
- USD
- Euro
或者您可以将它们写在文本文件中:
Yen
USD
Euro
然后将文本文件的路径包括在您的训练数据中:
## intent:check_balance
... like before
## lookup:food
<path to your look up table text file>.txt
接受我可以用欧元付款吗?之类的输入,然后Rasa NLU将currency
插槽的值设置为Euro
。
它们如何工作
查找表中的单个项目将添加到正则表达式(regex),该正则表达式将应用于用户发送给机器人的消息。但是,如果您的用户输入错字,例如,查找表不起作用。查找表条目Pesos
与Peesos
不匹配。为了匹配这些情况,您可以尝试模糊匹配,这在您链接的博客文章中有介绍。确保您的查询表不会太大,因为Rasa NLU必须检查每个句子是否与您的查询表项之一匹配。
也许Rasa NLU documentation也可以为您提供帮助。