C'è un modo per convertire i caratteristiche NLTK in un array Scipy.Sparse?
Domanda
Sto cercando di usare Scikit.Learn che ha bisogno di array numpy/Scipy per l'input. I caratteristici generati in NLTK sono costituiti da frequenze unigram e bigram. Potrei farlo manualmente, ma sarà un grande sforzo. Quindi mi chiedo se c'è una soluzione che ho trascurato.
Soluzione
Non che io conosca, ma nota che Scikit-Learn può fare n-Gram Frequency Conteing se stesso. Supponendo il livello di parole n-Grammi:
from sklearn.feature_extraction.text import CountVectorizer, WordNGramAnalyzer
v = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=2))
X = v.fit_transform(files)
dove files
è un elenco di stringhe o oggetti simili a file. Dopodichè, X
è una matrice Scipy.Sparse di conteggi di frequenza grezza.
Altri suggerimenti
Jacob Perkins ha fatto un ponte AA per l'addestramento dei classificatori NLTK usando classificatori Scikit-Learn che lo fa esattamente qui è la fonte:
https://github.com/japerk/nltk-trainer/blob/master/nltk_trainer/classification/sci.py
Le righe di importazione del pacchetto devono essere aggiornate se si utilizza la versione 0.9+.