Skip to content
This repository has been archived by the owner on Apr 12, 2021. It is now read-only.

🤖 💬 tarefa 1(18/08) - IA 2017/02

License

Notifications You must be signed in to change notification settings

micalevisk/siege-telegram-bot

Repository files navigation

SIEGE Bot - Sistema Inteligente de Ensino de Geografia para o Telegram
by Micael Levi

Sobre a base de conhecimento em src/brain/prolog-controller/database

Os fatos disponíveis nos programas dispostos neste diretório são:

  • regiao(?Nome:string, ?QuantidadeEstados:int)
  • estado(?Nome:string, ?Sigla:string, ?NomeRegiao:string, ?NomeCapital:string)
  • tamanho(-EstadosEAreas:list(NomeEstado-Area))
  • municipio(?Nome:string, ?NomeEstado:string)
  • questao(?Pergunta:string, -RespostaDada:string, -UsernameAutor:string, -IdAutor:int, -Votos:int, -Ano:int)

Pensando nos fatos em termos de tabela, o esquema do banco de conhecimentos fica da seguinte forma no modelo relacional:

diagrama RIR

Visão geral da estrutura

estrutura


Instalação e Execução

crie um bot
    @BotFather    
instale clone este repositório
  git clone https://github.com/micalevisk/siege-telegram-bot  
🙏
    npm install    
  1. Altere o nome do arquivo .env.example para .env;
  2. Altere o conteúdo do arquivo renomeado para adicionar o token do seu bot (recuperado ao criar o bot);
  3. Execute npm start no terminal.

Perguntas que serão respondidas

As perguntas listadas a seguir contém apenas sentenças que o bot entenderá (InSeNsÍvEl aO cAsO)

  • as perguntas tenta ser o mais breve possível (sem gerar ambiguidade)
  • algumas palavras podem ser substituídas por seus sinônimos mais comuns (além de versões sem acentuação)
  • palavras entre colchetes indicam que estes são opcionais; a barra indica uma alternativa
  • os substantivos próprios devem iniciar em maiúsculo (como manda a gramática)
  • palavras em destaque são consideradas "variáveis"; representam apenas o conceito
  • a interrogação no final da pergunta é indiferente para a compreensão do bot
  • espaços excedentes são ignorados
  1. qual [é] [a] capital/sede/metrópole do/de/da Estado
  2. Município é [a] capital/sede/metrópole de qual/algum estado?
  3. Município é [a] capital/sede/metrópole do/de/da Estado
  4. Existe/Há algum estado cuja [a] capital/sede/metrópole tem/possua o mesmo nome do estado?
  5. O [estado [do/de/da]] Estado tem/possui quantas/quantos cidades/municípios?
  6. Estado/Município está/fica [localizado] em qual/que região?

Consultas para as perguntas (implementadas)

  • O símbolo '+' indica que a variável (que segue) deve ser uma entrada, i.e., ter valor.
  • As querys terminadas com ponto final já estão no formato exato, i.e., estão prontas para serem executadas.
no. query
1 capital(+Estado, NC)
2 capital(NE, +Município)
3 capital(+Estado, +Município)
4 findall(E, capital(E,E), +Quais), list_nonempty(+Quais, +Existe)
14 municipios(+Estado, Municipios), length(Municipios, QtdMunicipios)
17 regiao_de(+Nome, Regiao)