Está en la página 1de 23

Detección de plagio en código

fuente Java mediante


tokenización y aprendizaje de
máquina
Misael Fernando Perilla Benítez – VII Congreso Internacional de Ingeniería
Universidad de Cundinamarca- 2018
Motivación

▪ Plagio en las instituciones de educación superior.


▪ Factores (Eret & Ok, 2014)
▪ Culturales
▪ Institucionales-contextuales
▪ Personales.
▪ Incremento de casos y de personas.
▪ Internet. (Subroto & Selamat, 2014)
Plagio

“el uso indebido y/o sin


autorización de un recurso
creado por una persona u
organización, para hacerlo
pasar como propio por un
tercero” (Durán, 2016).
Incremento de 30% ~126%
en casos de plagio. (Pérez
Afonso, 2013). Tomado de: https://binged.it/2QQVT8m
Plagio en Código fuente

• Presentar un trabajo 100% plagio.


• Ctrl+C / Ctrl+V.
• “Parafrasear” código.
• Traducción de fuente original.
Tomado de: https://docs.moodle.org/22/en/images_en/b/b1/comparison_view.png
Tokenización

“Son los elementos en que el preprocesado desmenuza el


código fuente. En un lenguaje de programación, los tokens
son el equivalente a las palabras y signos de puntuación en
el lenguaje natural escrito.” (ECURED, s/f).

int i; float f;
Tokens

int i; float f;
int - palabra clave
i- identificador
;- puntuador
float - palabra clave
f identificador
; - puntuador
Léxico y Gramática

Léxico: caracteres permitidos en un lenguaje específico


https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html.

Gramática: reglas para usar el léxico y ser entendido


https://docs.oracle.com/javase/specs/jls/se7/html/jls-2.html
Aprendizaje de Máquina

Tomado de: https://www.youtube.com/watch?v=k4ovpelG9vs


Aprendizaje de Máquina

Tomado de: https://www.datasciencecentral.com/profiles/blogs/soccer-and-machine-learning-2-hot-topics-for-2018


Herramientas Usadas

▪ *NetBeans 8.2
▪ **SQLite3
▪ ***ANTLR 4.7.1
▪ ****Weka 3.6.

*Tomados de: https://blog.idrsolutions.com/2014/06/java-performance-tuning-tools/netbeans-logo/


** https://en.wikipedia.org/wiki/SQLite#/media/File:SQLite370.svg
*** https://github.com/antlr/antlr4
**** https://www.youtube.com/watch?v=Nzg5j5hUPus
Gramática de Java 8.

Disponible en:
https://github.com/antlr/grammars-
v4/blob/master/java8/Java8.g4
Lexer y Parser.
Análisis del código de entrada
Weka (Waikato Environment for Knowledge
Analysis)
Generación del Corpus y Modelo SMO
(Sequencial Minimal Optimization) (Shao, Wu, & Liao, 2013)
Atributos por Analizar
Vista al Programa
Resultados
▪ 153 atributos para detección de plagio.
▪ Entrenamiento con 76 muestras tardó 0,03 segundos.
▪ ~63% de precisión.
Problemas
▪ Resultados en Aplicación Java Generada funciona en aproximadamente 63% de
los casos desde WEKA, causado por el tamaño de las muestras para el
entrenamiento (dataset pequeño).

Número total de Número de


archivos archivos plagiados
Detectados

Códigos 30 19
Plagiados
Códigos 30 0
Originales
Trabajos Futuros
▪ Continuar el proyecto (Más lenguajes).

▪ Extender el alcance (no solo asignaturas de


programación).
Conclusiones
▪ Aprendizaje de Máquina y su apoyo en procesos repetitivos, con calidad y
precisión.
▪ ANTLR y Weka son herramientas muy potentes.
▪ Los atributos seleccionados no solo permiten la detección de plagio, pueden ser
usados para promover buenas practicas.
▪ Para entrenar correctamente se requiere de un conjunto de datos mayor.
Referencias
▪ ECURED. (s/f). Tokens - EcuRed. Recuperado el 17 de octubre de 2018, a partir de
https://www.ecured.cu/Tokens
▪ Eret, E., & Ok, A. (2014). Internet plagiarism in higher education: tendencies, triggering factors and
reasons among teacher candidates. Assessment and Evaluation in Higher Education, 39(8), 1002–
1016. https://doi.org/10.1080/02602938.2014.880776
▪ Durán, J. P. (2016). Detección automática de plagio usando información sintáctica. Instituto
Politécnico Nacional. Recuperado de http://tesis.ipn.mx/handle/123456789/21664
▪ Machine Learning Group at the University of Waikato. (2018). Weka 3 - Data Mining with Open Source
Machine Learning Software in Java. Recuperado el 4 de junio de 2018, a partir de
https://www.cs.waikato.ac.nz/ml/weka/
▪ Shao, X., Wu, K., & Liao, B. (2013). Single directional SMO algorithm for least squares support vector
machines. Computational Intelligence and Neuroscience, 2013. https://doi.org/10.1155/2013/968438
▪ Subroto, I. M. I., & Selamat, A. (2014). Plagiarism Detection through Internet using Hybrid Artificial
Neural Network and Support Vectors Machine. TELKOMNIKA (Telecommunication Computing
Electronics and Control), 12(1), 209. https://doi.org/10.12928/TELKOMNIKA.v12i1.648

También podría gustarte