vectorizer standardization spanish sklearn scikit npl learn idf fit data countvectorizer cleaning categorical python lucene nlp scikit-learn tf-idf

python - standardization - sklearn text cleaning



TFIDF para grandes conjuntos de datos (2)

Creo que puedes usar un HashingVectorizer para obtener un pequeño csr_matrix de tus datos de texto y luego usar un TfidfTransformer en eso. Almacenar una matriz dispersa de filas de 8M y varias decenas de miles de columnas no es tan importante. Otra opción sería no usar TF-IDF en absoluto, podría ser el caso de que su sistema funcione razonablemente bien sin él.

En la práctica, es posible que tenga que submuestrear su conjunto de datos; a veces, un sistema funcionará igual si solo aprende del 10% de todos los datos disponibles. Esta es una pregunta empírica, no hay manera de decir de antemano qué estrategia sería la mejor para su tarea. No me preocuparía escalar el documento 8M hasta que esté convencido de que los necesito (es decir, hasta que haya visto una curva de aprendizaje que muestre una clara tendencia ascendente).

A continuación hay algo en lo que estuve trabajando esta mañana como ejemplo. Puede ver que el rendimiento del sistema tiende a mejorar a medida que agrego más documentos, pero ya está en una etapa en la que parece haber poca diferencia. Dado el tiempo que lleva entrenar, no creo que valga la pena entrenarlo en 500 archivos.

Tengo un corpus que tiene alrededor de 8 millones de artículos de noticias, necesito obtener la representación de TFIDF de ellos como una matriz dispersa. He podido hacer eso usando scikit-learn para un número relativamente menor de muestras, pero creo que no se puede usar para un conjunto de datos tan grande, ya que carga la matriz de entrada en la memoria primero y es un proceso costoso.

¿Alguien sabe, cuál sería la mejor manera de extraer los vectores TFIDF para grandes conjuntos de datos?