Extraer automáticamente conceptos y palabras clave de un texto (Parte II: enfoque semántico)

Publicado: 2022-09-20

Este artículo es una continuación de la primera parte sobre la extracción automática de palabras clave de un texto. El artículo anterior trataba sobre el llamado enfoque “tradicional” para extraer palabras clave de un texto: basado en estadísticas o basado en gráficos.

Aquí, exploraremos métodos con un enfoque más semántico . Primero, presentaremos incrustaciones de palabras y transformadores , es decir, incrustaciones contextuales. Luego compartiremos un ejemplo con el mismo texto sobre el álbum de John Coltrane, Impressions (fuente francemusique.fr) basado en el modelo BERT. Finalmente, presentaremos algunos métodos de evaluación, como P@k , f1-score , así como puntos de referencia del último estado del arte.

A diferencia del enfoque tradicional, el enfoque semántico le permite vincular palabras que pertenecen a un campo léxico similar, incluso si son diferentes. La idea detrás de este enfoque es prescindir del cálculo de frecuencias de ocurrencia de palabras en el texto para extraer las palabras que tienen más sentido, es decir, aquellas que brindan la información más relevante en relación con el texto.

incrustaciones de palabras

Este método se remonta a 2013 con la introducción de un modelo llamado word2vec. Se trata de una arquitectura de red neuronal artificial “simple” –a diferencia de las denominadas arquitecturas de “Deep Learning”– que propone representar el conjunto de palabras de un vocabulario como vectores. En otras palabras, cada palabra está representada por una línea de números. Este conjunto de vectores representa el campo semántico del vocabulario, con la capacidad de comparar estos vectores entre sí. Al medir la distancia entre estos vectores, podemos saber si las palabras son semánticamente similares . La representación de palabras como una matriz de números se denomina incrustaciones .

word2vec-embedding-example-en

incrustaciones-ejemplo

Una vez que tenga la representación vectorial de su conjunto de palabras, puede comparar estas palabras entre sí. Dos palabras tendrán un significado cercano si los dos vectores tienen un ángulo muy pequeño entre ellos: esta es la distancia semántica , un valor entre -1 y 1. Cuanto más cercano es el valor a 1, más las palabras tienen un "similar". sentido. Un valor cercano a -1, por el contrario, indicará significados "opuestos", por ejemplo, "bueno" y "malo".

El objetivo de este modelo es “fabricar” estas famosas incrustaciones a partir de una cantidad no despreciable de documentos de texto. Digamos que tiene unos cientos de miles de textos, el modelo aprenderá a predecir una palabra en función de las palabras que son similares.

word2vec-window-en

ventana de palabras

El modelo tomará como entrada varios grupos de palabras – de tamaño 5 por ejemplo – e intentará encontrar las mejores alternativas a <mask> . Dentro de su corpus, hay frases o grupos de palabras similares; podremos encontrar las palabras: “jazz”, “rock”, “clásica” o “reggae” por ejemplo. Por lo tanto, todas estas palabras tendrán vectores bastante similares. Así, el modelo puede reunir conceptos y palabras que se encuentran en un campo léxico similar.

[Estudio de caso] Encuentre y solucione problemas de indexación

De tráfico cero a crecimiento exponencial: descubra cómo GroupM Turquía usó Oncrawl para resolver los problemas de indexación de Unilever.
Lea el estudio de caso

Por otro lado, puede haber ambigüedades para una palabra que tiene la misma ortografía pero no tiene el mismo significado en el contexto: estas son palabras homógrafas.

Por ejemplo:

  1. Se sentó junto a la orilla del río Sena.
  2. Ella depositó el dinero en el banco Chase.

Esta es una limitación de este tipo de modelo: la palabra tendrá la misma representación vectorial independientemente del contexto.

Transformadores

