Partage
  • Partager sur Facebook
  • Partager sur Twitter

Saut de ligne dans un bigramme ?

Saut de ligne tous les trois mots sur le print d'un trigramme

Sujet résolu
    30 juillet 2021 à 1:43:47

    Bonjour à tout.e.s,

    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

    • Partager sur Facebook
    • Partager sur Twitter

    -- Codez et le code vous rendra le virtuel réél --

      30 juillet 2021 à 2:46:07

      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.
      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

        30 juillet 2021 à 12:19:11

        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

        • Partager sur Facebook
        • Partager sur Twitter

        -- Codez et le code vous rendra le virtuel réél --

          30 juillet 2021 à 13:10:01

          une autre façon

          print("\n".join(extract_ngrams(txt,3)))



          • Partager sur Facebook
          • Partager sur Twitter
            30 juillet 2021 à 17:44:26

            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)))
            • Partager sur Facebook
            • Partager sur Twitter

            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.
            • Editeur
            • Markdown