用实体列表填充插槽|拉沙

时间:2020-06-12 17:24:30

标签: rasa

我试图从用户那里获取电话号码,但是有时Speach识别返回字符而不是数字,例如:

“我的联络人是零三一一七二一一。”

所以要获得这些值,我正在使用带有数字维度的小鸭来检测此值。它会将所有数字检测为实体,所以现在我需要从wntities中获取所有数字值,并将它们合并以获取完整数字并将其值放入插槽。我尝试使用self.from_entity('number'),但它仅返回列表中的最后一个值。

有什么解决办法,或者我应该考虑解决的任何办法。

2 个答案:

答案 0 :(得分:1)

您可以在验证功能中执行以下操作:检查为特定用户消息提取的number实体的所有值,然后将它们串联起来。因此,您仍然需要填充插槽from_entity,但实际上在验证功能中,您将获取所有值。对于带有日期/时间的句子,有一个类似的例子,您需要遵循函数定义才能看到详细信息:https://github.com/RasaHQ/financial-demo/blob/d6f54f77b081b2136c892fce0fc2e999a2589616/actions/actions.py#L267

答案 1 :(得分:0)

我的rasa版本号是1.9.6。我使用regular expression提取了手机号码。我们可以根据需求重新格式化regex:mobileno。

## intent:inform
- [97504*****](mobileno)
- [87459*****](mobileno)

## regex:mobileno
- [6789]{1}\d{4}?[\d]{5}$

rasa shell nlu输出

Next Message: 
9999999999
{
  "intent": {
    "name": "inform",
    "confidence": 0.9978736042976379
  },
  "entities": [
    {
      "entity": "mobileno",
      "start": 0,
      "end": 10,
      "extractor": "DIETClassifier",
      "value": "999999999"
    }
  ],
  ...,
  ...,
  "text": "9999999999"
}