Un enfoque más reciente surgió principalmente en 2017 con Attention Is All You Need de Google. Mientras que los métodos de word2vec tuvieron problemas para representar dos palabras idénticas que no tenían el mismo significado, los modelos de tipo transformador pueden distinguir el significado de una palabra en función de su contexto . Tenga en cuenta que también hay modelos NLP capaces de tener en cuenta secuencias de palabras como RNN o LSTM, pero no los abordaremos en este artículo.

Los transformadores popularizarán un nuevo concepto en la arquitectura de redes neuronales: el mecanismo de atención . Esto le permite encontrar, dentro de una secuencia de palabras, por ejemplo, una oración, cómo se relaciona cada palabra con las demás.

El modelo BERT, creado por Google en 2018, es un modelo poderoso y popular. La ventaja de estos modelos de lenguaje es que se basan en un modelo pre-entrenado , es decir, el modelo ya ha sido entrenado en una cantidad significativa de textos en inglés, francés, etc. Entonces es posible usarlo sobre la base de un análisis más detallado. Entonces es posible usarlo tal como está para comparar texto, generar respuestas a partir de preguntas, hacer análisis de sentimientos, hacer ajustes en un cuerpo de texto más específico, etc.

bert-attention-visualisation

Atención Visualización

La imagen fue generada con la herramienta de visualización exBERT . Podemos ver que la palabra seleccionada “dinero” está fuertemente ligada a “ depositado ” y “ banco ”. Entonces es más fácil para el modelo eliminar la ambigüedad en la palabra " banco " gracias al contexto.

En el caso de KeyBERT, se trata de un modelo derivado de BERT llamado Sentence-BERT que nos permite comparar fácilmente oraciones semánticamente.

Si desea obtener más información sobre todos los modelos preentrenados y de código abierto disponibles, puede visitar el centro Huggingface, que se especializa en almacenar y compartir conjuntos de datos y modelos relacionados con la PNL (pero también, más recientemente, con audio e imagen).

Extracción de palabras clave con KeyBERT

Entonces, ¿cómo podemos usar transformadores para extraer palabras clave relevantes de un texto? Hay varios proyectos que incluyen KeyBERT: extracción mínima de palabras clave con BERT, una biblioteca Python de código abierto que utiliza el modelo BERT.

KeyBERT, de forma predeterminada, utilizará los transformadores de oraciones basados ​​en BERT para representar una oración, en lugar de una sola palabra, como un vector. Esta es una manera muy eficiente de comparar oraciones o grupos de palabras. El principio del algoritmo KeyBERT es bastante simple. Veamos un texto de ejemplo, entonces:

  1. El código extraerá todas las palabras únicas del texto. En este paso, las palabras vacías a menudo se eliminan.
  2. Se calculan las incrustaciones de todo el texto y de cada palabra.
  3. Entonces podemos calcular la distancia semántica entre los vectores que provienen de las palabras y el vector que representa el texto en su totalidad.

Una vez calculadas todas las distancias, podemos extraer las palabras que están más relacionadas con el significado global del texto: serán las palabras clave seleccionadas por el algoritmo.

Además, KeyBERT le brinda la posibilidad de seleccionar la longitud de las frases clave : de hecho, podemos tomar palabras individuales, pares o incluso triples de palabras. Además, el código proporciona una forma de implementar el método de "relevancia marginal máxima" (MMR) para aumentar la diversidad de los resultados. Esto le ayuda a evitar la repetición de un término, que puede ser relevante con respecto al contenido del documento, pero que con demasiada frecuencia está presente en los resultados, por ejemplo: "concierto de jazz", "música de jazz", "estilo de jazz" , etc.

Para concluir, también es posible utilizar otros modelos de NLP para KeyBERT, como los modelos de spaCy o flair.

Como en el artículo anterior, aquí hay un ejemplo de las palabras clave extraídas por KeyBERT del mismo artículo sobre el álbum de John Coltrane, Impressions:

“impresiones de coltrane”, “cuarteto de música”, “tesoro del jazz”, “concierto de john”, “secuencia de perlas”, “repertorio de graz”, “saxofones tenor”

