Calculer la fréquence d'apparition de tous les n-grammes
Ihab25
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
FeelZoR Messages postés 78 Date d'inscription Statut Membre Dernière intervention -
FeelZoR Messages postés 78 Date d'inscription Statut Membre Dernière intervention -
Bonjour chers programmeur,
Je suis débutant en programmation et en ce moment j'essaye de réaliser les consignes suivantes:
- Lire le contenu du fichier dans une liste,
- Demander à l'utilisateur d'entrer un entier n compris entre 2 et 5,
- Calculer la fréquence d'apparition de tous les n-grammes du corpus en utilisant les dictionnaires,
- Afficher la liste des n-grammes par ordre décroissant des fréquences.
SANS UTILISER NLTK
pour l'instant mon script n'affiche rien et j'arrive pas à trouver le problème,
Je vous remercie pour votre aide
Je suis débutant en programmation et en ce moment j'essaye de réaliser les consignes suivantes:
- Lire le contenu du fichier dans une liste,
- Demander à l'utilisateur d'entrer un entier n compris entre 2 et 5,
- Calculer la fréquence d'apparition de tous les n-grammes du corpus en utilisant les dictionnaires,
- Afficher la liste des n-grammes par ordre décroissant des fréquences.
SANS UTILISER NLTK
#-*- coding:"utf-8" -*-
import re
import codecs
try :
corpus = codecs.open("corpus-one-sentence-per-line.txt",mode = "r")
except IOError :
print "corpus-one-sentence-per-line.txt non trouve"
corpus_data = []
bigrams = {}
trigrams= {}
quadrigrams= {}
cinqgrams= {}
word = ''
for line in corpus :
wordlist = re.findall(r"[\w']*",line)
for word in wordlist :
if word is not '' :
corpus_data.append(word)
corpus.close()
while True :
n= raw_input("Tapez un nombre entre 2 et 5 !")
try :
n = int(n)
break
except ValueError:
print "Merci de saisir seulement les nombres entre 2 et 5"
if n == 2:
for i in range(len(corpus_data)) :
word = corpus_data[i]
try :
bigrams[(word,corpus_data[i+1])] += 1
except KeyError :
bigrams[(word,corpus_data[i+1])] = 1
except IndexError :
"done"
_freq_bigrams = bigrams.items()
freq_bigrams = sorted(_freq_bigrams, key = lambda x: x[1])[::-1]
if n == 3:
for i in range(len(corpus_data)) :
word = corpus_data[i]
try :
trigrams[(word,corpus_data[i+1], corpus_data[i+1])] += 1
except KeyError :
trigrams[(word,corpus_data[i+1], corpus_data[i+1])] = 1
except IndexError :
"done"
_freq_trigrams = trigrams.items()
freq_trigrams = sorted(_freq_trigrams, key = lambda x: x[1])[::-1]
for trigram,freq in freq_trigrams :
if freq >= seuil:
print "Trigrame :", trigram, " | frequence :", freq
if n== 4:
for i in range(len(corpus_data)) :
word = corpus_data[i]
try :
qudrigrams[(word,corpus_data[i+1], corpus_data[i+1],corpus_data[i+1] )] += 1
except KeyError :
quadrigrams[(word,corpus_data[i+1], corpus_data[i+1], corpus_data[i+1])] = 1
except IndexError :
"done"
_freq_quadrigrams = quadrigrams.items()
freq_quadrigrams = sorted(_freq_quadrigrams, key = lambda x: x[1])[::-1]
for quadrigram,freq in freq_quadrigrams :
if freq >= seuil:
print "Quadrigrame :", quadrigram, " | frequence :", freq
if n == 5:
for i in range(len(corpus_data)) :
word = corpus_data[i]
try :
cinqgrams[(word,corpus_data[i+1], corpus_data[i+1],corpus_data[i+1] )] += 1
except KeyError :
cinqgrams[(word,corpus_data[i+1], corpus_data[i+1], corpus_data[i+1])] = 1
except IndexError :
"done"
_freq_cinqgrams = cinqgrams.items()
freq_cinqgrams = sorted(_freq_cinqgrams, key = lambda x: x[1])[::-1]
for cinqgram,freq in freq_cinqgrams :
if freq >= seuil:
print "Cinqgrame :", cinqgram, " | frequence :", freq
pour l'instant mon script n'affiche rien et j'arrive pas à trouver le problème,
Je vous remercie pour votre aide
A voir également:
- Calculer la fréquence d'apparition de tous les n-grammes
- Comment calculer la moyenne sur excel - Guide
- Fréquence du processeur - Guide
- Frequence 4g - Guide
- Comment calculer une note sur 20 - Forum Bureautique
- L'équipe live foot fréquence - Accueil - TV & Vidéo