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.
- ¿Por qué puedo codificar pero no puedo entender las matemáticas discretas?
- ¿Cuál es la salida de un filtro Gabor?
- ¿Cuál es la diferencia entre notación matemática y notación de programación? ¿Por qué usar uno sobre el otro? ¿Por qué no solo usar siempre la programación?
- ¿Cuál es el significado del Lema Hardcore de Impagliazzo?
- ¿Cuáles son las mejores maneras de mejorar la habilidad de programación a través de las matemáticas?
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!