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.
- 1. Leonardo
- 2. Chatbot FrontEnd
- 3. Erro de Sintaxe
- 4. Resposta Automática
- 5. Dados de treino
- 6. Deploy
- 7. Problemas TODO
- Erros Lógicos
- Verificar se concorda com as questões que defini e verificar a linguagem usada
- Integrar o componente do chatbot (mais informações no README)
- Base de dados (store da informação pertinente)??
Código disponivel em:
├── 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
│ ├── ...
├── ...
- 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
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)
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>
- 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>
A modificação de qualquer destes dados requer voltar a treinar o Chatbot, e voltar a correr os servidores:
rasa train
As frases de treino a simbolizar as frases que o aluno poderá mandar ao Chatbot em Chatbot/data/nlu.yml.
As frases que são retornada pelo Chatbot estão em Chatbot/domain.yml.
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
- 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