Existe-t-il un moyen de convertir les ensembles de fonctionnalités NLTK en un tableau Scipy.sparse?
Question
J'essaie d'utiliser Scikit.learn qui a besoin de tableaux Numpy / Scipy pour l'entrée. L'ensemble généré dans le NLTK se compose de fréquences unigramme et bigram. Je pourrais le faire manuellement, mais ce sera beaucoup d'efforts. Je me demande donc s'il y a une solution que j'ai négligé.
La solution
Non pas que je sache, mais notez que Scikit-Learn peut faire n-GRAM FRÉQUENCE se comptant. En supposant un niveau de mot n-Grams:
from sklearn.feature_extraction.text import CountVectorizer, WordNGramAnalyzer
v = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=2))
X = v.fit_transform(files)
où files
est une liste de chaînes ou d'objets de type fichier. Après ça, X
est une matrice scipy.sparse du nombre de fréquences brutes.
Autres conseils
Jacob Perkins a fait un pont aa pour la formation de classificateurs NLTK utilisant des classificateurs Scikit-Learn qui font exactement cela ici est la source:
https://github.com/japerk/nltk-trainer/blob/master/nltk_trainer/classification/sci.py
Les lignes d'importation de package doivent être mises à jour si vous utilisez la version 0.9+.