Nlp Dialogflow首选系统实体而不是用户定义的实体

Nlp Dialogflow首选系统实体而不是用户定义的实体,nlp,dialogflow-es,chatbot,Nlp,Dialogflow Es,Chatbot,我有一个Dialogflow代理,它将为不同的场地(大学校园的房间)提供方向。我定义了一个“场馆”实体,该实体预先填充了所有不同场馆的名称 在大多数情况下,这很好。如果我问一个问题,如“如何到达拜尔大厦”,它会指出意图和场馆实体(“拜尔大厦”) 但是,如果场馆名称包含一个数字或一个人的姓名(例如,“我如何到达艾伦图灵.107”),它将无法识别实体(即使“艾伦图灵.107”是我预定义的实体值之一) 相反,它指出了两个系统定义的实体: @sys.given-name=“艾伦” @sys.numbe

我有一个Dialogflow代理,它将为不同的场地(大学校园的房间)提供方向。我定义了一个“场馆”实体,该实体预先填充了所有不同场馆的名称

在大多数情况下,这很好。如果我问一个问题,如“如何到达拜尔大厦”,它会指出意图和场馆实体(“拜尔大厦”)

但是,如果场馆名称包含一个数字或一个人的姓名(例如,“我如何到达艾伦图灵.107”),它将无法识别实体(即使“艾伦图灵.107”是我预定义的实体值之一)

相反,它指出了两个系统定义的实体:

  • @sys.given-name=“艾伦”
  • @sys.number=“107”
当它应该被发现时:

  • @VenuName=“Alan Turing.107”
一旦我把它训练成一个具体的例子,它就可以继续工作了。。。但是有数百种可能的价值观需要训练。Dialogflow是否应该发现预定义的实体名称


有没有办法让我“更喜欢”我的用户定义的实体而不是系统定义的实体?

这是Dialogflows默认方法效果很差的情况之一,实际上存在一个更好的解决方案,但不鼓励使用

培训短语有两种模式:。示例模式是默认模式,似乎是您一直在使用的模式。使用它,您可以指定与用户所说的完全相同的完整培训短语(
“我如何才能到达拜尔大厦”
)。Dialogflow然后尝试解析和注释实体,因此它确实更喜欢它的系统实体

但是,您可以通过在模板模式中指定短语来解决这个问题。使用它,您可以在短语(
“如何才能到达@venue:venue”
)中包含实体类型,从而避免自动注释

唯一的问题是,模板模式实际上已被弃用,而且似乎不再可以通过控制台使用(它仍然可以通过API工作)

从技术上讲,您实际上不需要模板模式,您可以通过API将短语作为对象发送,从而完成与Dialogflow在示例模式下自动手动执行的完全相同的操作。然而,要做到这一点,你必须将你的每一个短语解析成一系列的部分,这些部分将实体与演讲的其余部分分开。如果这样做,请不要忘记在零件之间添加空格,因为Dialogflow不会自动这样做

他们为什么这样做是个谜。实体注释是与意图匹配完全不同的服务,应该是可选的。是因为他们喜欢获取所有这些用户注释的数据吗?谁知道呢,但这使得开发高质量的谷歌助手应用程序变得更加困难