etapa3_elmano

Propaganda
Projeto de
Mineração de Dados
Nota 10,0: Parabéns!
Universidade Federal de Campina
Grande
Centro de Engenharia Elétrica e
Informática
DSC
N° DSC/000/96
Departamento de Sistemas e Computação
Detecção de Cola em
Provas Escolares
Elmano Ramalho Cavalcanti
UFCG/CEEI/DSC
[email protected]
20 páginas
Av. Aprígio Veloso, 882 — Bodocongó — Caixa Postal 10.106
58.109-970 — Campina Grande — PB — Brasil
Fone: 333-1929 — e_mail: [email protected]
COPIN: Fone / Fax: 333-1698 — e_mail: [email protected]
18 de dezembro 2007
1. O Problema
Cola de alunos em provas escolares é um assunto por demais
corriqueiro, embora sumamente indesejável. Não há uma definição precisa de
cola, mas supõe-se que haja cola toda vez que duas provas tenham um grau
suspeito de semelhança. O tamanho da cola é variável: pode ser uma parte de
uma questão, toda a questão, algumas questões, ou a prova inteira. Também,
a cola pode ser grosseira (um simples copiar-colar), ou sutil (um copiar-colar
parcial).
O que se quer é um sistema que detecte cola, de qualquer tamanho, ou
tipo.
2. A Proposta de Solução do Problema
Visto que as provas são documentos (textos não-estruturados), será
utilizada a técnica de Mineração de Texto para realizar a classificação dos
documentos (provas).
Em relação ao tipo de classificação será usada a classificação não
supervisionada, pois queremos que as provas mais similares sejam
agrupadas em um mesmo grupo (para detecção da cola).
Uma possível solução envolveria o uso do Hash Sensitivo Local (LSH)
[7] e [8]. A questão principal na classificação seria definir o label que será
usado. O ideal seria que o label fosse uma função hash, de forma a deixar as
provas
mais
similares
mais
próximas.
Se
provaA.hash
=
0.32
e
provaB.hash=0.31, as duas provas ficarão próximas na tabela hash, o que
indicará que houve uma provável cola. Quanto mais próximo os valores dos
hashs maior será a cola. Isso aparentemente resolveria o problema de agrupar
as colas por tamanho. Se a distância entre os hashes for maior que certo limiar
x então o sistema inferirá que não houve cola. O problema seria então
encontrar uma função dessas.
Embora a solução acima seja possível, neste trabalho foram utilizadas
as técnicas mais conhecidas de mineração de textos: o modelo de vetor de
espaços e o cálculo da similaridade por cosseno.
3. O Processo de Mineração
Para falar do processo de mineração é necessário refletir em como os
dados serão obtidos. No escopo deste projeto, por seu caráter puramente
acadêmico, os dados serão obtidos diretamente de fontes eletrônicas ou
criados manualmente em arquivos textos comuns, de forma que não será
necessário realizar as atividades iniciais de seleção, limpeza e amostragem
dos dados. Porém, serão necessárias outras etapas durante a preparação dos
dados.
As provas usadas neste projeto foram obtidas da seguinte maneira:
 Foram utilizadas 24 provas com questões subjetivas na área de
administração, da disciplina de Marketing da Unidade Acadêmica de
Administração e Contabilidade (UAAC) da Universidade Federal de
Campina Grande (UFCG);
 Foram criadas 6 provas fictícias simulando alunos que colaram de
