Extraia automaticamente conceitos e palavras-chave de um texto (Parte II: abordagem semântica)

Publicados: 2022-09-20

Este artigo é uma continuação da primeira parte sobre a extração automática de palavras-chave de um texto. O artigo anterior tratou da chamada abordagem “tradicional” para extrair palavras-chave de um texto: baseado em estatísticas ou baseado em gráficos.

Aqui, vamos explorar métodos com uma abordagem mais semântica . Em primeiro lugar, apresentaremos os word embeddings e os transformadores , ou seja, os embeddings contextuais. Em seguida, compartilharemos um exemplo com o mesmo texto sobre o álbum de John Coltrane, Impressions (fonte francemusique.fr) baseado no modelo BERT. Por fim apresentaremos alguns métodos de avaliação como P@k , f1-score bem como benchmarks do último estado da arte.

Ao contrário da abordagem tradicional, a abordagem semântica permite vincular palavras que pertencem a um campo lexical semelhante, mesmo que sejam diferentes. A ideia por trás dessa abordagem é dispensar o cálculo das frequências de ocorrência de palavras no texto para extrair as palavras que fazem mais sentido, ou seja, aquelas que fornecem as informações mais relevantes em relação ao texto.

Incorporações de palavras

Este método remonta a 2013 com a introdução de um modelo chamado word2vec. É uma arquitetura de rede neural artificial “simples” – diferentemente das chamadas arquiteturas de “Deep Learning” – que se propõem a representar o conjunto de palavras de um vocabulário como vetores. Em outras palavras, cada palavra é representada por uma linha de números. Este conjunto de vetores representa o campo semântico do vocabulário, com a capacidade de comparar esses vetores entre si. Ao medir a distância entre esses vetores, podemos dizer se as palavras são semanticamente semelhantes . A representação de palavras como uma matriz de números é chamada de embeddings .

word2vec-embedding-example-en

exemplo de incorporação

Depois de ter a representação vetorial do seu conjunto de palavras, você pode comparar essas palavras umas com as outras. Duas palavras terão um significado próximo se os dois vetores tiverem um ângulo muito pequeno entre eles: esta é a distância semântica – um valor entre -1 e 1. Quanto mais próximo o valor estiver de 1, mais as palavras têm um ” similar ” significado. Um valor próximo de -1, pelo contrário, indicará significados “opostos”, por exemplo, “bom” e “ruim”.

O objetivo deste modelo é “fabricar” esses famosos embeddings a partir de uma quantidade não desprezível de documentos de texto. Digamos que você tenha algumas centenas de milhares de textos, o modelo aprenderá a prever uma palavra com base nas palavras que são semelhantes a ela.

word2vec-window-en

janela de palavras

O modelo tomará como entrada vários grupos de palavras – de tamanho 5 por exemplo – e tentará encontrar as melhores alternativas para <mask> . Dentro do seu corpus, existem frases ou grupos de palavras semelhantes; poderemos encontrar as palavras: “jazz”, “rock”, “clássico” ou “reggae” por exemplo. Assim, todas essas palavras terão vetores bastante semelhantes. Assim, o modelo pode reunir conceitos e palavras que estão em um campo lexical semelhante.

[Estudo de caso] Encontre e corrija problemas de indexação

Do tráfego zero ao crescimento exponencial: descubra como o GroupM Turkey usou o Oncrawl para resolver os problemas de indexação da Unilever.
Leia o estudo de caso

Por outro lado, pode haver ambiguidades para uma palavra que tem a mesma grafia, mas não tem o mesmo significado no contexto: são palavras homógrafas.

Por exemplo:

  1. Sentou-se à margem do rio Sena.
  2. Ela depositou o dinheiro no banco Chase.

Esta é uma limitação deste tipo de modelo: a palavra terá a mesma representação vetorial independente do contexto.

Transformadores

