Skip to content

gusmcarreira/Chatbot_Programming_Assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chatbot_Programming_Assistant

Chatbot criado na plataforma RASA para assistir alunos na introdução à Programação. Projeto desenvolvido no contexto de tese de mestrado na Universidade de Coimbra.

Índice

1. Leonardo

2. Chatbot FrontEnd

Código disponivel em:

3. Erro de Sintaxe

3.1 Localização dos ficheiros

├── Chatbot
│   ├── actions
│   ├── custom
│   │   ├── Docs
│   │   │   └── ErrorGuidance
│   │   │   │  └── ...
│   ├── ...
├── ...

Há dois tipos de ficheiros, ambos separados por tipo de erro (Função, Varáivel, Repetição, Condição):

São os ficheiros de texto que estão diretamente na pasta ErrorGuidance

├── Chatbot
│   ├── actions
│   ├── custom
│   │   ├── Docs
│   │   │   └── ErrorGuidance
│   │   │   │  └── Condição.txt
│   │   │   │  └── Função.txt
│   │   │   │  └── Repetição.txt
│   │   │   │  └── Variável.txt
│   ├── ...
├── ...

São os ficheiros de texto que estão dentro das pastas na pasta ErrorGuidance

├── Chatbot
│   ├── actions
│   ├── custom
│   │   ├── Docs
│   │   │   └── ErrorGuidance
│   │   │   │  └── Condição
│   │   │   │  │   └── ...txt
│   │   │   │  └── Função
│   │   │   │  │   └── ...txt
│   │   │   │  └── Repetição
│   │   │   │  │   └── ...txt
│   │   │   │  └── Variável
│   │   │   │  │   └── ...txt
│   ├── ...
├── ...

3.2 Explicação dos ficheiros

  • A alteração das perguntas não tem qualquer implicação no código nem no chatbot (ou seja não precisa de ser treinado), desde que siga as regras explicadas aqui
  • Se alterar a escrita de uma mensagem de erro, terá de alterar também o ficheiro onde aponta para o caminho das suas perguntas aqui

3.2.1 Ficheiros com os caminhos

Condição sem comparação-->Condição/semComparacao.txt
-###-
Operador lógico maiúsculo-->Condição/andOrMaiusculo.txt
  • O nome do ficheiro de texto tem de coincidir exatamente com o tipo de erro enviado pela plataforma
  • Os caminhos são separados por -###-
  • As linhas resultam da conjunção de três elementos:
    • mensagem de erro retornada pela plataforma (i.e. Condição sem comparação)
    • -->
    • o caminho para o ficheiro com as perguntas para o determinado erro (i.e. Condição/semComparacao.txt)

3.2.2 Ficheiros com as perguntas

Pergunta:O seu erro parece estar numa condição. Vou-lhe propor um desafio! Dado o seguinte código:

<code>
x = 0

if x ==  :
  print("É verdade!")
</code>

Que é suposto gerar a seguinte saida:

<code_print>É verdade!

Qual é o detalhe que está em falta?<end>
----------------------------------------------------------------------------------<end>
Resposta:0<sep>um zero<sep>zero<end>
----------------------------------------------------------------------------------<end>
Explicação:No código acima falta o segundo dado da comparação, que neste caso é um 0!<end>
----------------------------------------------------------------------------------<end>
-###-
----------------------------------------------------------------------------------<end>
Checkpoint:Quando fazemos uma comparação necessitamos de dois dados, no caso do exemplo temos o x e o número 0!

Agora olhando para o seu algoritmo veja se sempre usou dois dados nas suas comparações e não se esqueceu te nenhum!<end>

Os conjuntos de perguntas são compostos pelos seguites tópicos:

  • Pergunta: (obrigatória) contém a pergunta que o Chatbot vai retornar ao aluno
  • Resposta: (obrigatória) resposta à pergunta
    • Pode conter mais que uma resposta (formas diferentes de dizer), que devem ser separadas por <sep>
  • Explicação: (obrigatória) contém a explicação da resposta à pergunta
  • Opções_Iniciais: (opcional) se presente são as opções de escolha múltipla que são apresentadas aos alunos logo no inicio
    • As opções devem ser separadas por <sep>
  • Opções: (opcional) se presente são as opções de escolha múltipla que são apresentadas aos alunos quando estes erram a resposta
    • As opções devem ser separadas por <sep>