alguns dos 24 alunos acima.;
A seguir são descritas as atividades que compõem o processo de
mineração de texto.
3.1 Preparação de Dados
Neste projeto, a preparação de dados é fundamental, pois temos que
levar em consideração fatores como pontuação/acentuação das palavras,
sinônimos, etc. Além disso, como na vida real um professor encontra cola ao
comparar a resposta de uma questão X pelo aluno A com a resposta da
mesma questão pelo aluno B, a prova terá que ser fragmentada em quatro
partes (número de questões).
Decorrente da divisão da prova por questões, será necessário definir um
dicionário para cada questão, ou seja, um conjunto de palavras que faz parte
do contexto da questão.
Seguindo as etapas de mineração de texto mostradas em [1], temos as
seguintes fases:
1. CodeMapper: remover a acentuação das palavras. Isso em geral é
bom, pois evita que o algoritmo de mineração diferencie palavras que na
realidade são as mesmas, por exemplo: em uma prova o aluno escreveu
“elétrico” enquanto que outro aluno escreveu “eletrico” (sem o acento). Nesta
etapa ocorrerá a troca de ‘ç’ por ‘c’, ‘é’ por ‘e’, etc. Embora isso ajude na
maioria dos casos, pode igualar palavras diferentes, no caso de palavras que
se diferenciam justamente pelo acento (ex: pelo/pélo/pêlo). Porém, como são
poucos esses casos, acredito que esse processo, quando necessário, ajude
bem mais do que atrapalhe.
A etapa CodeMapper foi realizada utilizando-se a API Java [12] e a
versão 3.3.1 da ferramenta Eclipse [13]. A seguir temos o mapeamento de
acentos feito nas provas, onde o primeiro vetor contém todos os acentos
possíveis na língua portuguesa e o segundo contém o resultado de como deve
ficar cada caractere.
Antes: {"á","é","í","ó","ú","ç","ã","õ","à","ü","ï","â","ê","î","ô","û"};
Depois: {"a","e","i","o","u","c","a","o","a","u","i","a","e","i","o","u"};
Considerei que as próximas etapas mostradas no tutorial da ferramenta
Rapidminer [14] fazem parte da Transformação de Dados, mostradas a seguir.
Todas as etapas a seguir foram feitas utilizando o Rapidminer.
3.2 Transformação de Dados
2. Tokenizer: Separa todo o texto em palavras, podendo desconsiderar
números. Pode ser criado n-grams [5] a partir dos tokens. Nesta etapa pode ser
interessante filtrar os tokens com poucos caracteres (removendo assim
preposições, artigos, conjunções, etc);
3. WorldFilter: Filtrar a lista criada na etapa anterior, através de uma lista de
stopwords. Stopwords são palavras comuns de uma língua como artigos,
preposições, conjunções ou palavras bastante comuns, e que geralmente são
desconsideradas nos processos de mineração de texto visto que não fornecem
significado a um documento.
Neste projeto foi utilizada a lista de stopwords da língua portuguesa
disponível no projeto Snowball [11]. Foram feitos alguns acréscimos de
palavras, de acordo com o domínio das questões da prova.
4. Stemmer/Reducer: Quando um aluno está colando uma prova, para tentar
mascarar a cola, ele poderá trocar as palavras por derivações ou sinônimos,
dessa forma, antes de começar a garimpagem dos dados é preciso mapear
todos os sinônimos de uma palavra para uma única palavra-base. Além das
palavras sinônimas há o caso das palavras de mesma família (radical).
Exemplo: o aluno A escreve “...processa-se o produto para então...” enquanto
que o aluno B olha a prova de A e escreve: “...o produto é processado para
então...”. Vemos que as palavras processa-se e processado possuem o mesmo
radical ‘process’. Para esta etapa foi utilizado o algoritmo de stemming do
projeto Snowball.
A WordNet [16] é uma famosa base de dados léxica da língua inglesa.
Foi realizada uma busca por uma extensão para a língua portuguesa, onde foi
encontrado a WordNet.PT [10] que infelizmente estava com problemas na
busca. Sendo assim, não foi implementado nenhum mapeamento de
sinônimos. Esse é um dos fatores que pode comprometer com a qualidade dos
resultados.
5. Criação do vetor: Após os tokens serem contados é criado um vetor que
indica a presença dos termos na prova (vetor-binário) ou a freqüência do termo.
Como a dimensão de uma questão é pequena (poucos parágrafos)
provavelmente não haverá necessidade de utilizar técnicas de compressão de
vetores.
O modo usado para criação do vetor foi o term frequency–inverse
document frequency (TFIDF) [15]. O tamanho do vetor ficou na faixa de 500
colunas. A fórmula do TFIDF é dada abaixo:
Onde:
1. fij = o número de ocorrência do termo i no documento j;
2. fdj = o número total de ocorrências no documento j;
3. fti = o número total de documentos em que o termo i aparece pelo
menos uma vez.
O resultado acima foi normalizado para o tamanho unitário Euclidiano.
Não foi utilizado pruning (podagem) pois verificou-se que sua utilização
piorava os resultados do cálculo de similaridade.
A figura abaixo mostra a cadeia de processos realizada no RapidMiner.
Figura 1 – cadeia do processo de mineração.
O TokenLengthFilter foi usado para filtras os tokens com menos de 3
caracteres.
Após a seqüência de transformação indicada pelo retângulo amarelo da
figura acima, temos a etapa de garimpagem, definida pelo operador
ExampleSet2Similarity, onde será calculada a similaridade entre as provas.
3.3 Garimpagem
A garimpagem ou mineração utilizada foi a classificação nãosupervisionada. Em mineração de texto isso pode ser feito usando-se de
similaridade, modelagem estatística ou por regras de decisão. O modelo
escolhido foi o de similaridade.
Existem diversos algoritmos de similaridade de strings, baseados ou não
em vetores de espaço. Alguns exemplos de bibliotecas de código livre
contendo alguns algoritmos de métrica de similaridade são o Simmetrics [3] e o
SecondString [4]. No entanto, visto que o Rapidminer já possui muitas dessas
funções integradas ao software, não foi necessário utilizar outra ferramenta.
A função de similaridade escolhida foi a do co-seno, a qual retorna um
valor real no intervalo [0,1] para cada par de provas, onde zero significa
ausência total de semelhança e um similaridade máxima.
Como foram elaboradas trinta provas, temos que a tabela resultado da
aplicação da similaridade-cosseno contém 435 linhas, que nada mais é que a
combinação de 30 dois a dois, que é igual a 30*29/2.
3.4 Análise e Assimilação
Como visto no início do capítulo 3, foram elaboradas seis provas
contendo colas de tamanhos diferentes: pequena, razoável e grande. A tabela
abaixo mostra o mapeamento de cola criado.
Aluno
25
Colou pouco de
aluno02/questao2
26
27
28
29
30
Colou razoável de
aluno01/questao1
aluno01/questao1
aluno05/questao4
aluno02/questao4
Colou muito de
aluno01/questao1
aluno05_questao2
aluno07_questoes3,4
aluno03/questao2
aluno02/todas
aluno01/todas
Tabela 1 – quadro de colas.
A partir destes dados, pôde-se avaliar o desempenho do processo de
mineração, verificando se este detectava as colas criadas acima. A seguir
mostraremos os resultados da similaridade e agrupamento para cada questão.
 Questão 1
A tabela abaixo mostra as quinze maiores prováveis colas feitas na
questão1. As maiores colas detectadas ocorreram entre as provas dos alunos
01 e 25, 01 e 30, 02 e 29. Segunda a Tabela 1, ocorreu grande cola justamente
entre as duas primeiras duplas da tabela. A terceira linha (alunos 02 e 29)
ocorreu na realidade uma cola razoável, porém o algoritmo o colocou com
similaridade próxima a de cola grande. Em geral, a princípio vemos que a
mineração teve sucesso pois detectou as colas criadas manualmente.
Prova A
01
01
02
01
25
26
25
01
25
13
26
27
11
22
13
Prova B
25
30
29
26
30
30
26
27
27
08
27
30
17
6
28
Similaridade
0,789
0,749
0,722
0,666
0,660
0,552
0,541
0,329
0,306
0,286
0,269
0,235
0,190
0,165
0,152
Tabela 2 – similaridade na questão 1.
Poderíamos estimar da seguinte maneira os valores para os quais se
consideraria uma cola grande, razoável (média), ou pequena:

Cola grande: similaridade maior ou igual que 0.70;

Cola razoável: similaridade maior ou igual a 0.40 e menor que 0.70;

Cola pequena: similaridade maior ou igual a 0.25 e menor que 0.40;

Ausência de cola: similaridade menor que 0.25.
Usando a definição acima, verificaremos o índice de acerto na detecção
de colas na primeira questão da prova.
Uma visão interessante que a ferramente RapidMiner disponibiliza é o
GraphView, onde cada aluno é um nodo de um grafo, e as arestas ligam os
alunos cujas questões estão mais similares, indicando o valor da similaridade
no meio da aresta. É possível partir de apenas uma aresta até chegar a
conecar todas as arestas possíveis. As arestas surgem da maior similaridade
até a menor. Dessa forma, para encontrar-mos onde estão as colas basta
avançarmos no número de arestas até que o menor valor seja maior ou igual a
0.25 (limiar entre cola pequena e ausência de cola). Abaixo temos a visão do
grafo circular mostrando a incidência das colas grandes e razoáveis
(similaridade >= 0.40).
Figura 2 – visão do grafo circular da questão 1.
Para as próximas questões, serão apresentados a tabela de similaridade
e o grafo circular de similaridade e no final será mostrada uma tabela onde
poderemos perceber a acurácia que a mineração teve na detecção de cola em
todas questões.

