C'est un exercice typique d'un débutant à savoir créer un trigramme à partir d'une phrase quelconque. Pour cela j'ai utilisé un module nltk "bigram" et ça me donne quelque chose comme ça :
import nltk
from nltk.util import ngrams
def extract_ngrams(txt, num):
n_grams = ngrams(nltk.word_tokenize(txt), num)
return [ " ".join(grams) for grams in n_grams]
txt = "Le lapin sait toujours qu'il sera en retard même s'il a une montre"
print(extract_ngrams(txt, 3))
Le résultat est ce que je voulais au niveau technique, pas de problème le programme fonctionne.
['Le lapin sait', 'lapin sait toujours', "sait toujours qu'il", "toujours qu'il sera", "qu'il sera en", 'sera en retard', 'en retard même', "retard même s'il", "même s'il a", "s'il a une", 'a une montre']
A ceci près que les caractères se suivent alors que je voudrais faire un saut de ligne tous les trois mots au lieu de les avoir les uns à côté des autres. Je sais qu'il faudra utiliser \n quelque part mais je ne sais pas où. Désolé pour la question de noob.
Merci d'avance !
- Edité par Kamal_Guidadou 30 juillet 2021 à 1:50:23
-- Codez et le code vous rendra le virtuel réél --
Tu fais un print d'une liste de str. Tu veux afficher une str par ligne: print(*extract_ngrams(txt, 3), sep='\n') Le '*' fait l'expansion de la liste en paramètres séparés. sep désigne le séparateur entre les paramètres.
Le Tout est souvent plus grand que la somme de ses parties.
Super, merci pour ta réponse. J'essayais bêtement d'intégrer le '\n' dans les variables. ex : extract_ngrams(txt, 3\n) mais évidemment python me renvoyait une erreur de syntaxe ! Et pour l'astérisque j'aurais jamais trouvé tout seul (connaissais pas) ! Je note tes explications. Merci beaucoup a+ !
- Edité par Kamal_Guidadou 30 juillet 2021 à 12:27:22
-- Codez et le code vous rendra le virtuel réél --
On peut également faire la fonction autrement: - def extract_ngrams(txt, num): txt = txt.split() return [" ".join(txt[i:i+num]) for i in range(len(txt)-num+1)] txt = "Le lapin sait toujours qu'il sera en retard même s'il a une montre" print('\n'.join(extract_ngrams(txt, 3)))
Le Tout est souvent plus grand que la somme de ses parties.
Saut de ligne dans un bigramme ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
-- Codez et le code vous rendra le virtuel réél --
Le Tout est souvent plus grand que la somme de ses parties.
-- Codez et le code vous rendra le virtuel réél --
Le Tout est souvent plus grand que la somme de ses parties.