Uma abordagem mais recente surgiu principalmente em 2017 com a atenção do Google é tudo o que você precisa. Onde os métodos word2vec lutavam para representar duas palavras idênticas que não tinham o mesmo significado, os modelos do tipo transformador são capazes de distinguir o significado de uma palavra com base em seu contexto . Observe que também existem modelos de PNL capazes de levar em conta sequências de palavras como RNNs ou LSTMs, mas não vamos abordá-los neste artigo.

Os transformadores vão popularizar um novo conceito na arquitetura de redes neurais: o mecanismo de atenção . Isso permite que você encontre, dentro de uma sequência de palavras, por exemplo, uma frase, como cada palavra está relacionada com as outras.

O modelo BERT, criado pelo Google em 2018, é um modelo poderoso e popular. A vantagem desses modelos de linguagem é que eles são baseados em um modelo pré-treinado , ou seja, o modelo já foi treinado em uma quantidade significativa de textos em inglês, francês, etc. análise mais detalhada. É então possível usá-lo como está para comparar texto, gerar respostas de perguntas, fazer análise de sentimentos, fazer ajustes em um corpo de texto mais específico, etc.

bert-attention-visualisation

Visualização de atenção

A imagem foi gerada com a ferramenta de visualização exBERT . Podemos ver que a palavra selecionada “dinheiro” está fortemente ligada a “ depositado ” e “ banco ”. É então mais fácil para o modelo remover a ambiguidade da palavra “ banco ” graças ao contexto.

No caso do KeyBERT, é um modelo derivado do BERT chamado Sentence-BERT que nos permite comparar facilmente as sentenças semanticamente.

Se você quiser saber mais sobre todos os modelos de código aberto e pré-treinados disponíveis, visite o hub Huggingface, especializado em armazenar e compartilhar conjuntos de dados e modelos relacionados à PNL (mas também mais recentemente a áudio e imagem).

Extração de palavras-chave com KeyBERT

Então, como podemos usar transformadores para extrair palavras-chave relevantes de um texto? Existem vários projetos, incluindo KeyBERT: Extração mínima de palavras-chave com BERT, uma biblioteca Python de código aberto que usa o modelo BERT.

O KeyBERT, por padrão, usará os transformadores de sentença baseados no BERT para representar uma sentença, em vez de uma única palavra, como um vetor. Esta é uma maneira muito eficiente de comparar frases ou grupos de palavras. O princípio do algoritmo KeyBERT é bastante simples. Vejamos um exemplo de texto, então:

  1. O código extrairá todas as palavras exclusivas do texto. Nesta etapa, as palavras irrelevantes são frequentemente eliminadas.
  2. As incorporações de todo o texto e de cada palavra são calculadas.
  3. Podemos então calcular a distância semântica entre os vetores provenientes das palavras e o vetor que representa o texto em sua totalidade.

Uma vez calculadas todas as distâncias, podemos extrair as palavras que estão intimamente relacionadas ao significado geral do texto: essas serão as palavras-chave selecionadas pelo algoritmo.

Além disso, KeyBERT lhe dá a capacidade de selecionar o comprimento das frases -chave: podemos de fato pegar palavras únicas, ou pares ou mesmo triplos de palavras. Além disso, o código fornece uma maneira de implementar o método “Maximal Marginal Relevance” (MMR) para aumentar a diversidade dos resultados. Isso ajuda a evitar a repetição de um termo, que pode ser relevante em relação ao conteúdo do documento, mas que está muito presente nos resultados, por exemplo: “concerto de jazz”, “música jazz”, “estilo jazz” , etc

Para concluir, também é possível usar outros modelos de PNL para KeyBERT, como modelos de spaCy ou flair.

Como no artigo anterior, aqui está um exemplo das palavras-chave extraídas por KeyBERT do mesmo artigo sobre o álbum de John Coltrane, Impressions:

“coltrane impressions”, ” music quartet”, “jazz treasure”, “john concert”, “pearl sequence”, “graz repertoire”, “tenor saxophones”

