rasa_nlu 如何使用lookup_tables 进行实体提取?

Sou*_*ren 2 python chatbot rasa-nlu rasa-core

我正在尝试使用 rasa nlu 和 rasa core 开发一个聊天机器人。但我没有得到 rasa_nlu 如何使用 lookup_tables 进行实体提取的链接。我已经通过(http://blog.rasa.com/improving-entity-extraction/)链接但没有得到它。应该如何使用lookup_table 来提取实体?

Tob*_*ias 6

要求:

如果要使用查找表,请确保:

  • 你的NLU 管道中有Intent_entity_featurizer_regex和ner_crf组件
  • 您要匹配的实体具有明确定义且狭窄的范围
    • 食品名称、公司名称、汽车品牌等实体不太可能出现在您不想与它们匹配的上下文中。因此,查找表是一个很好的用例。
    • 诸如对象(例如“汽车”、“房子”、“纸”)之类的实体出现在您根本不想匹配它们的各种上下文中。因此,使用查找表甚至可能导致更糟的结果。

在您的训练数据中

为了使用查找表,您可以直接在训练数据中定义它们,例如:

## 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
Run Code Online (Sandbox Code Playgroud)

或者您可以将它们写入文本文件中:

Yen
USD
Euro
Run Code Online (Sandbox Code Playgroud)

然后在训练数据中包含文本文件的路径:

## intent:check_balance
   ... like before

## lookup:food
    <path to your look up table text file>.txt
Run Code Online (Sandbox Code Playgroud)

输入像我可以用欧元支付吗?,Rasa NLU 然后将槽的值设置currency为Euro。

它们是如何工作的

查找表中的单个项目被添加到正则表达式 (regex) 中,该表达式应用于您的用户发送给机器人的消息。但是,如果您的用户输入了拼写错误,例如查找表条目Pesos将不匹配,则查找表将不起作用Peesos。为了匹配这些情况,您可以尝试在您链接的博客文章中描述的模糊匹配。确保您的查找表不会变得太大,因为 Rasa NLU 必须检查每个句子是否与您的查找表条目之一匹配。

也许Rasa NLU 文档也可以帮助你。