FATEC PROFESSOR JESSEN VIDAL
O uso de um parser como ferramenta para transformar lista de exercícios em um formato de troca de dados.
São José dos Campos
2015
1/20
Ambientes virtuais de aprendizagem possibilitam que professores criem conteúdos interativos. Porém não é possível que conteúdos já existentes sejam inseridos numa AVA de maneira fácil, como por exemplo listas de exercícios que estão em documentos de texto, os professores precisam inserir manualmente cada exercício na AVA.
2/20
O objetivo geral deste trabalho é desenvolver uma ferramenta que transforme listas de exercícios em formato de docx para um formato de troca de dados, por exemplo um javascript object notation (JSON). Permitindo assim que AVAs possam utilizar conteúdos dinâmicos.
3/20
Um docx é um conjuntos de arquivos xml compactados
4/20
Manipular docx é trabalhoso, além de que docx não é renderizado por navegadores. Sendo assim para alcançar os objetivos, antes do docx ser parseado, ele é transformado em html.
5/20
6/20
A máquina de estados finitos usada no projeto é uma DFA que consiste em três estados
7/20
Clean Html
8/20
Clean Html
9/20
[
[
<p>Exercício 1. A teoria da velocidade das reações, ou Teoria do complexo ativado, foi proposta para explicar o comportamento cinético da interação de espécies químicas.</p>,
<p>A respeito dessa teoria, é incorreto afirmar que: </p>,
<p>a) a velocidade da reação será tanto maior quanto maior for a energia potencial do complexo ativado.</p>,
<p>b) um estado de equilíbrio é estabelecido entre os reagentes e o complexo ativado.</p>,
<p>c) o complexo ativado é uma espécie de intermediária de elevada energia potencial.</p>,
<p>d) o complexo ativado se decompõe espotaneamente, formando os produtos da reação.</p>,
<p>e) a energia de ativação da reação direta corresponde à diferença entre as energias do complexo ativado e dos reagentes.</p>,
<p>Resposta: a</p>
]
]
Split Exercises
10/20
Validate Chunks
for chunk in self.chunks:
tags = self.get_tags(chunk)
difficulty = self.get_difficulty(chunk)
source = self.get_source(chunk)
hints = self.get_hints(chunk)
answer = self.get_answer(chunk)11/20
[\s]*?(Resposta|answer)\s*[:\).\-\s]*
12/20
Testes unitários são uma forma de garantir funcionamento correto de um sistema.
def test_parse_docx(self):
html = Docx2Html(u"Questões de matemática.docx").parsed.encode("utf-8")
fsm = FiniteStateMachineParser(html=html)
fsm.on_message("start")
exercise1 = fsm.exercises[0]
self.assertEquals(exercise1["stem"], "Qual é a raiz quadrada de 81 ?")
self.assertEquals(exercise1["choices"][0]["text"], "9")
self.assertEquals(exercise1["choices"][1]["text"], "8")
self.assertEquals(exercise1["choices"][2]["text"], "10")
self.assertEquals(exercise1["answer"], "a")13/20
Para mostrar resultados concretos do uso dessa ferramenta, ela foi integrada com um AVA chamada QMágico.
14/20
Tela de envio de arquivo
15/20
Arquivo sendo transformado
16/20
Exercício sendo utilizado
17/20
Contribuições
Desenvolvimento de uma ferramenta de transformação de documentos de texto em json.
Uso do conceito de máquinas de estados finitos para a arquitetura da ferramenta.
Uso de expressões regulares para extrair os dados do texto.
Integração da ferramenta com uma AVA.
18/20
Conclusões
É possível transformar documentos de texto em formatos de troca de dados extraindo os dados relevantes.
Desenvolver a ferramenta utilizando o conceito de máquina de estados finitos permite que extender a ferramenta de forma fácil.
Professores tem usados cada vez mais recursos digitais e remover as barreiras para o mundo digital é necessário.
19/20
Trabalhos Futuros
As contribuições alcançadas nesse trabalho servem como uma base para que educadores criem conteúdos digitais e essa base fornece a oportunidade para trabalhos futuros, tais como:
Permitir diversos formatos de texto como entrada, como por exemplo o formato em pdf.
Permitir diversos formatos de imagens.
Aceitar fórmulas e símbolos.
20/20