Bonjour, il faudrait que j'écrive une fonction qui étant données une (liste de) phrase(s) retourne la matrice de cooccurrences de bigram
exemple : 'le chat mange' :
a c e g h l m n t esp <s> </s>
a 0 0 0 0 1 0 1 1 1 0 0 0
c 0 0 0 0 1 0 0 0 0 1 0 0
e 0 0 0 1 0 1 0 0 0 1 0 1
g 0 0 1 0 0 0 0 1 0 0 0 0
h 1 1 0 0 0 0 0 0 0 0 0 0
l 0 0 1 0 0 0 0 0 0 0 1 0
m 1 0 0 0 0 0 0 0 0 1 0 0
n 1 0 0 1 0 0 0 0 0 0 0 0
t 1 0 0 0 0 0 0 0 0 1 0 0
esp 0 1 1 0 0 0 1 0 1 0 0 0
<s> 0 0 0 0 0 1 0 0 0 0 0 0
</s> 0 0 1 0 0 1 0 0 0 0 0 0
il y a un 1 quand les deux lettres/symboles se touchent.
je n'y arrive pas, j'avais essayé ça mais ça ne fonctionne pas :
def co_occurrence_matrix(corpus):
vocab = set(corpus)
vocab = list(vocab)
# Key:Value = Word:Index
vocab_to_index = { word:i for i, word in enumerate(vocab) }
# Create bigrams from all words in corpus
bi_grams = list(bigrams(corpus))
# Frequency distribution of bigrams ((word1, word2), num_occurrences)
bigram_freq = nltk.FreqDist(bi_grams).most_common(len(bi_grams))
# Initialise co-occurrence matrix
# co_occurrence_matrix[current][previous]
co_occurrence_matrix = np.zeros((len(vocab), len(vocab)))
# Loop through the bigrams in the frequency distribution, noting the
# current and previous word, and the number of occurrences of the bigram.
# Get the vocab index of the current and previous words.
# Put the number of occurrences into the appropriate element of the array.
for bigram in bigram_freq:
current = bigram[0][1]
previous = bigram[0][0]
count = bigram[1]
pos_current = vocab_to_index[current]
pos_previous = vocab_to_index[previous]
co_occurrence_matrix[pos_current][pos_previous] = count
co_occurrence_matrix = np.matrix(co_occurrence_matrix)
return co_occurrence_matrix
Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Manque de Politesse
Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?
letters = {'a':0, 'c':1, 'e':2, 'g':3, 'h':4 ,'l':5 ,'m':6 ,'n':7, 't':8 , ' ':9}
mat = [[0 for j in range(10)] for i in range(10)]
sentence = 'le chat mange'
for k in range(0,len(sentence)-1):
r1, r2 = letters[sentence[k]], letters[sentence[k+1]]
mat[r1][r2], mat[r2][r1] = 1, 1
print(' ', end = '')
for key, v in letters.items(): print(key, end = ' ')
print('\n')
for k in range(10):
for key, v in letters.items():
if(v == k):print(key, end = ' ')
for j in range(10): print(mat[k][j], end = ' ')
print('\n')
matrice de cooccurrence
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.