machine learning - ¿Cómo calcular TF*IDF para clasificar un nuevo documento?
machine-learning classification (3)
Estoy utilizando vectores de término de documento para representar una colección de documentos. Utilizo TF*IDF para calcular el término peso para cada vector de documento. Entonces podría usar esta matriz para entrenar un modelo para la clasificación de documentos.
Tengo muchas ganas de clasificar nuevo documento en el futuro. Pero para clasificarlo, primero debo convertir el documento en un vector de término de documento, y el vector también debe estar compuesto de valores TF * IDF.
Mi pregunta es, ¿cómo podría calcular el TF * IDF con un solo documento?
Según tengo entendido, el TF se puede calcular basándose en un solo documento, pero la IDF solo se puede calcular con una colección de documentos. En mi experimento actual, calculo el valor TF * IDF para toda la colección de documentos. Y luego uso algunos documentos como conjunto de entrenamiento y los otros como conjunto de prueba.
De repente me di cuenta de que esto no parece ser tan aplicable a la vida real.
AGREGAR 1
Así que en realidad hay 2 escenarios sutilmente diferentes para la clasificación:
- para clasificar algunos documentos cuyo contenido se conoce pero la etiqueta no se conoce.
- Para clasificar algún documento totalmente invisible.
Para 1, podemos combinar todos los documentos, con y sin etiquetas. Y obtener el TF * IDF sobre todos ellos. De esta manera, incluso si solo usamos los documentos con etiquetas para la capacitación, el resultado de la capacitación seguirá conteniendo la influencia de los documentos sin etiquetas .
Pero mi escenario es 2.
Supongamos que tengo la siguiente información para el término T del resumen del conjunto de conjuntos de entrenamiento :
- el recuento de documentos para T en el conjunto de entrenamiento es n
- número total de documentos de formación es N
¿Debo calcular la IDF de t para un documento invisible D como se muestra a continuación?
IDF (t, D) = log ((N + 1) / (n + 1))
ADD 2
¿Y qué pasa si encuentro un término en el nuevo documento que no apareció antes en el corpus de entrenamiento ? ¿Cómo debo calcular su peso en el vector doc-term?
Para palabras que no se ven, el cálculo de TF no es un problema, ya que TF es una métrica específica del documento. Al calcular IDF, puede utilizar la técnica de frecuencia de documentos inversa suavizada.
IDF = 1 + log(total documents / document frequency of a term)
Aquí el límite inferior para IDF es 1. Entonces, si una palabra no se ve en el corpus de entrenamiento, su IDF es 1. Ya que, no hay una fórmula única acordada universalmente para calcular tf-idf o incluso idf, su fórmula para tf-idf El cálculo también es razonable.
Tenga en cuenta que, en muchos casos, los términos invisibles se ignoran si no tienen mucho impacto en la tarea de clasificación. A veces, las personas reemplazan tokens no vistos con un símbolo especial como UNKNOWN_TOKEN
y realizan su cálculo.
Alternativa de TF-IDF : otra forma de calcular el peso de cada término de un documento es utilizando la Estimación de máxima verosimilitud. Al calcular MLE, puede suavizar utilizando una técnica de suavizado aditivo , que también se conoce como suavizado de Laplace. MLE se utiliza en caso de que esté utilizando modelos generativos como el algoritmo Naive Bayes para la clasificación de documentos.
TF obviamente solo depende del nuevo documento.
IDF, usted solo calcula en su corpus de entrenamiento.
Puede agregar un término de holgura al cálculo de IDF, o ajustarlo como sugirió. Pero para un conjunto de entrenamiento razonable, el término constante de +1 no tendrá mucho efecto. AFAICT, en la recuperación de documentos clásica (piense: buscar), no se molesta en hacer esto. A menudo, el documento de consulta no se convertirá en parte de su cuerpo, entonces, ¿por qué sería parte de IDF?
TF-IDF no tiene sentido para un solo documento, independientemente de un corpus. Se trata fundamentalmente de enfatizar palabras relativamente raras e informativas.
Debe mantener la información de resumen de corpus para calcular las ponderaciones TF-IDF. En particular, necesita el recuento de documentos para cada término y el número total de documentos.
Si desea utilizar información resumida de todo el conjunto de entrenamiento y el conjunto de prueba para TF-IDF, o solo para el conjunto de entrenamiento, es cuestión de la formulación de su problema. Si es el caso, solo le interesa aplicar su sistema de clasificación a los documentos cuyo contenido tiene, pero cuyas etiquetas no tiene (en realidad es bastante común), entonces está bien usar TF-IDF para todo el corpus. Si desea aplicar su sistema de clasificación a documentos totalmente invisibles después de entrenar, entonces solo desea utilizar la información de resumen TF-IDF del conjunto de capacitación.