Métodos de evaluación

​​En este artículo y en el anterior, presentamos varios métodos utilizados para extraer palabras clave de un documento: RAKE, Yake, TextRank y KeyBERT. Sin embargo, es importante poder elegir el adecuado según su contexto.

Por lo tanto, es relevante observar los métodos de evaluación para comparar los resultados de un método con otro. A partir de datos (document, keywords) donde las palabras clave han sido definidas y validadas por humanos, es posible comparar los resultados de un modelo con esta “ realidad ”. Tenemos métricas como precisión, recuperación y puntaje f1 que se usan a menudo en problemas de clasificación . Por lo tanto, podemos construir una matriz de confusión al saber si una palabra clave determinada extraída por el modelo está realmente en la lista de palabras clave relevantes.

Como los modelos pueden extraer una serie de palabras clave, a menudo comparamos las primeras k palabras clave con la verdad básica . Como los resultados pueden variar según el número de palabras clave que queramos comparar, evaluamos el modelo varias veces según el valor k . Estas métricas se llaman Precision@k que significa: “Calculo la Precisión en la parte superior-k”.

[Ebook] Cómo afecta tu esquema de enlaces internos a Inrank

Siga los experimentos de Chris Green para comprender cómo su esquema de enlaces internos afecta la importancia relativa de sus páginas usando Inrank.
Cómo afecta tu esquema de enlaces internos a Inrank

Precisión

Este es el número de palabras clave correctas en el top-k de todas las palabras clave pronosticadas.

Precision calculation

Recuerdo

Este es el número de palabras clave correctas en el top-k del total de palabras clave de la verdad básica.

Recall calculation

puntuación f1

Es una combinación de las dos métricas anteriores, o en otras palabras, un promedio armonioso entre precisión y recuperación:

F1 score calculation

MAPA @ k

Precisión media media

El primer paso para calcular el MAP es calcular la Precisión Promedio. Tomaremos todas las palabras clave encontradas por el modelo y calcularemos el P@k para cada palabra clave relevante encontrada por el modelo. Como ejemplo, para calcular AP@5 con 3 palabras clave relevantes de las 5 propuestas:

 palabras clave: concierto de jazz música saxofón radio
   relevante: 1 0 1 1 0
   Precio: 1/1 2/3 3/4

   PA: 1/3 (1 + 2/3 + 3/4) ~= 0,80

Notamos aquí que la posición de las palabras clave relevantes es importante. De hecho, el AP no tendrá la misma puntuación si las tres primeras palabras clave de las cinco no son relevantes (resp. relevantes).

Luego, para cada (document, keywords) , calcularemos el promedio de todos los AP para finalmente obtener el MAP.

Tenga en cuenta que estas diferentes métricas también se utilizan ampliamente para evaluar modelos de clasificación o sistemas de referencia.

Una pequeña crítica de algunas de estas métricas se refiere a la cantidad de palabras clave reales relevantes, que pueden variar según el conjunto de datos y el documento.

  • Por ejemplo recall@k : la puntuación puede depender mucho del tamaño de las palabras clave relevantes de la verdad básica. Si tiene hasta 20 palabras clave relevantes, para recall@10 comparará las primeras 10 palabras clave en este conjunto de 20 palabras clave. En el mejor de los casos, si todas las palabras clave propuestas por el modelo son relevantes, la puntuación de recuerdo no superará el 0,5.
  • Por otro lado, si el número de palabras clave de verdad de campo relevantes es muy bajo en comparación con las propuestas por el modelo, no podrá obtener buenas puntuaciones de precision@k . Para cinco palabras clave reales relevantes, precision@10 tendrá, en el mejor de los casos, una puntuación de 0,5, pero no más.

