Sto cercando un modulo in sklearn che ti permetta di ricavare la matrice di co-ocurrence parola-parola. Posso ottenere la matrice del termine del documento ma non sono sicuro di come ottenere una matrice parola-parola di co-occorrenze.matrice di co-occorrenza parola-parola
risposta
È possibile utilizzare il parametro ngram_range
nell'esempio CountVectorizer
o TfidfVectorizer
Codice:
bigram_vectorizer = CountVectorizer(ngram_range=(2, 2)) # by saying 2,2 you are telling you only want pairs of 2 words
Nel caso in cui si vuole dire esplicitamente quali co-occorrenze di parole che si desidera contare, utilizzare il vocabulary
param, vale a dire: vocabulary = {'awesome unicorns':0, 'batman forever':1}
Codice auto-esplicativo e pronto all'uso con co-occorrenze di parola-parola predefinite. In questo caso siamo di inseguimento per co-occorrenze di awesome unicorns
e batman forever
:
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
samples = ['awesome unicorns are awesome','batman forever and ever','I love batman forever']
bigram_vectorizer = CountVectorizer(ngram_range=(1, 2), vocabulary = {'awesome unicorns':0, 'batman forever':1})
co_occurrences = bigram_vectorizer.fit_transform(samples)
print 'Printing sparse matrix:', co_occurrences
print 'Printing dense matrix (cols are vocabulary keys 0-> "awesome unicorns", 1-> "batman forever")', co_occurrences.todense()
sum_occ = np.sum(co_occurrences.todense(),axis=0)
print 'Sum of word-word occurrences:', sum_occ
print 'Pretty printig of co_occurrences count:', zip(bigram_vectorizer.get_feature_names(),np.array(sum_occ)[0].tolist())
uscita finale è ('awesome unicorns', 1), ('batman forever', 2)
, che corrisponde esattamente alle nostre samples
dati forniti.
Ecco la mia soluzione di esempio utilizzando CountVectorizer
in scikit-learn. E facendo riferimento a questo post, puoi semplicemente utilizzare la moltiplicazione della matrice per ottenere la matrice di co-occorrenza parola-parola.
from sklearn.feature_extraction.text import CountVectorizer
docs = ['this this this book',
'this cat good',
'cat good shit']
count_model = CountVectorizer(ngram_range=(1,1)) # default unigram model
X = count_model.fit_transform(docs)
Xc = (X.T * X) # this is co-occurrence matrix in sparse csr format
Xc.setdiag(0) # sometimes you want to fill same word cooccurence to 0
print(Xc.todense()) # print out matrix in dense format
È inoltre possibile fare riferimento al dizionario di parole in count_model
,
count_model.vocabulary_
Oppure, se si vuole normalizzare per componente diagonale (consultare la risposta nel post precedente).
import scipy.sparse as sp
Xc = (X.T * X)
g = sp.diags(1./Xc.diagonal())
Xc_norm = g * XC# normalized co-occurence matrix
- 1. convertire matrice di stringhe a intero matrice
- 2. Indicizzazione di matrice numpy.array unidimensionale come matrice
- 3. lavoro con matrice in matrice di oggetti
- 4. Converti matrice in matrice
- 5. matrice di calore animate/matrice di correlazione marina n.
- 6. Modifica matrice di base 1 su matrice di base 0
- 7. Ottenimento riga matrice come matrice
- 8. Matrice di classe astratta
- 9. Algoritmo di confronto matrice
- 10. Valori matrice di campo?
- 11. permutazione di matrice
- 12. Matrice multithread di array?
- 13. Matrice di oggetti PHP
- 14. Indirizzo di matrice
- 15. Matrice di permutazione casuale
- 16. Matrice di trasformazione Qt
- 17. matrice di stampa ASP
- 18. Svg matrice di decomposizione
- 19. Moltiplicazione di matrice parallela
- 20. Intersezione matrice di ruby
- 21. algoritmo di matrice di skew
- 22. Inserimento di valori di matrice
- 23. convertire una matrice di liste ad una matrice regolare
- 24. C# assegnano 1 matrice bidimensionale di sintassi 2 matrice bidimensionale
- 25. Julia: chiamata a matrice() con una matrice di dimensioni
- 26. operazioni di matrice con matrice n-dimensionale utilizzando LINQ (C#)
- 27. Selezionare valori di matrice solo univoci da questa matrice
- 28. AtomicReference di matrice e la matrice elemento cambia visibilità
- 29. come convertire una matrice di valori in una matrice binaria
- 30. Conversione matrice php di matrici in un'unica matrice
Potresti aggiungere alcuni dati e i tuoi tentativi di affrontare il problema? – Cleb