Simple Science

La science de pointe expliquée simplement

# Informatique# Calcul et langage

Classer des problèmes de programmation compétitive avec l'apprentissage profond

Les systèmes automatisés améliorent la recherche de défis de programmation compétitive grâce à la classification de texte.

― 6 min lire


Apprentissage profondApprentissage profondpour les problèmes decodeproblèmes pour les programmeurs.Automatiser la classification des
Table des matières

Ces dernières années, les domaines de l'apprentissage machine et de l'Apprentissage profond ont beaucoup évolué, notamment dans la façon dont les ordinateurs comprennent le langage humain. Un domaine qui a attiré l'attention, c'est la programmation compétitive. C'est un moyen pour les gens de s'entraîner et d'améliorer leurs compétences en codage en résolvant divers problèmes. Avec autant de problèmes disponibles en ligne, il peut être difficile pour les débutants comme pour les programmeurs expérimentés de choisir ceux qui leur conviennent. C'est là que les systèmes automatisés peuvent aider. En utilisant la Classification de texte, on peut trier les problèmes selon leurs sujets, ce qui facilite la recherche de défis adaptés.

Classification de texte

La classification de texte est un processus qui consiste à regrouper des textes en fonction de leur contenu. Cette technique a de nombreuses utilisations, comme détecter les emails de spam, identifier le sujet des articles et analyser les sentiments dans les publications sur les réseaux sociaux. La classification de texte peut être divisée en deux types principaux : la classification binaire et la Classification multi-classes. Dans la classification binaire, un texte est assigné à l'une des deux catégories, tandis que dans la classification multi-classes, un texte peut appartenir à l'une de plusieurs catégories. Il existe aussi une classification multi-label, où un seul texte peut correspondre à plusieurs catégories en même temps.

La classification multi-classes est devenue un sujet de recherche populaire. Chaque texte peut être lié à plusieurs étiquettes, et cette approche est utile dans de nombreuses situations réelles, comme l'organisation de documents ou le balisage d'images. Avec les avancées en apprentissage profond, on peut utiliser des modèles comme les Réseaux de Neurones Convolutionnels (CNN) et les Réseaux de Neurones Récurrents (RNN) pour améliorer les systèmes de classification de texte.

Travaux connexes

De nombreuses études se sont penchées sur la classification de texte multi-label en utilisant des techniques d'apprentissage profond. Par exemple, certains chercheurs ont comparé différentes méthodes d'apprentissage machine en utilisant un ensemble de données d'emails de spam. Ils ont trouvé que Random Forest était le meilleur en termes de précision, de rappel et de score F1. D'autres études ont montré que les ConvNets au niveau des caractères peuvent classer efficacement des textes sans se baser sur des méthodes traditionnelles basées sur les mots. Certains modèles se sont même concentrés sur l'amélioration des performances de la classification de texte avec de grands ensembles de données, découvrant que des modifications apportées aux modèles existants peuvent donner de meilleurs résultats.

Une autre approche a utilisé des techniques simples d'augmentation des données pour améliorer les performances des RNN et des CNN dans des tâches spécifiques. Différentes architectures de modèles ont été proposées, y compris celles utilisant BERT pour générer des embeddings de documents ou différentes formes de réseaux de neurones pour capturer efficacement les relations entre les mots. Ces méthodes soulignent l'importance de rester à jour avec les dernières avancées en apprentissage profond pour améliorer davantage la classification de texte.

Collecte de données

Pour notre étude, nous avons rassemblé des données d'un site bien connu qui propose des problèmes de programmation compétitive. Ce site présente des problèmes lors de divers concours, chacun avec des niveaux de difficulté différents. Pour collecter les données, nous avons utilisé un outil de web scraping pour recueillir des informations sur les énoncés de problèmes et les étiquettes associées. L'objectif était de collecter des étiquettes spécifiques pour garantir une classification précise. Les données collectées ont été organisées dans un format structuré, ce qui a facilité l'analyse et le traitement.

Prétraitement des données

