Red de conocimiento informático - Material del sitio web - Cómo usar TF-IDF para buscar artículos similares y generar resúmenes en Python

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

En 2007, un artículo académico estadounidense resumió los algoritmos de resumen automático actuales. Uno de los algoritmos importantes es Word. estadísticas de frecuencia. Este método se originó por primera vez en el artículo de 1958 "La creación automática de resúmenes literarios" de un científico de IBM. El científico cree que la información del artículo está contenida en oraciones, algunas oraciones contienen más información y otras contienen menos información. El resumen automático consiste en encontrar aquellas oraciones que contienen la mayor cantidad de información. Entonces, ¿cómo medir el contenido informativo de una oración? Utilice palabras clave en el artículo para medir. La oración es más importante si contiene más palabras clave, por lo que el científico propuso utilizar agrupamiento para representar la agrupación de palabras clave. Los grupos son fragmentos de oraciones que contienen varias palabras clave.

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.