如何处理同音异义词

时间:2019-04-08 16:00:08

标签: dialogflow

我正在创建一个代理,该代理将通过语音处理呼叫请求。例如,这是流程的样子:

1)。用户说:我需要给约翰打电话

2)。代理获取 John 作为参数,并通过履行查询数据库中某个字段中包含 John 的所有条目。如果有一个以上的John,则会触发一个后续意图并发送响应,询问哪个John是理想的John:

经纪人说:有几个约翰,你想打电话给谁?约翰·测试,约翰·史密斯,约翰·普利斯或约翰·施密特?

3)。用户希望与 John Pleis 联系。

用户说: John Pleis

这是我遇到问题的地方。 Dialogflow正在识别 John Please ,而不是 John Pleis 。我该如何处理?

更新

意图是这样的:

-初始意图-

Initial intent

Initial intent

-跟进意图-

Follow up intent

1 个答案:

答案 0 :(得分:3)

您应该能够通过使用自己的Entity Types作为名称来解决这些问题,而不是使用@sys:any中的System Entity Type。这使您可以指定可能接受的名称,并且Dialogflow可以与助手一起使用,以更好地理解用户可能在说什么。这不是完美的方法,但可以改善词组检测,并可以为您提供一些工具以帮助其更好地进行检测。

如果您的目录相对较小(可能只有几百人),则可以简单地为所有名称预先创建Developer Entity Types。 (甚至还有an API用于管理这些实体类型,因此您可以使其自动化。)

如果名称过多,则可能只想为可能的名字创建开发人员实体类型(或者如果合适就使用@sys:given-name的系统实体类型),然后作为您的一部分履行Webhook,请使用可能匹配的名称填充Session Entity Type

在这两种情况下,您都可以使用实体别名来帮助改进匹配。因此,如果看到“ John Please”仍然匹配,则可以将其设置为“ John Piels”的别名,并且Dialogflow会将该实体报告为“ John Piels”。