Questão 2
Prova A Prova B Similaridade
26
05
0,725
27
03
0,714
01
30
0,710
02
29
0,511
02
25
0,286
25
29
0,279
10
12
0,203
11
18
0,173
11
25
0,171
11
29
0,154
13
16
0,146
Tabela 3 – similaridade na questão 2.
Figura 3 – visão do grafo circular da questão 2.

Questão 3
Prova A
25
01
25
26
02
27
19
22
11
01
14
11
Prova B
26
30
07
07
29
05
22
30
15
22
18
5
Similaridade
0,821
0,801
0,712
0,674
0,554
0,230
0,216
0,184
0,168
0,165
0,156
0,144
Tabela 4 – similaridade na questão 3.
Figura 4 – visão do grafo circular da questão 3.

Questão 4
Prova A
01
26
02
27
02
28
21
13
08
17
Prova B
30
07
29
29
27
05
05
20
09
03
Similaridade
0,878
0,856
0,497
0,404
0,323
0,290
0,220
0,181
0,152
0,150
Tabela 5 – similaridade na questão 4.
Figura 5 – visão do grafo circular da questão 4.
Além do grafo em círculo, existe umo tipo de vizualição de similaridade,
chamada de ISOM, que agrupa as provas similares deixando-as próximas uma
das outras. Abaixo está um exemplo equivalente ao da Figura 5:
Figura 6 – Clustering de cola em provas.
4. Detector de colas em provas (oráculo)
O programa Preditor, ou Oráculo, tem por objetivo dizer, dado duas
provas, o tipo de cola encontrada (grande, razoável, pequena, nenhuma). Além
disso, deve ser capaz de agrupar um conjunto de provas em relação ao tipo de
cola existente entre elas.
A tabela abaixo mostra o conjunto de previsão utilizado para calcular a
acurácia do Oráculo. As duas primeiras colunas indicam os alunos envolvidos,
a terceira indica o número da questão da prova, a quarta mostra a similaridade
entre a mesma questão do AlunoA e do AlunoB, a quinta defini o tipo de cola
que o sistema acusa, a sexta contém o tipo verdadeiro de cola (segundo
análise humana), e a sétima e última coluna indica se o algoritmo acertou ou
não na inferência. A tabela está ordenada primeiramente pela questão da
prova, e em seguida em ordem decrescente de grau de similaridade.
AlunoA
1
1
2
1
25
26
25
1
25
13
26
27
1
26
27
2
2
25
10
25
1
25
26
2
27
19
1
26
2
27
2
28
21
AlunoB
30
25
29
26
30
30
26
27
27
8
27
30
30
5
3
29
25
29
12
26
30
7
7
29
5
22
30
7
29
29
27
5
5
Questão Similaridade Tipo inferido
1
0,75
grande
1
0,79
grande
1
0,72
grande
1
0,67
razoável
1
0,66
razoável
1
0,55
razoável
1
0,54
razoável
1
0,33
pequena
1
0,31
pequena
1
0,29
pequena
1
0,27
pequena
1
0,23
nenhuma
2
0,71
grande
2
0,72
grande
2
0,71
grande
2
0,51
razoável
2
0,29
pequena
2
0,28
pequena
2
0,2
nenhuma
3
0,82
grande
3
0,8
grande
3
0,71
grande
3
0,67
razoável
3
0,55
razoável
3
0,23
nenhuma
3
0,22
nenhuma
4
0,88
grande
4
0,86
grande
4
0,5
razoável
4
0,4
razoável
4
0,32
pequena
4
0,29
pequena
4
0,22
nenhuma
Tipo real
grande
grande
razoável
razoável
grande
razoável
razoável
pequena
razoável
nenhuma
pequena
pequena
grande
grande
grande
razoável
pequena
razoável
nenhuma
grande
grande
grande
grande
razoável
nenhuma
nenhuma
grande
grande
razoável
nenhuma
razoável
pequena
nenhuma
Acertou?
sim
sim
não
sim
não
sim
sim
sim
não
não
sim
não
sim
sim
sim
sim
sim
não
sim
sim
sim
sim
não
sim
sim
sim
sim
sim
sim
não
não
sim
sim
Tabela 6 – quadro de verificação dos testes
A partir da tabela acima foi possível construir a Matriz de Confusão e o
quadro de acurácia de testes mostrados a seguir.
Matriz de confusão
grande razoável pequena
grande
10
2
0
razoável
1
6
3
pequena
0
0
4
nenhuma
0
1
1
Total
11
nenhuma
0
0
1
4
9
8
5
Tabela 7 – Matriz de confusão.
Total
12
10
5
6
33
Total de acertos
24
Total de erros
9
Acurária 72,73%
Tabela 8 – Acurácia de testes.
A partir da Matriz de Confusão (MC), vamos calcular o índice Kappa,
dado pela fórmula abaixo:
q1 - q 2
κ̂ =
1 - q2
c
q1 =
åx
i =1
ii
n
c
q2 =
åx
i =1
i+
x+ i
n2
Onde a primeira fórmula é o índice Kappa, a segunda a exatidão total e
a terceira a exatidão total considerando que a verdade (1a coluna da MC) e a
classificação (1a linha da MC) são independentes.
Fazendo os cálculos chegamos ao resultado de que o índice Kappa foi
de 0,63. De acordo com a interpretação deste índice mostrada em [17], temos
que o índice situa-se na categoria “Substantial agreement” (que vai de 0,6 a
0,8), a segunda melhor possível, o que sugere uma boa qualidade de inferêcia
na detecção de colas.
Uma justificativa para alguns dos erros de inferência apresentados pode
ser a ausência do uso de algoritmos de mapeamento de sinônimos de palavras
e locuções gramaticais, de forma que provas similares semanticamente e não
lexicamente não poderam ser captadas pela mineração utilizada.
5. Conclusões
O projeto descrito neste documento consistiu em propor uma solução
para o problema de detecção de colas em provas escolares através de
mineração de dados.
Na implementação da solução foi utilizada a abordagem de mineração
de texto e o paradigma da classificação não-supervisionada utilizando-se o
modelo de vetor de espaços [18].
Utilizou-se o RapidMiner [14], software open-source para descoberta de
conhecimento, aprendizagem de máquina e mineração de dados, nas etapas
de preparação, transformação, garimpagem e análise dos resultados.
Foi elaborado um conjunto predição para avaliar a acurácia do Detector
de Colas (Oráculo). O resultado indicou uma acurácia de 73%, e índice Kappa
de 0,63, o que aparenta um bom resultado [17].
Bibliografia
[1]
Adaptive Duplicate Detection Using Learnable String Similarity Measures
Mikhail Bilenko and Raymond J. Mooney. Proceedings of the Ninth ACM
SIGKDD International Conference on Knowledge Discovery and Data Mining
(KDD-2003), pp. 39-48, Washington DC, August 2003.
[2]
Learnable Similarity Functions and Their Applications to Clustering and Record
Linkage. Mikhail Bilenko. Proceedings of the Ninth AAAI/SIGART Doctoral
Consortium, pp. 981-982, San Jose, CA, July 2004.
[3]
CHAPMAN, Sam. SimMetrics: a Java \& C\# .NET library of Similarity Metrics.
2004. http://sourceforge.net/projects/simmetrics/
[4]
COHEN W. William; RAVIKUMAR Pradeep; FIENBERG Stephen.
SecondString: Open source Java-based Package of Approximate StringMatching. 2003. Disponível em: http://secondstring.sourceforge.net/
[5]
http://en.wikipedia.org/wiki/N-gram
[6]
Tutorial Rapidminer-text 4.0, disponível em:
http://ufpr.dl.sourceforge.net/sourceforge/yale/rapidminer-text-4.0tutorial.pdf
[7]
CS276: Information Retrieval and Web Mining. Lecture 19 - Text Mining and
LSH. Stanford University. Disponível em:
www.stanford.edu/class/cs276/handouts/lecture19.ppt
[8]
http://en.wikipedia.org/wiki/LSH
[9]
http://en.wikipedia.org/wiki/Near_Duplicate_Algorithms
[10]
WordNet.PT - Rede Léxico-Conceptual do Português, disponível em:
http://www.instituto-camoes.pt:8080/wordnet
[11]
http://snowball.tartarus.org/
[12]
http://java.sun.com/j2se/1.5.0/docs/api/
[13]
http://www.eclipse.org/
[14]
Rapidminer - Open-Source Data Mining with the Java Software RapidMiner /
YALE. Disponível em: http://rapid-i.com/
[15]
http://en.wikipedia.org/wiki/TFIDF
[16]
WordNet - a lexical database for the English language. Cognitive Science
Laboratory, Princeton University, 2006.
[17]
Landis, J. R. and Koch, G. G. (1977) "The measurement of observer
agreement for categorical data" in Biometrics. Vol. 33, pp. 159--174
[18]
G. Salton, A. Wong, and C. S. Yang (1975), "A Vector Space Model for
Automatic Indexing," Communications of the ACM, vol. 18, nr. 11, pages
613–620.
Apêndice A
A.1 Os Dados