Ou apenas pelo:

  • Checkpoint: (obrigatória) simboliza a última pergunta que contém uma espécie de conclusão

ATENÇÃO:

  • Cada conjunto de perguntas, ou seja, cada groupo de Pergunta, Resposta, Explicação,..., deve ser separado por -###-
  • Cada tópico deve terminar com um <end>
  • O display de código é simbolizado por <code> e </code>
  • O display dos resultados dos códigos é simbolizado com <code_print> (apenas abertura)
  • No mesmo tópico para fazer o display da mensagem em balões de mensagem separados, as frases devem ser separadas por uma linha em branco
  • As linhas compostas por -----------, são apenas usadas para diferenciar (como comentários), pode ser usado qualquer coisa desde que não começe como nenhum dos outros tópicos e seja finalizado por <end>

4. Resposta Automática

  • A alteração dos ficheiros implica correr o ficheiro em Chatbot/custom/Docs/Whoosh/index_documents.py
  • A sua alteração não implica voltar a treinar o Chatbot
  • Os ficheiros estão separados por pastas
  • Precisam ainda de uma grande melhoria

Os documentos estão aqui

├── Chatbot
│   ├── ...
│   ├── custom
│   │   ├── Docs
│   │   │   └── ...
│   │   │   └── Whoosh
│   │   │   │  └── ...
│   │   │   │  └── MyDocuments
│   │   │   │  │   └── AQUI
│   │   │   │  └── ...
│   ├── ...
├── ...
Uma variável em Python é uma forma de associar um nome a um valor. Pense em cada variável como uma caixa que guarda algo e que podemos a qualquer momento ir nela para recuperá-lo. Na programação, o que será guardado nas variáveis são dados necessários aos nossos programas.

Exemplo:

<code>
base = 2
altura = 5
area = (base * altura) / 2
print(area)
</code>

<code_print> 5.0

No exemplo acima, criamos uma variável chamada base à qual atribuímos o valor 2, uma variável altura, à qual atribuímos o valor 5, e uma variável area, à qual atribuímos um cálculo envolvendo a base e a altura. 

O sinal de igualdade é necessário para dar a entender ao computador que você deseja criar uma variável e armazenar um dado nela.
-#-
  • Ao referir-me a bloco, quero dizer o bloco de informação que vai ser retornado ao estudante, onde o modelo diz estar a resposta (ao invés de retornar apenas a resposta).
  • Cada bloco é separado por -#-
  • Para separar as mensagens em vários balões, introduzir uma linha em branco entre as respetivas frases.
  • O aluno pode também pedir por exemplos, pelo que os determinados blocos de código devem conter uma linha com Exemplo:, seguida por código entre <code> e se pretendido o seu resultados <code_print>

5. Dados de treino

A modificação de qualquer destes dados requer voltar a treinar o Chatbot, e voltar a correr os servidores:

rasa train

5.1. Possíveis frases dos estudantes

As frases de treino a simbolizar as frases que o aluno poderá mandar ao Chatbot em Chatbot/data/nlu.yml.

5.2. Respostas

As frases que são retornada pelo Chatbot estão em Chatbot/domain.yml.

6. Deploy

Só copiar o ficheiro e correr

Atenção o ficheiro faz clone do git

sh deploy.sh

# ou com ambiente virtual
sh deploy_venv.sh

7. Problemas TODO (Gustavo)

  • Respostas automáticas precisa de uma GRANDE melhoria
  • Apenas fazer scroll depois do estudante ter visto, em vez de ir logo para baixo (tentei de várias maneiras mas ainda não consegui)
  • Erros lógicos...
  • Questionário

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published