Este projeto é baseado no artigo "Especificando e Verbalizando Programas de Conjunto de Respostas em Linguagem Natural Controlada" de Rolf Schwitter. Recriei o que foi feito no artigo, mas em uma escala muito menor, focando na criação de uma gramática bidirecional adequada tanto para processamento quanto para geração de especificações de programas em CNL.
O programa big.pl (significa G rammar bidirecional ) deve ser executado usando SWI-Prolog. Para fazer um teste, basta carregar o arquivo usando o comando: [big].
E então consulte: test.
Feito isso, você verá a saída do programa para um exemplo predefinido.
Se você deseja executar o programa em SUAS PRÓPRIAS SENTENÇAS DE ENTRADA , você deve modificar o arquivo big.pl :
Observe que cada frase deve ser uma lista de palavras, onde todas as palavras devem ser separadas por vírgula, e uma frase deve terminar com o símbolo especial '.' . Cada frase deve começar com a palavra do sistema 'every'
/ 'no'
ou ter um agente nela, por exemplo, como em [bob,dreams,'.']
, onde bob é um agente. As palavras do sistema são: 'every', 'no', 'is', 'is not', 'does not', '.'
. Consulte samples.txt para obter exemplos de sentenças de entrada que você pode tentar executar.
Caso queira introduzir novas palavras e/ou agentes não incluídos no programa, você mesmo deverá adicioná-los em big.pl . O léxico atual é definido nas linhas 175-198. Para cada uma de suas palavras personalizadas, adicione uma linha seguindo o formato de:
lexicon(cat:noun, wform:[student], arg:X, term:student(X)).
onde o argumento cat é a categoria da palavra (substantivo, verbo, det, etc.); wform significa word-form, ou seja, a palavra exata que aparece em uma frase; arg especifica o argumento do termo ao qual a palavra se refere; term denota o termo real que será usado no formato interno e no ASP. Para cada um dos seus agentes personalizados, adicione uma linha no formato agent(name).
, onde nome é o nome do seu agente, por exemplo, bob
.
Observe que atualmente o programa suporta apenas as seguintes categorias: substantivo ( cat:noun
), verbo ( cat:iv
), determinante ( 'every', 'no'
), adjetivo ( cat:jj
). Todas as frases devem ter uma estrutura simples, sem artigos ("a", "an", "the"), sem componentes vinculados a "e"/"ou".
O programa big.pl fornece quatro resultados de uma vez:
Consulte Report.pdf para obter mais detalhes sobre as representações.
Observe que 3. A representação ASP é um programa de conjunto de respostas válido, que você pode resolver usando, por exemplo, clingo, que eu encorajo você a tentar.
Criado por Yevheniia Soroka, estudante de mestrado, Stony Brook University, NY (CSE505: Computing with Logic, outono de 2018)
Agradecimentos especiais a Rolf Schwitter pela orientação sobre como começar e por compartilhar recursos úteis.