ajout d'une section au rapport pour la question #1
code pour créer les n-grammes
This commit is contained in:
parent
6a498bdb5b
commit
90275ef564
2 changed files with 29 additions and 2 deletions
11
rapport.md
11
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.
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue