該計畫基於 Rolf Schwitter 的論文「Specifying and Verbalising Answer Set Programs in Controlled Natural Language」。我重新創建了論文中所做的事情,但規模要小得多,重點是創建適合 CNL 中程序規範的處理和生成的雙向語法。
程式big.pl (代表雙向語法)應使用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代表單字形式,即句子中出現的確切單字; arg指定該字所指的字的參數; term表示將在內部格式和 ASP 中使用的實際術語。對於每個自訂代理,新增一行agent(name).
,其中name是您的代理的姓名,例如bob
。
請注意,目前程式僅支援以下類別:名詞 ( cat:noun
)、動詞 ( cat:iv
)、行列式 ( 'every', 'no'
)、形容詞 ( cat:jj
)。所有句子必須具有簡單的結構,沒有冠詞(“a”、“an”、“the”),沒有“and”/“or”連接的組件。
程式big.pl一次給出四個輸出:
有關陳述的更多詳細信息,請參閱Report.pdf 。
請注意, 3. ASP 表示是一個有效的答案集程序,您可以使用例如 clingo 來解決它,我鼓勵您嘗試一下。
由紐約州石溪大學碩士生 Yevheniia Soroka 創立(CSE505:邏輯計算,2018 年秋季)
特別感謝 Rolf Schwitter 對如何入門和分享有用資源的指導。