Nlp Dialogflow首选系统实体而不是用户定义的实体
我有一个Dialogflow代理,它将为不同的场地(大学校园的房间)提供方向。我定义了一个“场馆”实体,该实体预先填充了所有不同场馆的名称 在大多数情况下,这很好。如果我问一个问题,如“如何到达拜尔大厦”,它会指出意图和场馆实体(“拜尔大厦”) 但是,如果场馆名称包含一个数字或一个人的姓名(例如,“我如何到达艾伦图灵.107”),它将无法识别实体(即使“艾伦图灵.107”是我预定义的实体值之一) 相反,它指出了两个系统定义的实体:Nlp Dialogflow首选系统实体而不是用户定义的实体,nlp,dialogflow-es,chatbot,Nlp,Dialogflow Es,Chatbot,我有一个Dialogflow代理,它将为不同的场地(大学校园的房间)提供方向。我定义了一个“场馆”实体,该实体预先填充了所有不同场馆的名称 在大多数情况下,这很好。如果我问一个问题,如“如何到达拜尔大厦”,它会指出意图和场馆实体(“拜尔大厦”) 但是,如果场馆名称包含一个数字或一个人的姓名(例如,“我如何到达艾伦图灵.107”),它将无法识别实体(即使“艾伦图灵.107”是我预定义的实体值之一) 相反,它指出了两个系统定义的实体: @sys.given-name=“艾伦” @sys.numbe
- @sys.given-name=“艾伦”
- @sys.number=“107”
- @VenuName=“Alan Turing.107”
有没有办法让我“更喜欢”我的用户定义的实体而不是系统定义的实体?这是Dialogflows默认方法效果很差的情况之一,实际上存在一个更好的解决方案,但不鼓励使用 培训短语有两种模式:。示例模式是默认模式,似乎是您一直在使用的模式。使用它,您可以指定与用户所说的完全相同的完整培训短语(
“我如何才能到达拜尔大厦”
)。Dialogflow然后尝试解析和注释实体,因此它确实更喜欢它的系统实体
但是,您可以通过在模板模式中指定短语来解决这个问题。使用它,您可以在短语(“如何才能到达@venue:venue”
)中包含实体类型,从而避免自动注释
唯一的问题是,模板模式实际上已被弃用,而且似乎不再可以通过控制台使用(它仍然可以通过API工作)
从技术上讲,您实际上不需要模板模式,您可以通过API将短语作为对象发送,从而完成与Dialogflow在示例模式下自动手动执行的完全相同的操作。然而,要做到这一点,你必须将你的每一个短语解析成一系列的部分,这些部分将实体与演讲的其余部分分开。如果这样做,请不要忘记在零件之间添加空格,因为Dialogflow不会自动这样做
他们为什么这样做是个谜。实体注释是与意图匹配完全不同的服务,应该是可选的。是因为他们喜欢获取所有这些用户注释的数据吗?谁知道呢,但这使得开发高质量的谷歌助手应用程序变得更加困难