Une fois les données collectées, la première étape consistait à les préparer pour l'analyse. Cela incluait le nettoyage des énoncés de problèmes et des étiquettes. Les caractères spéciaux et les informations inutiles ont été supprimés, et les étiquettes restantes ont été organisées pour une meilleure classification. Le processus de nettoyage a également impliqué la conversion de tout le texte en minuscules et la suppression des mots courants qui n'ajoutent pas de sens aux énoncés. Enfin, les données nettoyées ont été combinées en un seul ensemble de données, prêtes pour les prochaines étapes.

Approche proposée

Pour classer les problèmes de programmation compétitive, nous avons exploré différents modèles d'apprentissage profond. Un modèle populaire est le Réseau de Neurones à Mémoire Longue et Courte (LSTM), qui est conçu pour mémoriser des informations pendant de plus longues périodes. Ces réseaux peuvent gérer les défis associés aux Réseaux de Neurones Récurrents traditionnels. Nous avons aussi étudié les Unités Récurrentes Gated (GRU), qui ont été introduites pour résoudre certains des mêmes problèmes que les LSTMS mais avec une structure différente. Enfin, nous avons examiné le Perceptron Multi-couches (MLP), un réseau de neurones à propagation avant qui fonctionne bien pour diverses tâches de classification.

Entraînement et test du modèle proposé

Après avoir préparé les données, nous les avons divisées en ensembles d'entraînement et de test. Nous avons utilisé la majorité de l'ensemble de données pour entraîner nos modèles, en veillant à ce qu'ils apprennent à associer les énoncés de problèmes avec les bonnes étiquettes. L'entrée était constituée des énoncés de problèmes traités, tandis que la sortie était un ensemble de probabilités indiquant les étiquettes qui s'appliquaient. Cette phase de test nous a aidés à évaluer les performances de chaque modèle.

Résultats et discussions

En analysant les résultats, nous avons constaté que le Perceptron Multi-couches (MLP) offrait la meilleure précision parmi les modèles que nous avons testés. Les modèles LSTM et GRU n'ont pas aussi bien fonctionné, probablement à cause de la taille limitée de l'ensemble de données d'entraînement. Augmenter la taille de l'ensemble de données en incluant des données d'autres plateformes de programmation compétitive pourrait améliorer leurs performances.

Conclusion et travaux futurs

Dans cette étude, nous avons décrit des méthodes pour catégoriser les problèmes de programmation compétitive en utilisant plusieurs techniques d'apprentissage profond. Le modèle MLP s'est révélé être le plus efficace, atteignant un taux de précision notable. À l'avenir, il y a un potentiel pour améliorer encore ces techniques, notamment en élargissant le nombre d'étiquettes pour une meilleure classification. Les recherches futures pourraient également se concentrer sur la classification multi-label, permettant aux problèmes d'appartenir à plusieurs catégories. Cette avancée serait très bénéfique pour les utilisateurs à la recherche de défis de programmation sur mesure.

Source originale

Titre: Tag Prediction of Competitive Programming Problems using Deep Learning Techniques

Résumé: In the past decade, the amount of research being done in the fields of machine learning and deep learning, predominantly in the area of natural language processing (NLP), has risen dramatically. A well-liked method for developing programming abilities like logic building and problem solving is competitive programming. It can be tough for novices and even veteran programmers to traverse the wide collection of questions due to the massive number of accessible questions and the variety of themes, levels of difficulty, and questions offered. In order to help programmers find questions that are appropriate for their knowledge and interests, there is a need for an automated method. This can be done using automated tagging of the questions using Text Classification. Text classification is one of the important tasks widely researched in the field of Natural Language Processing. In this paper, we present a way to use text classification techniques to determine the domain of a competitive programming problem. A variety of models, including are implemented LSTM, GRU, and MLP. The dataset has been scraped from Codeforces, a major competitive programming website. A total of 2400 problems were scraped and preprocessed, which we used as a dataset for our training and testing of models. The maximum accuracy reached using our model is 78.0% by MLP(Multi Layer Perceptron).

Auteurs: Taha Lokat, Divyam Prajapati, Shubhada Labde

Dernière mise à jour: 2023-08-03 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2308.01863

Source PDF: https://arxiv.org/pdf/2308.01863

Licence: https://creativecommons.org/publicdomain/zero/1.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Articles similaires