Wolfram言語

テキストと言語の処理

文法規則の定義

強力な組込み文法トークンとInterpreterフレームワークの規則を自分独自のカスタム文法トークンおよび規則と組み合せて,独自の自然言語処理インターフェースを作る.次に,GrammarApply等の関数で使えるように,このインターフェースをWolfram Cloudに配備する.

組込みの"City"インタープリタタイプを使ってデリミタが違う都市名のリストに使える解析器を作り,クラウドに配備する.

In[1]:=
Click for copyable input
citiesGrammar = CloudDeploy[ GrammarRules[{ cs : DelimitedSequence[GrammarToken["City"], "," | ";" | "and"] :> cs }] ]
Out[1]=

この解析器を合衆国の幾つかの都市名を含む文字列に適用すると,対応するEntityオブジェクトのリストが返される.

In[2]:=
Click for copyable input
GrammarApply[citiesGrammar, "Saint Louis; New York, LA and Dallas"]
Out[2]=

これは,Wolfram Geo機能で処理することができる.

In[3]:=
Click for copyable input
GrammarApply[citiesGrammar, "Saint Louis; New York, LA and Dallas"]; GeoListPlot[%, GeoLabels -> Automatic, GeoBackground -> "CountryBorders", GeoRange -> "Country"]
Out[3]=

独自のカスタム文法トークンである"Route""Origin""Destination"を加え,その規則を定義する.

In[4]:=
Click for copyable input
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 } ] ]
Out[4]=

AnyOrderFixedOrderを組み合わせて使うと,出発地と目的地を両方の順序で正しく解析することができる.

In[5]:=
Click for copyable input
GrammarApply[routeGrammar, "from NYC to LA"]
Out[5]=
In[6]:=
Click for copyable input
GrammarApply[routeGrammar, "to LA from NYC"]
Out[6]=

関連する例

de en es fr ko pt-br ru zh