Abstract:
Estamos interesados para calcular la similitud entre programas fuentes (misma que puede ser considerada como plagio, bajo ciertas circunstancias). Este interés nació durante mi desempeño como entrenador de Olimpiada de Informática, para encontrar programas y/o ideas de soluciones similares entre los competidores.
Para determinar la similitud entre programas utilizo un enfoque basado en técnicas de recuperación de información, utilizando la representación vectorial de un documento como una bolsa de palabras y el uso de una herramienta de aprendizaje automático (WEKA) para clasificar y evaluar los resultados a través de la validación cruzada de 10 repeticiones.
Presento cómo obtuvimos el corpus de programas de lenguaje Karel y cómo lo preparamos. Posteriormente describo los experimentos teniendo en cuenta los siguientes elementos:
• Preprocesamiento del corpus,
• La representación de los programas,
• La ponderación de términos y la creación de las dimensiones en un Modelo de Espacio Vectorial,
• La normalización y ponderación de términos (características),
• La aplicación del análisis semántico latente.
Los resultados de los experimento demuestran que el trabajo con 3-gramas y utilizando sistema de ponderación tf-idf nos da una mejor clasificación. Así, el principal resultado de este trabajo es que el uso de los 3-gramas mejora el rendimiento de nuestra tarea, debido a la forma secuencial de las instrucciones que se encuentran en la mayoría de los códigos los programas siguen el orden de ejecución de arriba a abajo y de izquierda a derecha.