diff --git a/rapport.md b/rapport.md index 456267f..34b4937 100644 --- a/rapport.md +++ b/rapport.md @@ -42,11 +42,18 @@ Quelques modifications au niveau de la phrase viennent ensuite *nettoyer* la ré 1. Retrait des espaces au début de la phrase 1. Retrait des espaces après les apostrophes -### Résultats +### Résultats + +#### Fichier d'entrainement Sur l'ensemble des questions à convertir, quatre réponses ne correspondent pas à celles dans le fichier d'entrainement: 1. *Q: Qui était Galileo?* Comme cette question correspond au motif *qui*, la réponse que le module produit est **Luc Lamontagne était Galileo.**, alors qu'elle aurait du tomber dans la catégorie *autre*. Pour ce faire, cela aurait nécessité une analyse syntaxique. 1. *Q: A quelle distance se trouve la ligne de service du net au tennis?* Il me reste le mot distance au début de l'affirmation, que je n'arrive pas à enlever sans devoir faire une expression trop spécifique. 1. *Q: Combien de litres dans un gallon?* C'est la seule question de cette forme où la réponse donnée est au début et non à la fin. Ma réponse est équivalente. -1. *Q: Que fait-on avec des drapeaux usés ou périmés?* Encore une fois, c'est la seule version où la réponse est au début et non à la fin. Ma réponse est équivalente. \ No newline at end of file +1. *Q: Que fait-on avec des drapeaux usés ou périmés?* Encore une fois, c'est la seule version où la réponse est au début et non à la fin. Ma réponse est équivalente. + +#### Fichier de test + +## Langue d'origine du nom + diff --git a/t2_classification_noms.py b/t2_classification_noms.py index 9ddcc06..c1306e4 100644 --- a/t2_classification_noms.py +++ b/t2_classification_noms.py @@ -56,6 +56,24 @@ def load_names(): names_by_origin[origin] = names +def normalize_word(word): + word = unicode_to_ascii(word) + word = word.lower() + word = word.replace(" ","") + return word + + +def make_unigram(word): + return list(word) + + +def make_kgram(unigram_word, k): + # Ajouter padding + unigram_with_padding = [BOS for i in range(1, k)] + unigram_word + [EOS for i in range(1, k)] + kgrams = [''.join(unigram_with_padding[i:i + k]) for i in range(0, len(unigram_with_padding) - k + 1)] + return kgrams + + def train_models(): load_names() # Vous ajoutez à partir d'ici tout le code dont vous avez besoin @@ -69,6 +87,8 @@ def train_models(): # Votre code à partir d'ici... + + def most_probable_origin(name, n=3): # Retourne la langue d'origine la plus probable du nom. # n désigne la longueur des N-grammes. Par ex n=3 --> trigramme