¿Hay alguna forma de convertir los características de NLTK en una matriz Scipy.sparse?
Pregunta
Estoy tratando de usar scikit.learn que necesita matrices numpy/scipy para la entrada. El conjunto de características generado en NLTK consiste en frecuencias unigram y bigram. Podría hacerlo manualmente, pero eso será mucho esfuerzo. Me pregunto si hay una solución que he pasado por alto.
Solución
No es que sepa, pero tenga en cuenta que Scikit-Learn puede hacer norte-grama de frecuencia con el recuento de sí mismo. Asumiendo a nivel de palabra norte-gramas:
from sklearn.feature_extraction.text import CountVectorizer, WordNGramAnalyzer
v = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=2))
X = v.fit_transform(files)
dónde files
es una lista de cadenas o objetos similares a archivos. Después de este, X
es una matriz de pareja de scipy.
Otros consejos
Jacob Perkins hizo un puente AA para entrenar clasificadores NLTK utilizando clasificadores Scikit-Learn que hace exactamente que aquí está la fuente:
https://github.com/japerk/nltk-trainer/blob/master/nltk_trainer/classification/sci.py
Las líneas de importación del paquete deben actualizarse si está utilizando la versión 0.9+.