自然言語を解析する最も効率的な方法は何ですか?自然言語の解析
Set the alarm for *.
Call *.
Get me an * at * for *.
とそれに対応する機能:
は、 "文字列" はのようなmap<string, void (*func)(int,char**)>
含む文字列とします。 「入力」を取ると、マップ内の文字列のいずれかにマッチするようにparse
としての機能を実装するためにどのように
Call David.
:今、「入力が」のような文を含むstring
であると仮定します。次に、対応する関数を呼び出し、すべてのワイルドカードエンティティ(*が文字列内にある)を含むargcとargvを渡します。そのような機能を実装する最も効率的な方法は何ですか?
あなたが定義済みのリストを持っている場合実在でない固定プレースホルダを持つコマンド自然言語ですが、ドメイン固有の言語や多くの場合正式な言語(Google DSLドメイン固有の言語)に似ています。したがって、コマンドに一致する正規表現のセットを定義し、たとえばプレースホルダを抽出することができます。しかし、あなたの質問は簡単にそれに簡単に答えることができます。 – xander
スタイルコメント:C++ 11以降は 'std :: function>)'と書いています。 –
MSalters