Этот проект основан на статье Рольфа Швиттера «Определение и вербализация программ набора ответов на контролируемом естественном языке». Я воссоздал то, что было сделано в статье, но в гораздо меньшем масштабе, сосредоточившись на создании двунаправленной грамматики, подходящей как для обработки, так и для генерации спецификаций программ в CNL.
Программу big.pl (расшифровывается как двунаправленная грамматика ) следует запускать с использованием SWI-Prolog. Чтобы протестировать его, просто загрузите файл с помощью команды: [big].
А затем запрос: test.
Сделав это, вы увидите выходные данные программы для заранее определенного примера.
Если вы хотите запустить программу на СВОИХ ВВОДНЫХ ПРЕДЛОЖЕНИЯХ , вам необходимо изменить файл big.pl :
Обратите внимание, что каждое предложение должно представлять собой список слов, где все слова должны быть разделены запятой, а предложение должно заканчиваться специальным символом «.». . Каждое предложение должно начинаться с системного слова 'every'
/ 'no'
или содержать в себе агента, например, как в [bob,dreams,'.']
, где bob — агент. Системные слова: 'every', 'no', 'is', 'is not', 'does not', '.'
. См. sample.txt , где приведены примеры входных предложений, которые вы можете попробовать запустить.
Если вы хотите ввести новые слова и/или агенты, не включенные в программу, вам придется добавить их самостоятельно в big.pl. Текущая лексика определена в строках 175-198. Для каждого из ваших произвольных слов добавьте строку следующего формата:
lexicon(cat:noun, wform:[student], arg:X, term:student(X)).
где аргумент cat — категория слова (существительное, глагол, дет и т. д.); wform означает словоформу, то есть точное слово, которое появляется в предложении; arg указывает аргумент термина, к которому относится это слово; термин обозначает фактический термин, который будет использоваться во внутреннем формате и в ASP. Для каждого из ваших пользовательских агентов добавьте строку формата agent(name).
, где name — это имя вашего агента, например bob
.
Обратите внимание, что в настоящее время программа поддерживает только следующие категории: существительное ( cat:noun
), глагол ( cat:iv
), определитель ( 'every', 'no'
), прилагательное ( cat:jj
). Все предложения должны иметь простую структуру, без артиклей («а», «an», «the»), без компонентов, связанных между собой «и»/«или».
Программа big.pl выдает сразу четыре вывода:
Пожалуйста, обратитесь к Report.pdf для получения более подробной информации о представлениях.
Обратите внимание, что 3. Представление ASP — это действительная программа набора ответов, которую вы можете решить, используя, например, клинго, что я советую вам попробовать.
Создано Евгенией Сорокой, студенткой магистратуры Университета Стоуни-Брук, штат Нью-Йорк (CSE505: Computing with Logic, осень 2018 г.)
Особая благодарность Рольфу Швиттеру за советы о том, как начать работу, и за обмен полезными ресурсами.