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?
gensim tiene un modelo tf-idf eficiente y no necesita tener todo en la memoria a la vez.
http://radimrehurek.com/gensim/intro.html
Su cuerpo simplemente debe ser un iterable, por lo que no necesita tener todo el cuerpo en la memoria a la vez.
El script make_wiki ( https://github.com/piskvorky/gensim/blob/develop/gensim/scripts/make_wikicorpus.py ) recorre wikipedia en unos 50 m en una computadora portátil de acuerdo con los comentarios.