-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsubject.txt
More file actions
executable file
·66 lines (57 loc) · 3.2 KB
/
Copy pathsubject.txt
File metadata and controls
executable file
·66 lines (57 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
=============
Projet TMLN 1
=============
Sujet:
======
* construire un outil en ligne de commande de correction orthographique rapide et stable en utilisant une distance de Damerau-Levenshtein
* par groupe de 1 à 3 personnes
* à rendre par email (zip ou tar.gz ou tar.bz2) à sylvain.utard@gmail.com avec balise [TEXTMINING] avant le 31 Juillet 2019 23:59:59 UTC+2
Contraintes:
=============
* au minimum 3000 qps/core en distance = 0 (2,7 GHz Intel Core i7)
* au minimum 300 qps/core en distance = 1
* au minimum 30 qps/core en distance = 2
* les programmes ne doivent jamais consommer plus de 512M de RAM
* Langages autorisés: C/C++ (boost autorisé, précisé la version dans le fichier README), Java, autre (avec explications/justification dans le README)
* Autotools ou CMake si C/C++; Ant si Java; autre (avec justification et explications dans le README)
Livrable:
=========
* README (explique le projet + répond aux questions ci-dessous)
* AUTHORS (liste les login_l/email, format EPITA)
* Code source commenté avec Doxygen (ou autre, pour vous filer des points si jamais vous ne passez pas les tests)
* (configure et Makefile) ou build.xml ou ...
* La compilation doit générer 2 binaires dans le répertoire racine:
* TextMiningCompiler (2 arguments = fichiers des mots+freqs, dictionnaire compilé)
* TextMiningApp (1 argument = dictionaire compilé)
Input:
======
* Fichier des 3M de mots les plus fréquents extraits de pages web françaises (formes normalisées)
Implémentation:
===============
* ref fournie
* reproduire EXACTEMENT le comportement de la ref (ce qui fait crasher la ref ne sera pas testé)
* correction par moulinette + diff de /dev/stdout
Démo:
=====
./TextMiningCompiler /path/to/words.txt /path/to/dict.bin
echo "approx 0 test" | ./TextMiningApp /path/to/dict.bin
echo "approx 1 test" | ./TextMiningApp /path/to/dict.bin
echo "approx 2 test" | ./TextMiningApp /path/to/dict.bin
echo "approx 0 test\napprox 1 test\napprox 2 test\napprox 3 test\napprox 4 test" | ./TextMiningApp /path/to/dict.bin
cat test.txt | ./TextMiningApp /path/to/dict.bin
Remarques:
==========
* la réponse est au format JSON
* les résultats doivent être triés par: distance (croissante), puis par fréquence (décroissante), puis par ordre lexicographique (croissant)
* seul /dev/stdout est diffée, libre à vous d'écrire sur /dev/stderr
* l'approximation sera testée avec dist=[0..W] (avec W = la taille du mot)
* seuls les tests qui ne font pas cracher la ref seront testés
Questions:
==========
1. Décrivez les choix de design de votre programme
2. Listez l’ensemble des tests effectués sur votre programme (en plus des units tests)
3. Avez-vous détecté des cas où la correction par distance ne fonctionnait pas (même avec une distance élevée) ?
4. Quelle est la structure de données que vous avez implémentée dans votre projet, pourquoi ?
5. Proposez un réglage automatique de la distance pour un programme qui prend juste une chaîne de caractères en entrée, donner le processus d’évaluation ainsi que les résultats
6. Comment comptez vous améliorer les performances de votre programme
7. Que manque-t-il à votre correcteur orthographique pour qu’il soit à l’état de l’art ?