我试图从用户那里获取电话号码,但是有时Speach识别返回字符而不是数字,例如:
“我的联络人是零三一一七二一一。”
所以要获得这些值,我正在使用带有数字维度的小鸭来检测此值。它会将所有数字检测为实体,所以现在我需要从wntities中获取所有数字值,并将它们合并以获取完整数字并将其值放入插槽。我尝试使用self.from_entity('number')
,但它仅返回列表中的最后一个值。
有什么解决办法,或者我应该考虑解决的任何办法。
答案 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"
}