¿Cuál es una explicación simple pero detallada de Textrank?

Un enfoque no matemático de TextRank

(o cree su propio resumen de texto sin matrices)

Descargo de responsabilidad 1: Algunas de las explicaciones de TextRank en las otras respuestas son incorrectas.

Descargo de responsabilidad 2: voy a proporcionar una descripción muy simple pero precisa del algoritmo porque el usuario lo solicitó.

Con eso en mente, aquí vamos:

La idea básica de TextRank es proporcionar un puntaje para cada oración en un texto, luego puede tomar las oraciones de arriba y ordenarlas a medida que aparecen en el texto para construir un resumen automático.

Si lo aplica a la sinopsis de Star Wars 7, la fuerza se despierta y lo restringe a una sola oración que crea:

Kylo Ren se enfrenta a Finn y Rey en el bosque nevado”.

Lo cual es bastante asombroso. Entonces veamos cómo hacer eso.

El primer paso es, por supuesto, extraer todas las oraciones del texto. Esto puede ser tan simple como dividir el texto en “.” O nuevas líneas o más complejo si desea refinar exactamente qué es una oración. Los analizadores nunca terminan, simplemente se abandonan.

Una vez que tiene todas las oraciones en el texto, tiene que construir un gráfico, en el gráfico cada oración es un nodo y pone enlaces de cada oración a todas las demás o a las k oraciones más similares ponderadas por similitud. Aquí es donde te dejaré usar tu creatividad porque tienes que definir un puntaje de similitud entre dos oraciones, puede ser algo como el número de palabras en común sobre el número total de palabras o una fórmula muy compleja, aquí es donde pasarás la mayor parte de su tiempo para “ajustar” textrank para que funcione muy bien para lo que sea que esté tratando de resumir. Cuidado: las diferentes funciones de puntuación de similitud cambiarán drásticamente el resultado de TextRank.

Una vez que tenga el gráfico ponderado, debe ejecutar PageRank en él, ya que nos está diciendo que está confundido por las matemáticas, proporcionaré una aproximación muy simple al PageRank.

Ejecute caminatas aleatorias sobre el gráfico, en cada caminata aleatoria comienza desde un nodo aleatorio, desde ese nodo en función de los pesos que selecciona un vecino aleatorio, etc. Por ejemplo, si está en el nodo “A” (recuerde que cada nodo representa una oración) y sus vecinos y pesos son “B” (0.65) “C” (0.04) “D” (0.27), entonces puede calcular la probabilidad de ir de A a cada uno de esos nodos como:

A => B = 0.65 / (0.65 + 0.04 + 0.27)