As vinte e quatro provas reais usadas no projeto estão no formato .doc
do
Microsof
Word
e
podem
ser
vistas
na
pasta
1_pre-
processamento/1_documentos_originais. Cada prova foi nomeada com
o email real do aluno que a fez. As seis provas fictícias restantes foram
criadas já segmentadas, e portanto não estão na pasta acima.

A lista de colas criadas manualmente estão descritas no arquivo
tabela_das_colas.html.

A lista de stopwords está no arquivo portuguese_stopword_list.txt, na
pasta 1_pre-processamento.

Os
dicionários
para
cada
questão
estão
na
pasta
1_pre-
processamento/dicionarios.

O arquivo de descrição do processo de mineração do RapidMiner é o
DetectorColaRapidMiner.xml
A.2 Os Dados Preparados
 Os dados originais foram transformados em arquivos xml para possível
utilização em outras ferramentas. Estes podem ser vistos na pasta
1_pre-processamento/2_documentos_xml.
 As provas segmentadas por questões estão disponíveis na pasta
1_pre-processamento/3_documentos_segmentados.
 As provas com o texto em letras minúsculas e sem acentuação estão
na pasta 1_pre-processamento/4_documentos_pre-processados.
A.3 Os Dados Transformados

As questões após a vetorização estão na pasta 2_transformacao. Os
arquivos .aml são de descrição dos atributos (colunas do vetor),
enquanto que os arquivos .dat são os vetores.

