例如,以下句子:“嗨,下午好,你好吗”。这个笑话的目的是“打招呼”。当我请求“模型/解析”的API时,它将返回正确的意图和实体。但是,当我在这句话前添加特殊字符“ /”时,例如:“ /嗨,下午好,你好吗”,“ model / parse”返回的意图是“ /嗨,下午好,你好吗”。而不是“打招呼”。我阅读了rasa的源代码,如下所示:
在考虑源代码的RegexInterpreter的情况下,如何处理特殊字符“ /”,我引用了此示例?最好在不修改源代码的情况下解决它。请帮助我,谢谢。
答案:
我想同时实现以下三个功能:
“模型/解析”返回的实际结果如下:
{
"text": "/ greet {\" people \ ": \" tom \ "}",
"intent": {
"name": "greet",
"confidence": 1.0
},
"intent_ranking": [
{
"name": "greet",
"confidence": 1.0
}
],
"entities": [
{
"entity": "people",
"start": 6,
"end": 22,
"value": "tom"
}
]
}
2,当message.text =“汤姆,你好,下午好”
“模型/解析”返回的实际结果如下:
{
"text": "Hi Tom, good afternoon",
"intent": {
"name": "greet",
"confidence": 0.923
},
"intent_ranking": [
{
"name": "greet",
"confidence": 0.923
}
],
"entities": [
{
"entity": "people",
"start": 2,
"end": 5,
"value": "tom",
"confidence": 0.8433478958,
"extractor": "CRFEntityExtractor"
}
]
}
3,当message.text ='/汤姆,嗨,下午好'
“模型/解析”返回的实际结果如下(这不是我想要的):
{
"text": "/ Hi Tom, good afternoon",
"intent": {
"name": "Hi Tom, good afternoon",
"confidence": 1.0
},
"intent_ranking": [
{
"name": "Hi Tom, good afternoon",
"confidence": 1.0
}
],
"entities": []
}
但是我期望的结果如下:
{
"text": "Hi Tom, good afternoon",
"intent": {
"name": "greet",
"confidence": 0.923
},
"intent_ranking": [
{
"name": "greet",
"confidence": 0.923
}
],
"entities": [
{
"entity": "people",
"start": 2,
"end": 5,
"value": "tom",
"confidence": 0.8433478958,
"extractor": "CRFEntityExtractor"
}
]
}
请注意,第三个和第二个区别是,第三条message.text仅在开头添加'/'
因此,有没有一种方法可以很好地解决此问题,并且可以同时满足上述三种情况?
答案 0 :(得分:0)
在用户消息开头出现/
是直接触发意图的设置方式。从您给出的示例来看,它看起来并不像在实际用户情况下经常发生(如果有的话)。就是说,如果您确实想确保/
只能触发实际意图,则可以创建一个custom component,如果后面没有跟着任何前导/
的话,它将剥离掉您的训练数据中已经有一个意图。
但是,在进行这项工作之前,我建议您检查一下这种情况实际发生的频率。