Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Dialogflow:意图训练短语-如何包括拼写错误/非正式单词_Python_Google Cloud Platform_Dialogflow Es - Fatal编程技术网

Python Dialogflow:意图训练短语-如何包括拼写错误/非正式单词

Python Dialogflow:意图训练短语-如何包括拼写错误/非正式单词,python,google-cloud-platform,dialogflow-es,Python,Google Cloud Platform,Dialogflow Es,我正在使用DialogFlow构建我的第一个代理,并且意图页面有培训短语的条目。我用一个简单的意图“问候”进行测试。 在正常情况下,拼写正确的单词可以很好地工作 你好 嗨 哎 等等 现在,如果我用“Hellooooo”(9个字母)这样的词运行DetectionEntText。。。检测到的意图给出了默认的回退意图。因此,如果我在训练短语中加上“Hellooo”(准确地说是9个o),那么意思就是“问候”。 但是如果我用Hellooo(4o’s)测试它,那么给出的意图又是默认的回退意图 我无法预测

我正在使用DialogFlow构建我的第一个代理,并且意图页面有培训短语的条目。我用一个简单的意图“问候”进行测试。 在正常情况下,拼写正确的单词可以很好地工作

  • 你好
  • 等等
现在,如果我用“Hellooooo”(9个字母)这样的词运行DetectionEntText。。。检测到的意图给出了默认的回退意图。因此,如果我在训练短语中加上“Hellooo”(准确地说是9个o),那么意思就是“问候”。 但是如果我用Hellooo(4o’s)测试它,那么给出的意图又是默认的回退意图

我无法预测用户会放多少个o,而且在训练短语中添加所有组合(例如Hellooo、Heeellooo等)会很麻烦。既然到处都是俚语,而且人们打字速度很快,那么推荐的方法是什么?在将其发送到Dialogflow API之前检查/更正拼写?DialogFlow API不会捕获这些吗

谢谢

发现DialogFlow,建议在将其发送到API之前进行拼写检查

因此,在我的具体情况下,我能做的是:

  • 删除所有重复的字符:
  • 拼写检查:

您觉得怎么样?

正如您所提到的,您需要在发送请求之前检查拼写。你的例子可以奏效

关于这一点,您添加的短语越多,代理从某些用户输入中获取上下文的培训就越多

例如,如果您将“hello”或“hi”作为一些培训短语,您可以将“hey”(不在培训短语中)作为请求发送,并且意图仍然匹配

但是,这只适用于短语上下文,不会忽略拼写错误。例如,“helloo”就不符合这个意图。因此,在发送请求之前,仍然需要检查拼写

或者,您可以打开代理的ML设置

关于自动拼写更正的警告和最佳实践:

  • 拼写更正无法更正ASR(自动语音识别)错误,因此我们不建议为使用ASR输入的代理启用拼写更正
  • 纠正后的输入可能与错误的意图相匹配。您可以通过向负面示例中添加通常不匹配的短语来解决此问题
  • 拼写修正会略微增加代理的响应时间
  • 拼写更正不应与谷歌上的操作一起使用
  • 拼写更正是针对一般用户查询进行的培训。如果代理是使用特定于域的术语定义的,则可能不需要进行更正
    word = re.sub(r"(\w)\1*", r'\1', 'heelloooo')
    import pyspellchecker
    from spellchecker import SpellChecker
    spell = SpellChecker()
    corrected = spell.correction(word)