이 프로젝트는 Rolf Schwitter의 "Specifying and Verbalising Answer Set Programs in Controlled Natural Language" 논문을 기반으로 합니다. 나는 CNL에서 프로그램 사양의 처리와 생성 모두에 적합한 양방향 문법을 만드는 데 중점을 두고 논문에서 수행된 작업을 훨씬 작은 규모로 재현했습니다.
big.pl 프로그램( 양방향 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는 단어가 참조하는 용어의 인수를 지정합니다. 용어는 내부 형식과 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를 사용하여 해결할 수 있습니다. 시도해 보시기 바랍니다.
작성자: 뉴욕주 스토니브룩 대학교 석사과정 학생 Yevheniia Soroka(CSE505: Computing with Logic, 2018년 가을)
시작하는 방법에 대한 지침을 제공하고 유용한 리소스를 공유해 준 Rolf Schwitter에게 특별히 감사드립니다.