Определение грамматических правил
Создайте свой собственный интерфейс обработки естественного языка, объединив мощные встроенные грамматические лексемы и правила системы Interpreter с Вашими собственными грамматическими лексемами и правилами. Затем разверните интерфейс в облаке Wolfram Cloud для дальнейшего использования с такими функциями, как GrammarApply.
Используйте встроенный интерпретатор типа "City" для создания программы грамматического разбора для списка названий городов с различными разграничителями и разверните их в облаке.

citiesGrammar = CloudDeploy[
GrammarRules[{
cs : DelimitedSequence[GrammarToken["City"], "," | ";" | "and"] :>
cs
}]
]
Примените программу грамматического разбора к строке, содержащей несколько городов США и возвращающей список соответствующих объектов Entity.

GrammarApply[citiesGrammar, "Saint Louis; New York, LA and Dallas"]

Теперь они могут быть обработаны, используя функциональные возможности Wolfram Geo.

GrammarApply[citiesGrammar, "Saint Louis; New York, LA and Dallas"];
GeoListPlot[%, GeoLabels -> Automatic,
GeoBackground -> "CountryBorders", GeoRange -> "Country"]

Добавьте Ваши собственные грамматические лексемы "Route", "Origin" и "Destination".

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 позволяет грамматический разбор пункта отправления и пункта назначения в обоих порядках.

GrammarApply[routeGrammar, "from NYC to LA"]


GrammarApply[routeGrammar, "to LA from NYC"]
