Skip to content

Latest commit

 

History

70 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

===================== EXPLICATIONS DU PROJET ================================

Pour lancer le projet :
  ./configure
  cd build
  make
  cp ../words.txt .
  ./TextMiningCompiler words.txt dict.bin
  echo "approx 0 test" | ./TextMiningApp dict.bin


Ce projet a pour but de créer un dictionnaire à partir d'un fichier .txt contenant des mots et des fréquences sous le format suivant :
  mot freq

Il va dans un premier temps avec le binaire TextMiningCompiler créer un patricia-trie 
à partir des mots donnés en input. Il va ensuite le sérialiser dans un dictionnaire binaire.
La commande pour faire ceci est la suivante :
    ./TextMiningCompiler words.txt dict.bin

Dans un second temps, on va chercher un mot dans le dictionnaire précédemment créé à l'aide de la commande suivante :
  echo "approx 0 test" | ./TextMiningApp dict.bin
où :
  0 est la distance maximale que l'on cherche
  test est le mot que l'on cherche

Il va désérialiser le fichier binaire puis va chercher le mot dans le patricia-trie.


===================== QUESTIONS ================================

1.
  Nous avons choisi de créer 3 classes dans notre projet :
    - Trie: le trie contenant un Node racine qui est une interface pour l'utilisateur. Elle contient toutes les fonctions
            qui seront lancées sur le Patricia-Trie comme insert, search...
            Il contient également la string des mots présents dans le trie.
    - Node: un noeud du trie. Il contient la fréquence, le point de départ et la taille du mot contenu dans la string data du Trie.
            Il contient également les fils du noeud.
    - Search: C'est la classe que nous utilisons pour stocker les résultats des recherches des mots de la partie App du projet.
              Il contient le mot trouvé, la fréquence de ce mot ainsi que la distance entre ce mot et le mot recherché.

2.
  Nous avons testé les fonctions de manière indépendantes au fur et à mesure que nous écrivions le projet.
  La plupart des tests de la partie Compiler se sont fait à l'oeil. On créait le trie puis vérifiait ce qu'on obtenait avec ce qu'on
  avait sur papier. Bien évidemment nous n'avons pas pu testé sur de trop gros trie sauf en comparant le nombre de noeuds même si
  cela ne montre pas que deux tries sont identiques.
  La plupart des tests pour la partie recherche de la partie App ont été fait en faisant des diffs entre la ref et ce que nous obtenons.

3.
  Dans certains cas, notre algo ne calcule pas bien la distance mais nous ne comprenons pas vraiment pourquoi malgré des tests :/

4.
  La structure de données implémentée est le Patricia-trie. Nous avons choisi cette structure après quelques tests avec un trie classique.
  En effet, la contrainte de RAM n'était pas du tout respectée.
  De plus, c'était la structure de données privilégiée dans le cours.

5.
  

6.
  En nettoyant le code et en vérifiant plus les free et allocations. 

7.
  Plus de corrections, une meilleure gestion de la mémoire.

About

Spell checker using Damereau-Levenshtein distance and a Patricia trie.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages