Durant cette SAE, nous avons dû créer un programme de classification automatique de dépêches. Le but final est que ce programme soit le plus fiable et rapide possible. Pour ce faire, nous avions en notre possession un programme initial incomplet ainsi que deux bases de données de dépêches classées sous un format précis. La première base de données était destinée à "entraîner" notre programme et la seconde est la base finale sur laquelle nous allons évaluer la performance de notre programme. Ce travail s'est déroulé en binôme. Les consignes que nous avions furent découpées en 2 parties avec une date de rendu final après une semaine de travail.
Durant cette première partie, notre but était de prendre connaissance des attendus, et de comprendre et utiliser les bases de données de dépêches. Cette première partie était très guidée ; ainsi, on nous a aidés pas à pas à compléter le programme initial afin d'extraire et d'utiliser les dépêches contenues dans les bases de données. Durant cette partie, nous avons décidé de coder tous les deux l'entièreté des méthodes à utiliser afin de connaître parfaitement le fonctionnement central de notre code. Cette décision s’est avérée payante par la suite, nous permettant d'avancer beaucoup plus rapidement en comparaison d'autres groupes. Concrètement, nous avons codé les méthodes permettant d'extraire et de nettoyer chaque dépêche afin d'obtenir des collections contenant un type d'objet créé pour trier toutes les informations contenues dans une dépêche. Parmi ces informations, on obtient le numéro de la dépêche, sa catégorie et son texte. Nous avons créé par la suite une méthode permettant de vérifier pour chaque dépêche si la catégorie trouvée par notre algorithme est la bonne. Une fois tous les résultats trouvés, nous devions créer un fichier de sortie avec tous les résultats et le taux de réussite pour chaque catégorie. Nos premiers tests furent réalisés avec un système de points. Chaque mot entré était important, pouvant identifier l'appartenance d'une dépêche à une catégorie. Ces mots sont entrés dans une base de données et obtenaient un nombre de points (1, 2, 3), 3 décrivant une appartenance forte à une catégorie et 1 probable mais faible. Ces bases de données furent dans un premier temps créées à la main ; il y eut donc un long travail d'analyse du contenu des dépêches afin d'obtenir des bases de données relativement pertinentes. Ces bases de données étaient créées à partir de la base de dépêches initiale, mais le test était réalisé sur les dépêches contenues dans le fichier "test".
Pour cette deuxième partie, nous étions beaucoup moins guidés. Le but était maintenant de créer de manière automatique une base de données afin de rendre notre algorithme plus fiable. Afin de réaliser ce travail, nous avons décidé de créer nous-mêmes le programme permettant de générer automatiquement ces bases de données grâce à des mots-clés. Ensuite, le choix a été de prendre le programme le plus performant et fiable comme point de départ pour la suite de cette partie. Une fois ce programme de création automatique de bases de données réalisé, nous nous sommes attaqués à la partie la plus complexe et longue de cette SAE : l'optimisation de notre code visant à augmenter le taux de réussite de notre algorithme mais aussi à réduire le temps nécessaire à l’obtention d’un résultat. Cette partie s’est décomposée en trois sous-parties. La première fut l’optimisation de notre code existant afin de réduire le plus possible les imbrications de boucles ainsi que le nombre d’itérations lors d’une recherche, pour augmenter les performances de notre code. Cette première étape s’est soldée par des résultats très satisfaisants et des progrès encourageants. Cependant, afin de proposer une recherche encore plus rapide, nous avons dû repenser notre algorithme initial et ajouter des systèmes de tri de données tels que le tri-fusion, le tri par insertion ou l’utilisation de fonctions récursives. Cette étape nous a pris beaucoup de temps car nous testions énormément de petits changements afin de voir lesquels étaient les plus avantageux. Par la suite, nous avons réalisé des recherches sur des algorithmes existants permettant de diminuer le temps de tri de notre algorithme. Quelques changements mineurs furent apportés à notre algorithme grâce à ces recherches. Cependant, en comparaison du temps passé, ces changements furent pour la plupart décevants. Enfin, pour finir, nous avons amélioré le taux de réussite de notre algorithme en modifiant divers paramètres mais aussi en essayant une multitude de systèmes de recherches de mots-clés. Nous avons ainsi obtenu plusieurs algorithmes présentant des résultats plus ou moins convaincants. Tout au long de la séquence de programmation, il nous a fallu commenter notre code et le présenter de manière correcte afin d’accroître sa lisibilité ainsi que sa compréhension par autrui.
Une fois l'entièreté du code réalisé, nous avons dû effectuer un compte rendu en anglais. Cette étape nous a permis de mettre à profit les notions apprises en anglais mais aussi de découvrir de nouveaux mots de vocabulaire.
À la fin de notre projet, nous avons dû réaliser une démonstration de notre programme. Pour ce faire, nous avons réalisé au préalable un programme permettant d’afficher pour chaque algorithme son temps d’exécution, son coût d’exécution et son taux de réussite. Durant la présentation, nous avons ainsi présenté notre algorithme puis expliqué les divers problèmes rencontrés et les solutions qui en ont résulté. Pour finir, nous avons été questionnés sur la partie technique de notre projet.