このプロジェクトは、Rolf Schwitter による論文「Specifying and Verbalising Answer Set Programs in Controlled Natural Language」に基づいています。私は論文で行われたことを再現しましたが、規模ははるかに小さく、CNL でのプログラム仕様の処理と生成の両方に適した双方向文法の作成に焦点を当てました。
プログラムbig.pl ( Bi -direction G rammar の略) は、SWI-Prolog を使用して実行する必要があります。テスト実行するには、コマンド[big].
そして、クエリ: test.
これを完了すると、事前定義された例のプログラムの出力が表示されます。
自分自身の入力文でプログラムを実行したい場合は、ファイルbig.pl を変更する必要があります。
各文は単語のリストである必要があり、すべての単語はカンマで区切られ、文は特殊記号「.」で終わる必要があることに注意してください。 。各文はシステム単語'every'
/ 'no'
で始まるか、その中にエージェントが含まれている必要があります (例: [bob,dreams,'.']
。ここでbobはエージェントです。システム単語は次のとおりです: 'every', 'no', 'is', 'is not', 'does not', '.'
。実行してみることができる入力文のサンプルについては、 samples.txt を参照してください。
プログラムに含まれていない新しい単語やエージェントを導入したい場合は、それらをbig.plに自分で追加する必要があります。現在の辞書は 175 ~ 198 行目で定義されています。カスタム単語ごとに、次の形式に従って行を追加します。
lexicon(cat:noun, wform:[student], arg:X, term:student(X)).
ここで、 cat引数は単語のカテゴリ (名詞、動詞、det など) です。 wform はword-form の略で、文中に現れる正確な単語です。 arg は、単語が参照する用語の引数を指定します。 term は、内部フォーマットおよび ASP で使用される実際の用語を示します。カスタム エージェントごとに、 agent(name).
ここで、 name はエージェントの名前です (例: bob
。
現在、プログラムは次のカテゴリのみをサポートしていることに注意してください: 名詞 ( cat:noun
)、動詞 ( cat:iv
)、決定詞 ( 'every', 'no'
)、形容詞 ( cat:jj
)。すべての文は単純な構造である必要があり、冠詞 (「a」、「an」、「the」)、「and」/「or」でリンクされたコンポーネントはありません。
プログラムbig.plは、一度に 4 つの出力を出します。
表現の詳細については、 Report.pdfを参照してください。
3. ASP 表現は有効な回答セット プログラムであることに注意してください。これは、たとえば clingo を使用して解決できます。試してみることをお勧めします。
ニューヨーク州ストーニー ブルック大学修士課程学生 Yevhenia Soroka 氏作成 (CSE505: ロジックを使用したコンピューティング、2018 年秋)
開始方法と有用なリソースの共有に関する指導をしていただいた Rolf Schwitter に心より感謝いたします。