我正在写一个Bixby胶囊,输入之一是街道地址。
我尝试过的一种方法是创建以下结构:
structure (FullAddress) {
description (Address of a house)
property (addressNumber) {
type (geo.StreetNumber)
min (Required)
description (Address Number)
}
property (addressStreet) {
type (geo.StreetName)
min (Required)
description (Street Name)
}
property (addressSuffix) {
type (geo.StreetSuffix)
min (Required)
description (Street Name)
}
}
通过构造函数将3个输入放在一起。
我已经看到,给定地址19 Fake Fields Street
时,geo.StreetName
类型的输入有时可以理解Fake Fields
,有时甚至可以理解Fake
并丢弃Fields
。 / p>
Bixby的文本语音有时会听到app
的值是have
或ave
而不是geo.StreetSuffix
,这会提示用户输入后缀。
有没有办法让Bixby更加准确地理解街道地址?
答案 0 :(得分:1)
基本上,您需要更多的培训示例,其中包括2个或3个单词作为街道名称。尝试至少有3个示例,其中 xxx fakexxxfields street ,并在模拟器中测试发声 yyyyyyyyfields ,看看Bixby是否可以捕获 fields >作为地址名称的一部分。这里的目标是训练Bixby,以了解在 addressSuffix 之前可能有2个甚至3个单词。之后,您无需尝试在训练中使用 creek 即可确认发声,从而确定Bixby不仅学习了领域。请在this article中阅读更多内容。
语音识别没有简单的方法。您可以添加vocab model来强制将“ app”设置为“ ave”,但是如果用户确实要说出 app 或 have 怎么办?我认为用户可以键入ave或blvd,但需要用 avenue 代替ave,用 boulevard 代替blvd。
答案 1 :(得分:0)
另一种替代方法是在训练中使用viv.geo.SearchTerm并在您的操作中使用viv.geo.NamedPoint。这样一来,用户可以说出“加利福尼亚加利福尼亚市场街1号”之类的不完整信息,而Bixby将使用HERE Maps搜索在旧金山找到它。
要使用,请设置NamedPoint概念(在导入viv.geo之后)
structure (InputAddress) {
role-of (geo.NamedPoint)
}
然后在执行操作时,您可以执行以下操作:
input (namedPoint) {
type (InputAddress)
min (Required) max (One)
default-select {
with-learning
with-rule {
select-first
}
}
}
在此示例中,使用learning和select-first将自动选择第一个地址。没有这个,Bixby将自动建议地址。
然后namedPoint将被传递到您的端点,您可以根据需要进行解析。
在培训中,使用geo.SearchTerm-例如:
[g:GetAddressAction] My address is {[g:InputAddress] (665 Clyde Ave Mountain View California)[v:geo.SearchTerm]}
或在提示时,您可以使用:
[g:GetAddressAction:continue:InputAddress] {[g:InputAddress] (60 S Market)[v:geo.SearchTerm]}
通过使用viv.geo.ResolveAddressByPlaceID目标让Bixby处理它,可以获得更完整的地址。这是使用NamedPoint和ResolveAddressByPlaceID的完整操作。注意注释中指向相关文档的链接
action (GetAddressAction) {
type(Search)
description (Get Address)
collect {
// See https://bixbydevelopers.com/dev/docs/dev-guide/developers/library.geo#using-searchterm - used in training
// and https://bixbydevelopers.com/dev/docs/dev-guide/developers/library.geo#namedpoint - used below and for computed-input
input (namedPoint) {
type (InputAddress)
min (Required) max (One)
default-select {
with-learning
with-rule {
select-first
}
}
// hidden - Hide if all you need is address
}
computed-input (address){
type (geo.Address)
min (Optional) max (One)
compute {
intent {
goal: viv.geo.ResolveAddressByPlaceID
value: $expr(namedPoint.placeID)
}
}
}
}
output (geo.Address)
}