Cómo usar TF-IDF para buscar artículos similares y generar resúmenes en Python
Aplicación 1: generar palabras clave automáticamente
La idea central es calcular el valor TF normalizado de una palabra en el documento y luego calcular el valor normalizado de la palabra en todo el corpus. Valor de la FDI. La normalización aquí se refiere a realizar algunas transformaciones a la fórmula original para obtener mejores resultados de medición y evitar algunos casos extremos. Luego, el valor TF-IDF de la palabra es igual a TF*IDF, y para todas las palabras del documento, su valor TF-IDF se calcula y ordena en orden descendente, de modo que podamos extraer la cantidad de palabras clave que queremos.
La ventaja de TF-IDF es que es rápido y los resultados son relativamente realistas. La desventaja es que cuando dos palabras en un documento tienen el mismo valor IDF, la palabra que aparece con menos frecuencia puede ser más importante. Además, el algoritmo TF-IDF no puede reflejar la información de posición de las palabras y es incorrecto considerar que las palabras que aparecen al principio de la lista y las palabras que aparecen al final de la lista tienen la misma importancia. La solución actual es dar un peso relativamente mayor al primer párrafo del artículo y a la primera frase de cada párrafo.
Aplicación 2: Calcular la similitud del texto
Aprenda a calcular el valor TF-IDF para cada palabra. Entonces calcular la similitud del texto es pan comido. Hemos calculado el valor TF-IDF de cada palabra del artículo, por lo que podemos caracterizar el artículo como un vector de valores TF-IDF de las palabras. Para calcular la similitud entre dos artículos, solo necesitamos calcular el valor del coseno; cuanto mayor sea el valor del coseno, más similares serán los dos artículos.
Aplicación 3: resumen automático
Tomando la primera imagen como ejemplo, CLUSTER **** tiene 7 palabras, 4 de las cuales son palabras clave. Por tanto, su puntuación de importancia es igual a (4*4)/7=2,3. Luego, busque las oraciones que contengan el grupo con la puntuación de importancia más alta (por ejemplo, 5 oraciones) y combínelas para formar un resumen automatizado del artículo. Para conocer métodos de implementación específicos, consulte el Capítulo 8 del libro "Minería de la web social: análisis de datos de Facebook, Twitter, LinkedIn y otros sitios de redes sociales" (O'Reilly, 2011. El código Python se puede encontrar en github). Obtenido en. El algoritmo se simplificó posteriormente, ya no distingue grupos y solo considera las palabras clave contenidas en la oración. El pseudocódigo es el siguiente.
Summarizer(originalText,?maxSummarySize):
//?Calcule la frecuencia de palabras del texto y genere una lista, como [(10,'the'), (3,'language'), ( 8,'code ')...]
wordFrequences?=?getWordCounts(originalText)
//?Filtre las palabras vacías y la lista se convierte en [(3, ?' 'idioma'), ? (8, ?'' código')...]
contentWordFrequences?=?filtStopWords(wordFrequences)
//? Ordenar la lista por frecuencia de palabras y obtener ['Código', 'Idioma'...]
contentWordsSortbyFreq?=?sortByFreqThenDropFreq(contentWordFrequences)
/?Dividir el artículo en oraciones
oraciones?=?getSentences(originalText)
/?Seleccione la oración en la que la palabra clave aparece primero
setSummarySentences?=?{}
¿para cada palabra en? contentWordsSortbyFreq:
firstMatchingSentence?=?search(sentences,?word)
setSummarySentences. add(firstMatchingSentence)
if?setSummarySentences.size()? maxSummarySize :
break
/?Integra las oraciones seleccionadas en un resumen en el orden en que aparecen
summary?=?""
foreach oración en oraciones:
si oración en setSummarySentences:
¿resumen?=??"?+?sentence
return?summary
Se han escrito algoritmos similares en herramientas, como el módulo SimpleSummariser basado en Java en la biblioteca Classifier4J, la biblioteca OTS basada en C y las implementaciones en C# y Python de Classifier4J.