Métodos de avaliação

​​Neste artigo e no anterior, apresentamos vários métodos usados ​​para extrair palavras-chave de um documento: RAKE, Yake, TextRank e KeyBERT. No entanto, é importante ser capaz de escolher o caminho certo de acordo com o seu contexto.

Portanto, é relevante olhar para os métodos de avaliação para comparar os resultados de um método com outro. A partir de dados (document, keywords) onde as palavras- chave foram definidas e validadas por humanos, é possível comparar os resultados de um modelo com essa “ realidade ”. Temos métricas como precisão, recall e f1-score que são frequentemente usadas em problemas de classificação . Podemos, portanto, construir uma matriz de confusão sabendo se uma determinada palavra-chave extraída pelo modelo está de fato na lista de palavras-chave relevantes.

Como os modelos podem extrair uma série de palavras-chave, geralmente comparamos as primeiras k palavras- chave com a verdade geral . Como os resultados podem variar de acordo com o número de palavras- chave que desejamos comparar, avaliamos o modelo várias vezes de acordo com o valor de k . Essas métricas são chamadas de Precision@k que significa: “Eu calculo a Precisão no top-k”.

[Ebook] Como seu esquema de links internos afeta o Inrank

Siga os experimentos de Chris Green para entender como seu esquema de links internos afeta a importância relativa de suas páginas usando o Inrank.
Como seu esquema de links internos afeta o Inrank

Precisão

Este é o número de palavras- chave corretas no top-k de todas as palavras- chave previstas .

Precision calculation

Lembrar

Este é o número de palavras- chave corretas no top-k do total de palavras- chave da verdade geral.

Recall calculation

pontuação f1

É uma combinação das duas métricas anteriores – ou em outras palavras, uma média harmoniosa entre precisão e recall:

F1 score calculation

MAPA @ k

Precisão Média Média

O primeiro passo para calcular o MAP é calcular a Precisão Média. Pegaremos todas as palavras-chave encontradas pelo modelo e calcularemos o P@k para cada palavra-chave relevante encontrada pelo modelo. Como exemplo, para calcular AP@5 com 3 palavras-chave relevantes das 5 propostas:

 palavras-chave: jazz concerto música saxofone rádio
   relevante: 1 0 1 1 0
   P@k: 1/1 2/3 3/4

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

Notamos aqui que a posição das palavras-chave relevantes é importante. Na verdade, o AP não terá a mesma pontuação se as três primeiras palavras-chave das cinco não forem relevantes (relevante respectivamente).

Então, para cada (document, keywords) , calcularemos a média de todos os APs para finalmente obter o MAP.

Observe que essas diferentes métricas também são amplamente utilizadas para avaliar modelos de classificação ou sistemas de referência.

Uma pequena crítica a algumas dessas métricas diz respeito ao número de palavras-chave de verdade do terreno relevantes, que podem variar por conjunto de dados e por documento.

  • Por exemplo, o recall@k : a pontuação pode depender muito do tamanho das palavras-chave relevantes da verdade básica. Se você tiver até 20 palavras-chave relevantes, para um recall@10 , você comparará as 10 primeiras palavras-chave desse conjunto de 20 palavras-chave. Na melhor das hipóteses, se todas as palavras-chave propostas pelo modelo forem relevantes, a pontuação de recall não excederá 0,5.
  • Por outro lado, se o número de palavras-chave relevantes de verdade for muito baixo em comparação com os propostos pelo modelo, não será possível obter boas pontuações de precision@k . Para cinco palavras-chave relevantes, precision@10 terá, na melhor das hipóteses, uma pontuação de 0,5, mas não mais.