Cualesquiera que sean las métricas utilizadas para evaluar los resultados, es necesario tener un conjunto de datos (texto, palabras clave) donde las palabras clave hayan sido previamente definidas por personas: autores de los textos, lectores, editores, etc. Hay varios conjuntos de datos, principalmente en inglés y sobre diferentes temas: artículos científicos, resúmenes, noticias, TI, etc. Por ejemplo, aquí está este repositorio de Github KeywordExtractor-Datasets que enumera una veintena de conjuntos de datos.

Puntos de referencia

Más allá de esta presentación de los diversos métodos de evaluación, también me gustaría brindarles un "resumen" de algunos trabajos de investigación que proponen puntos de referencia.

El primero es de los investigadores que implementaron Yake! método en el periódico, “¡YAKE! Extracción de palabras clave de documentos individuales usando múltiples funciones locales”. Analizaron su método en una veintena de conjuntos de datos diferentes: PubMed, WikiNews, SemEval2010 y KDD para los más conocidos, utilizando la mayoría de las métricas descritas anteriormente: P@k , recall@k , etc. ¡Yake! se comparará con otros diez métodos, incluidos Rake, Text Rank, etc. Al consolidar todos los conjuntos de datos disponibles y calcular la precisión y recuperación , Yake! es mejor o está muy cerca de los métodos más avanzados. Por ejemplo, para f1@10 :

conjunto de datos Yake! mejor o 2do
WikiNoticias 0.450 0.337
KDD 0.156 0.115
inspeccionar 0.316 0.378

Yake! es a menudo hasta un 50-100% mejor, que está cerca del método principal.

En otro artículo más reciente, "TNT-KID: etiquetador neuronal basado en transformadores para la identificación de palabras clave", también comparamos los métodos tradicionales y los basados ​​en transformadores . Los métodos de extracción que utilizan Transformadores funcionan mejor. Sin embargo, tenga cuidado, ya que estos son los llamados métodos "supervisados", a diferencia de Rake, KeyBERT y Yake, que no necesitan ser entrenados en un cuerpo de datos para producir resultados.

Finalmente, echemos un vistazo a otros dos puntos de referencia:

  • La extracción de frases clave simple no supervisada mediante incrustaciones de oraciones utiliza incrustaciones de palabras y funciona bien en comparación con TextRank en conjuntos de datos como Inspec y DUC.
  • Una publicación de blog que compara 7 algoritmos (en Python): Extracción de palabras clave: un punto de referencia de 7 algoritmos en Python. El autor compara el rendimiento en términos de tiempo de cálculo entre los métodos KeyBERT, RAKE y Yake, así como la cantidad de palabras relevantes que cada método puede extraer.

Conclusión

Como has podido comprobar a lo largo de estos dos artículos, existen realmente multitud de formas muy diferentes de extraer palabras clave relevantes de un texto. Mirando los diferentes puntos de referencia, habrá notado que no hay uno que realmente supere a todos los demás en términos de métricas. Dependerá del texto y del contexto. Además, como apuntaba el autor del artículo del blog sobre los 7 algoritmos de extracción, también podemos confiar en el tiempo de procesamiento de un algoritmo ante un texto extenso.

Este tiempo sin duda será un factor a la hora de poner en marcha un algoritmo y procesar cientos de miles de documentos. En el caso de KeyBERT, debes considerar una infraestructura con GPU para aumentar radicalmente el tiempo de procesamiento. De hecho, este método se basa en Transformers, que tienen una arquitectura de aprendizaje profundo que requiere mucha informática.

Si tuviera que elegir, seguramente sería entre KeyBERT y Yake. El primero por el aspecto transformador y semántico , el segundo por su eficiencia y rapidez de ejecución.

Referencias bibliográficas

  • La atención es todo lo que necesitas, 2017
  • BERT: Pre-entrenamiento de Transformadores Bidireccionales Profundos para la Comprensión del Lenguaje, 2019
  • Recuperación contextual autosupervisada de palabras clave y frases clave con autoetiquetado. Sharma P. y Li Y. (2019)
  • Exploración de diferentes extractores de palabras clave: métricas y estrategias de evaluación