Это один из случаев, когда подход по умолчанию в Dialogflow работает довольно плохо и лучшее решение действительно существует, но активно не поощряется.
Обучающие фразы бывают в двух режимах: Примерный режим и режим шаблона .Пример режима по умолчанию и кажется, что вы использовали.С его помощью вы указываете полные обучающие фразы в точности так, как их произносит пользователь ("how can i get to the beyer building"
).Затем Dialogflow пытается проанализировать и аннотировать сущности, в результате чего он действительно предпочитает свои системные сущности.
Однако вы можете обойти это, указав фразы в режиме шаблона.С его помощью вы включаете тип сущности в фразу ("how can i get to @venue:venue"
) и, таким образом, избегаете автоматической аннотации Dialogflow.
Единственная проблема с этим заключается в том, что режим шаблона фактически устарел и даже, кажется, не доступен черезконсоль больше (она все еще работает через API).
Технически вам на самом деле не нужен режим шаблона, вы можете сделать то же самое, что Dialogflow автоматически делает в примере, вручную, отправив ваши фразы какTrainingPhrase
объекты через API.Однако для этого вам придется разбирать каждую фразу на массив частей, которые отделяют сущности от остальной части речи.Если вы сделаете это, не забудьте добавить пробелы между частями, потому что Dialogflow не делает это автоматически.
Почему они делают это таким образом, остается загадкой.Сущностная аннотация - это услуга, совершенно отличная от согласования намерений, и должна быть необязательной.Это потому, что им нравится получать все эти аннотированные пользователем данные?Кто знает, но это делает разработку высококачественных приложений Google Assistant более сложной, чем это должно быть.