Quaisquer que sejam as métricas utilizadas para avaliar os resultados, é necessário ter um conjunto de dados (texto, palavras-chave) onde as palavras- chave foram previamente definidas por pessoas – os autores dos textos, leitores, editores, etc. Existem vários conjuntos de dados, principalmente em Inglês e sobre diferentes assuntos: artigos científicos, resumos, notícias, TI, etc. Por exemplo, aqui está este repositório Github KeywordExtractor-Datasets que lista cerca de vinte conjuntos de dados.

Referências

Para além desta apresentação dos vários métodos de avaliação, gostaria também de vos apresentar um “resumo” de alguns trabalhos de investigação que propõem benchmarks.

A primeira é dos pesquisadores que implementaram o Yake! método no jornal, “YAKE! Extração de palavras-chave de documentos únicos usando vários recursos locais”. Eles analisaram seu método em cerca de vinte conjuntos de dados diferentes: PubMed, WikiNews, SemEval2010 e KDD para os mais conhecidos, usando a maioria das métricas descritas acima: P@k , recall@k , etc. Yake! será comparado com cerca de dez outros métodos, incluindo Rake, Text Rank, etc. Ao consolidar todos os conjuntos de dados disponíveis e computar precisão e recuperação , o Yake! método é melhor ou muito próximo dos métodos de última geração. Por exemplo, para f1@10 :

Conjunto de dados Yake! Melhor ou 2º
WikiNews 0,450 0,337
KDD 0,156 0,115
Inspecionar 0,316 0,378

Yake! é muitas vezes até 50-100% melhor, o que está próximo do método principal.

Em outro artigo mais recente, “TNT-KID: marcador neural baseado em transformador para identificação de palavras-chave”, também comparamos métodos tradicionais e baseados em transformador . Os métodos de extração usando Transformadores apresentam melhor desempenho. Tenha cuidado, porém, uma vez que estes são os chamados métodos “supervisionados”, ao contrário de Rake, KeyBERT e Yake, que não precisam ser treinados em um corpo de dados para produzir resultados.

Por fim, vamos dar uma olhada em dois outros benchmarks:

  • Extração simples de frase-chave não supervisionada usando Embeddings de frases usa embeddings de palavras e tem um bom desempenho em comparação com TextRank em conjuntos de dados como Inspec e DUC.
  • Uma postagem de blog que compara 7 algoritmos (em Python): Extração de palavras-chave — um benchmark de 7 algoritmos em Python. O autor compara o desempenho em termos de tempo de computação entre os métodos KeyBERT, RAKE, Yake, bem como o número de palavras relevantes que cada método pode extrair.

Conclusão

Como você viu ao longo desses dois artigos, há realmente uma infinidade de maneiras muito diferentes de extrair palavras-chave relevantes de um texto. Olhando para os diferentes benchmarks, você terá notado que não há um que realmente supere todos os outros em termos de métricas. Vai depender do texto e do contexto. Além disso, como apontou o autor do artigo do blog sobre os 7 algoritmos de extração, também podemos contar com o tempo de processamento de um algoritmo quando nos deparamos com um texto extenso.

Este tempo certamente será um fator importante na hora de colocar em ação um algoritmo e processar centenas de milhares de documentos. No caso do KeyBERT, você deve considerar uma infraestrutura com GPU para aumentar radicalmente o tempo de processamento. Na verdade, esse método conta com Transformers que possuem uma arquitetura de Deep Learning que requer muita computação.

Se eu tivesse que fazer uma escolha, certamente seria entre KeyBERT e Yake. O primeiro pelos transformadores e aspecto semântico , o segundo pela sua eficiência e rapidez de execução.

Referências bibliográficas

  • Atenção é tudo que você precisa, 2017
  • BERT: Pré-treinamento de Transformadores Bidirecionais Profundos para Compreensão da Linguagem, 2019
  • Recuperação de palavra-chave contextual e frase-chave auto-supervisionada com auto-rotulagem. Sharma P. & Li Y. (2019)
  • Explorando diferentes extratores de palavras-chave — métricas e estratégias de avaliação