문법 규칙의 정의
강력한 임베디드 문법 토큰과 Interpreter 프레임워크의 규칙을 사용자 정의 문법 토큰 및 규칙과 함께 자신의 자연 언어 처리 인터페이스를 구축합니다. 그리고 GrammarApply 등의 함수에서 사용할 수 있도록 이 인터페이스를 Wolfram 클라우드에 배치합니다.
빌트인 "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 Geo 기능으로 처리가 가능합니다.
In[3]:=
GrammarApply[citiesGrammar, "Saint Louis; New York, LA and Dallas"];
GeoListPlot[%, GeoLabels -> Automatic,
GeoBackground -> "CountryBorders", GeoRange -> "Country"]
Out[3]=
사용자 정의 문법 토큰 "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]=