A => C = 0.04 / ((0.65 + 0.04 + 0.27)

A => D = 0.27 / (0.65 + 0.04 + 0.27)

Entonces, pasa un número aleatorio de 0 a 1 y, dependiendo de la probabilidad de cada enlace, vaya a B, C o D. En este caso, es muy probable que visite B de A.

Un problema con este enfoque es que debe decidir la longitud de cada caminata y la cantidad de caminatas a ejecutar. Hay una solución elegante para este problema. Simplemente haga una única caminata aleatoria gigantesca, en cada paso con probabilidad beta visita a un vecino y con probabilidad 1-beta salta aleatoriamente a cualquier nodo aleatorio, que es una forma de simular el comienzo de una nueva caminata. Beta suele ser de alrededor de 0,85.

A medida que ejecuta su caminata aleatoria, agregue 1 al puntaje de una oración cada vez que la visite.

Al final, puede ordenar las oraciones por la cantidad de veces que las visitó y clasificó sus oraciones. Simplemente tome las oraciones top-n en el orden en que aparecen en el texto y tendrá un resumen.

Con este enfoque, tiene una manera de programar TextRank sin hacer ningún cálculo matemático y sin usar matrices, solo necesita su gráfico y una función para calcular la similitud entre oraciones.

Qué hay detrás (lectura opcional)

Lo que hace TextRank es muy simple: encuentra cuán similar es cada oración a todas las otras oraciones en el texto. La oración más importante es la que es más similar a todas las demás, con esto en mente, la función de similitud debe orientarse a la semántica de la oración, la similitud del coseno basada en un enfoque de bolsa de palabras puede funcionar bien y BM25 / BM25 + funciona muy bien para TextRank.

Si extrae palabras en lugar de oraciones y sigue el mismo algoritmo, usando una función de similitud entre palabras, entonces puede usar TextRank para extraer palabras clave del texto, la idea es que la palabra que es más similar a todas las otras palabras es la más importante uno. Filtrar palabras vacías es muy importante aquí.

Sus parámetros

  • El texto que está resumiendo.
  • Cuantas oraciones usar en el resumen
  • ¿Qué función de similitud utiliza para comparar oraciones?
  • La longitud de tu caminata aleatoria
  • Beta

¡Buena suerte!

Espero que mi siguiente explicación sea útil, si hay más información que pueda explicar, avísenme por comentario o mensaje y actualizaré la respuesta.

Alguna introducción:
La “matemática” que entra es simple. Un gráfico es una lista de nodos (vértices) y de ti conexiones (aristas).

TextRank utiliza la estructura del texto y las partes conocidas del discurso de las palabras para asignar una puntuación a las palabras que son palabras clave para el texto. No creo que se necesiten muchas matemáticas para comprender los conceptos del artículo, pero la terminología puede ser algo densa la primera vez. El algoritmo da más valor a los nodos con muchas conexiones, y da más influencia en los pasos para mejorar la conexión de los nodos, por lo que se refuerza y ​​finalmente encuentra su puntaje estable. La estructura d el texto se representa en la forma en que se hace el gráfico.

El algoritmo TextRank:
Primero, a las palabras se les asignan partes del discurso, de modo que solo se consideran sustantivos y adjetivos (o alguna otra combinación para diferentes aplicaciones). Luego se crea un gráfico de palabras. Las palabras son los nodos / vértices (denotado V en el documento [1]). Cada palabra está conectada a otras palabras cercanas en el texto. En el gráfico, esto está representado por las conexiones en el gráfico (denotado E en el papel para bordes [2]).

El algoritmo se ejecuta en el gráfico. A cada nodo se le asigna un peso de 1. Luego, el algoritmo revisa la lista de nodos y recopila la influencia de cada una de sus conexiones entrantes. La influencia generalmente es solo el valor del vértice conectado (inicialmente 1, pero varía) y luego se resume para determinar la nueva puntuación para el nodo. Luego, estos puntajes se normalizan, el puntaje más alto se convierte en 1 y el resto se escala de 0 a 1 en función de ese valor. Cada vez que el algoritmo se acerca al “valor” real para cada nodo, y se repite hasta que los valores dejan de cambiar.

En el procesamiento posterior, el algoritmo toma las palabras mejor calificadas que se han identificado como importantes y las genera como palabras clave / importantes. También se pueden combinar si se usan juntos a menudo.

Esa explicación debería ser suficiente para implementar el algoritmo (puede hacer algo similar cuando lo divide en palabras o frases) sin necesitar más matemáticas del documento.

El resto:
El proyecto vinculado “construye tu propio resumen” se autoidentifica como ingenuo, lo que significa que podría funcionar, pero no trata de utilizar ningún conocimiento, como el tipo de palabra, para hacerlo mejor, por lo que tiene sentido que no lo haga. parece funcionar bien

La herramienta de resumen utiliza un algoritmo gráfico diferente para determinar las oraciones importantes (en lugar de palabras clave) que funcionan de manera similar a Textrank, pero por lo demás es diferente en algunas formas clave. Por un lado, asigna la fuerza de la conexión por el número de palabras comunes en la oración en lugar de simplemente estar juntas en el documento. En segundo lugar, solo recopila puntajes una vez y no se actualiza repetidamente, por lo que los puntajes no se actualizan con nuevos pesos por estar conectados a oraciones de mayor peso. Tercero, recoge la oración de mayor valor para cada párrafo, en lugar de considerar las mejores oraciones de todo el documento. Finalmente, debido a que es de naturaleza ingenua, no intenta usar partes del habla u otras construcciones de lenguaje para informar el algoritmo de la manera en que lo hace TextRank.

[1] V denota la colección de todos los vértices, v minúscula denota un vértice específico.
[2] E denota todos los bordes / conexiones, minúscula e denota un borde específico. A menudo se proporcionan subíndices para indicar el “número” del vértice desde el que se está conectando y el vértice al que está conectado el anillo.

Editar: actualicé mi respuesta para reflejar la información que he agregado en los comentarios.

Escribí un artículo en la página de la Universidad de Michigan sobre cómo implementar TextRank, si alguien todavía se pregunta esto, ¡eche un vistazo!

Paquete TextRank NPM: un enfoque de aprendizaje no automático para el resumen de texto