定义语法规则
构建自己的自然语言处理界面,将强大的内置语法 token 和 Interpreter 框架规则与自定义的语法 token 和规则相结合. 将界面部署于 Wolfram Cloud,用于如 GrammarApply 等函数.
使用内置 "City" 诠释器类型为有不同分隔符的城市名称列表构建解析器并将其部署至云端.
In[1]:=
citiesGrammar = CloudDeploy[
GrammarRules[{
cs : DelimitedSequence[GrammarToken["City"], "," | ";" | "and"] :>
cs
}]
]
将解析器应用于含有几个美国城市的字符串中,返回相应的 Entity 对象列表.
In[2]:=
GrammarApply[citiesGrammar, "Saint Louis; New York, LA and Dallas"]
Out[2]=
现在可以使用 Wolfram 地理功能对其进行处理.
In[3]:=
GrammarApply[citiesGrammar, "Saint Louis; New York, LA and Dallas"];
GeoListPlot[%, GeoLabels -> Automatic,
GeoBackground -> "CountryBorders", GeoRange -> "Country"]
Out[3]=
添加自定义的语法 token "Route"、"Origin" 和 "Destination",并为其定义规则.
In[4]:=
routeGrammar = CloudDeploy[
GrammarRules[{GrammarToken["Route"], GrammarToken["Origin"],
GrammarToken["Destination"]},
{
"Route" ->
AnyOrder[start : GrammarToken["Origin"],
end : GrammarToken["Destination"]] :> (start -> end),
"Origin" ->
FixedOrder["from", loc : GrammarToken["City"]] :> loc,
"Destination" ->
FixedOrder["to", loc : GrammarToken["City"]] :> loc
}
]
]
组合使用 AnyOrder 和 FixedOrder 可以对起点和终点进行正确的解析.
In[5]:=
GrammarApply[routeGrammar, "from NYC to LA"]
Out[5]=
In[6]:=
GrammarApply[routeGrammar, "to LA from NYC"]
Out[6]=