Rahmani, Sajjad (2023). Towards recommending code examples using informal documentation. Mémoire de maîtrise électronique, Montréal, École de technologie supérieure.
Prévisualisation |
PDF
Télécharger (1MB) | Prévisualisation |
Résumé
Past and recent research in the code example recommendation area has been accomplished to guide developers during their software development tasks. In effect, programmers spend a considerable amount of time on the Internet to find the relevant code examples to their tasks using source code of open-source projects and–or informal documentation. Informal documentation is an invaluable resource for finding helpful code examples trapped in Stack Overflow discussions, forums, emails exchanged between developers, etc.
In our research, we have focused on Stack Overflow, which is one of the most popular resources for software developers’ discussions on different topics. We have collected and recommended the best code examples in the Java programming language that have been labeled as the answer code examples in order to increase the quality of the recommended code examples.
Our approach has applied the Bidirectional Encoder Representations from Transformers (BERT), a model for text representation that is able to extract the semantic information of textual data properly. We have used BERT, in a first stage, to encode code examples with numerical vectors. In the next step, we have applied Locality-sensitive hashing (LSH) that has been leveraged to find the Approximate Nearest Neighbors (ANN). In our research, we have applied two versions of this approach, i.e., the Random Hyperplane-based and the Query-Aware LSH.
We have compared these two algorithms based on four parameters including HitRate, Mean Reciprocal Rank (MRR), Average Execution Time, and Relevance. The findings of our study have shown that the Query-Aware (QA) approach performs better, in terms of HitRate, compared to the Random Hyperplane-based (RH) (from 20% to 35%) for query pairs respectively. QA is at least 4 times faster than RH for creating Hashing tables and assigning data samples to buckets. it returns code examples in milliseconds (ms), however, it takes seconds (sec) for RH to recommend the code examples.
The QA algorithm takes into account the query, i.e., a Natural Language query or an API method and it is able to filter out the irrelevant code examples at the initial steps of the algorithm. Additionally, based on the evaluation of the obtained results, i.e., recommended code examples by two experienced software developers and the metrics’ values, QA approach recommends more similar examples based on the query values compared to the RH approach.
Titre traduit
Vers la recommandation d’exemples de code à l’aide de la documentation informelle
Résumé traduit
Au cours des dernières années, un ensemble de travaux de recherche dans le domaine de la recommandation des exemples de code a été accompli afin de faciliter les tâches de développement de logiciels pour les développeurs. En effet, ces derniers passent beaucoup de temps sur Internet pour trouver les exemples de code pertinents pour leurs tâches, y compris les projets open-source et la documentation informelle. La documentation informelle est une ressource inestimable pour trouver des exemples de code utiles incorporant des discussions, des forums, des e-mails, le Stack Overflow, etc. Dans nos recherches, nous nous sommes concentrés sur le Stack Overflow qui est l’un des sites Web les plus populaires englobant les discussions des développeurs logiciels autour de différents langages de programmation. Nous avons collecté et recommandé les meilleurs exemples de code dans le langage de programmation Java, qui ont été étiquetés comme des exemples de code dans les discussions du type réponses pour augmenter la qualité des exemples de code recommandés. Dans notre approche, nous avons appliqué les représentations d’encodeurs bidirectionnels à partir de transformateurs (BERT), un modèle de représentation de texte capable d’extraire correctement les informations sémantiques du texte ; Nous avons utilisé BERT pour coder des exemples de code avec des vecteurs numériques. Dans l’étape suivante, nous avons appliqué le hachage sensible à la localité (LSH) qui est appliqué pour trouver les voisins les plus proches approximatifs (ANN). Nous avons appliqué deux versions de cette approche, i.e., Random Hyperplane-based et Query-Aware. Ces algorithmes sont comparés en fonction de plusieurs paramètres. Nous avons comparé ces deux algorithmes en termes de quatre paramètres, notamment HitRate, Mean Reciprocal Ranking (MRR), Average Execution Time et Relevance. Les résultats de la comparaison montrent que l’approche Query-Aware est performante par rapport au Random Hyperplane-based. L’algorithme Query-Aware agit en tenant compte de la requête, i.e., la méthode pour laquelle nous faisons des recommendations des exemples de code. Il est capable, dans un premier lieu, de filtrer les exemples de code non pertinents aux premières étapes. Ensuite, il recommande des exemples de code supposés être pertinents en se basant sur les valeurs de la requête, par rapport à l’approche basée sur l’hyperplan aléatoire.
Nous avons comparé ces deux algorithmes sur la base des paramètres mesurés. Les conclusions de notre étude ont montré que l’approche Query-Aware (QA) est plus performante que l’approche Random Hyperplane-based (RH) (de 20% à 35% respectivement) quand elle est basée sur des paires de requêtes dans HitRate.
Type de document: | Mémoire ou thèse (Mémoire de maîtrise électronique) |
---|---|
Renseignements supplémentaires: | "Thesis presented to École de technologie supérieure in partial fulfillment of a master’s degree with thesis". Comprend des références bibliographiques (pages 87-91). |
Mots-clés libres: | Stack Overflow, BERT, LSH, ANN, LSH sensible aux requêtes, basé sur un hyperplan aléatoire, HitRate, MRR, pertinence |
Directeur de mémoire/thèse: | Directeur de mémoire/thèse Guerrouj, Latifa |
Programme: | Maîtrise en ingénierie > Génie |
Date de dépôt: | 14 mars 2023 13:20 |
Dernière modification: | 14 mars 2023 13:20 |
URI: | https://espace.etsmtl.ca/id/eprint/3202 |
Gestion Actions (Identification requise)
Dernière vérification avant le dépôt |