Descripcion del Problema | Descripción de los Datos | Limpieza de los Datos | Exploración de Datos | Resultados | Conclusiones
Nuestros datos serán pares de nodos que representan instrucciones de C#, recolectados a partir de pares de versiones consecutivas de ficheros, original y modificado, de un proyecto local Git. Una declaración de campo tiene la siguiente anatomía:
FIELD DECLARATION = ATTRIBUTES MODIFIERS Id [= INITIALIZER]
(ej: [Serializable] public static table = new Table(“Customer”);)
Respecto a los pares consecutivos que serán analizados, estos son de la siguiente forma:
private readonly IndentedStringBuilder _stringBuilder //sentencia original
private readonly StringBuilder _stringBuilder = new StringBuilder() //sentencia modificada
Para cada uno de estos pares, se aplicaron distintas métricas texto, ya sea de distancia como Levenshtein, de Euclides, de Bloque, entre otros. También se ejecutaron sobre ellos algoritmos de similitud tales como las utilizadas en la comparación de Coseno, Jaccard, Dice, entre otros. Por último, se agregaron atributos como cantidad de tokens, coordenadas X e Y y nodos reflejados en el árbol de sintaxis referidas a cada uno de los pares analizados. De esta manera y tomando como referencia las sentencias anteriormente descritas, se consideraron 18 métricas para el texto completo de las declaraciones, las cuales se pueden reflejar de manera resumida como sigue a continuación:
Sentencia Original | Sentencia Modificada | Levenshtein | Eucledian Distance | Jaccard |
---|---|---|---|---|
private readonly IndentedStringBuilder | private readonly StringBuilder | 0.661764 | 0.2022759 | 0.222222 |