Uma parte das tabelas de similaridade por cosseno das quatro questões
estão na pasta 3_resultado, nos arquivos .txt. Cada linha possui três
colunas, onde as duas primeiras são duas provas e a terceira o grau de
similaridade entre elas.

As imagens relativas ao clustering estão também na pasta 3_resultado.
A.4 “Logs” das Execuções
 Os logs foram criados pelo RapidMiner após a execução, para cada
questão,
da
cadeia
de
processos
(preparação+transformação+mineração) no RapidMiner. Eles estão na
pasta logs.
A.5. [O
código fonte do programa Oráculo]
Devido a alguns problemas surgidos durante o período do projeto, não
foi possível desenvolver um programa oráculo específico para detecção de
colas em provas. Porém, foi possível criar um conjunto predição e calcular a
acurácia e índice Kappa do oráculo, mesmo sem tê-lo codificado, pois este
apenas implementaria o modelo definido no processo de mineração.
A.6. [O instalador do programa Oráculo]
Ver item acima. Porém, se você quiser comprovar a acurácia do Oráculo
mostrado neste trabalho, faça o seguinte:
1. Baixe a ferramenta RapidMiner no site:
http://sourceforge.net/projects/yale;
2. Baixe o plugin de mineração de texto do RapidMiner (mesmo site
acima);
3. Com o RapidMiner aberto abra o arquivo DetectorColaRapidMiner.xml;
4. Configure os parâmetros de entrada dos operadores ListaQuestao1,
ListaQuestao2, ListaQuestao3 e ListaQuestao4, indicando o diretório
onde se encontram os arquivos que contém as respostas dos alunos
para cada questão;
5. Se quiser, altere o modo de criação do vetor (binário, TFIDF, etc) e a
função de similaridade (existem várias);
6. Execute o processo;
7. Após o término da execução aparecerá a janela para análise do
resultado.
Para
cada
questão, haverá uma aba mostrando o
ExampleSet, que é a tabela com os vetores de espaço, e uma tabela
com a similaridade entre cada par de aluno/questão. Ordenando a
similaridade em ordem descrescente você então poderá saber o que o
oráculo iria inferir a respeito da cola. A partir daí, existem quatro
possivilidades:

Se similaridade > 0.70 o oráculo consideraria que houve uma cola
grande entre o par aluno/questão;

Se similaridade entre 0.40 e 0.70, o oráculo consideraria que houve uma
cola razoável;

Se similaridade entre 0.25 e 0.40 o oráculo acusaria uma cola pequena;

Caso contrário o oráculo diria que não houve cola nessa questão;
Elmano Ramalho Cavalcanti
Download