ajout d'une section au rapport pour la question #1

code pour créer les n-grammes
This commit is contained in:
François Pelletier 2019-09-21 21:32:36 -04:00
parent 6a498bdb5b
commit 90275ef564
2 changed files with 29 additions and 2 deletions

View file

@ -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.
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

View file

@ -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