SiDi NLP
Published in

SiDi NLP

Uma breve revisão sobre Text Similarity

Medir a similaridade (ou às vezes dissimilaridade) entre amostras é algo amplamente realizado em tarefas de aprendizado de máquina. A similaridade define os fatores comuns que duas ou mais amostras compartilham entre si, o que pode ajudar a descobrir padrões e segmentar de forma eficiente um grande conjunto de dados.

Contudo, ao se tratar de textos, a similaridade pode ser medida por diferentes espectros. Podemos analisar a similaridade literal a partir da representação textual dos objetos, tal como observar a relação semântica entre eles. Tais casos englobam técnicas diferentes que variam em complexidade e casos de uso. Neste artigo, vamos ver algumas como forma de revisar as principais abordagens da literatura.

Similaridade por distância

A similaridade por distância é uma forma de medir a proximidade semântica de dois textos a partir de uma perspectiva de distância.

Distância de cosseno

https://freecontent.manning.com/managing-data-sources-in-machine-learning/

A distância de cosseno representa o cálculo do cosseno formado pelo ângulo dos vetores de dois objetos (textos). É uma das medidas mais conhecidas em problemas envolvendo similaridade textual que consegue captar uma proximidade em textos mesmo que não possuam o mesmo tamanho, o que não acontece em distâncias clássicas como a euclidiana. Além disso, objetos que não aparentam estar próximos no espaço euclidiano podem possuir uma distância de cosseno baixa.

O cálculo da distância de cosseno é dada pela divisão entre o produto interno dos dois vetores e a multiplicação das suas normas, representado pela equação:

A medida de cosseno fica entre 0 e 1, em que 0 indica um ângulo de 90 graus entre os dois vetores e, portanto, não há similaridade entre eles; e 1 indica um ângulo pequeno, indicando maiores características em comum.

Distância de Hamming

https://medium.com/@vojtastavik/hamming-distance-programming-interview-problem-i-b2b3322a268f

A distância de Hamming é uma forma de comparar dois objetos em sua representação binária. O valor dado pela distância de Hamming é simplesmente o número de posições cujos bits sejam diferentes em ambos os vetores. No caso da imagem de exemplo, o valor é igual a 2.

A distância de Hamming costuma ser utilizada na medição de erros em transferência de dados em rede, na Teoria dos Códigos quando comparando palavras de tamanho igual e também em técnicas mais sofisticadas de segmentação semântica, como no caso do algoritmo Semantic Hashing.

Divergência Kullback-Leibler

A divergência Kullback-Leibler é uma medida de distância entre distribuições de probabilidade. Sendo p(x) e q(x) as duas distribuições de probabilidade de uma variável aleatória X, então a divergência entre p e q é calculada por:

O uso da divergência Kullback-Leibler é especialmente enfatizado na distribuição existente na camada de saída de modelos profundos, como no caso dos Autoencoders Variacionais e em técnicas de compressão de modelos através da distilação do conhecimento (ou Knowledge Distillation).

Divergência Jensen-Shannon

A divergência Jensen-Shannon é um método também utilizado para computar distâncias entre distribuições, conhecida como raio de informação (ou information radius) que indica a divergência total média.

Usualmente, essa divergência é aplicada com o algoritmo LDa (Latent Dirichlet Allocation) em tarefas de mineração de tópicos de documentos, onde são comparadas as distribuições de tópicos de novos documentos com todas as distribuições de tópicos presentes no corpus; com a finalidade de definir quais documentos são mais similares a cada tópico.

A divergência Jensen-Shannon utiliza em seu cálculo a divergência de Kullback-Leibler, como podemos ver a seguir. Dado que dois documentos pertencem a duas distribuições distintas P1 e P2, sua equação é representada por:

Valores mais baixos obtidos através dessa divergência indicam maior similaridade.

Similaridade por representação

Outra maneira de se calcular a similaridade entre textos é através de representações numéricas que podem ser computadas diretamente. Falando de similaridade textual, podemos abordar o problema de duas formas: através da representação léxica ou semântica. Dois documentos são lexicalmente similares quando compartilham a mesma sequência de caracteres. Ao mesmo tempo, são semanticamente similares quando possuem um mesmo domínio, contexto, são opostas, usadas de forma equivalente ou complementar. Veremos algumas abordagens de ambos os casos.

Edit distance

https://www.ideserve.co.in/learn/edit-distance-dynamic-programming

A Edit distance representa o menor número de transformações necessárias para converter um documento Sa em um documento Sb. Cada edição (remoção, inserção ou reposição) incrementa em uma unidade a distância.

Os algoritmos que implementam a Edit distance são comumente explorados, por exemplo, em sistemas de correção automática. Para torná-lo eficiente, são consideradas ainda técnicas de programação dinâmica para reduzir o número de operações de comparação.

Coeficiente de Jaccard

O coeficiente de Jaccard computa a similaridade através da análise do conjunto de palavras em dois documentos. Seu cálculo é dado pela interseção entre os conjuntos dividido pela sua união. Tal medida requer uma normalização antes de ser aplicada, pois um dos problemas envolvendo essa abordagem é que a medida de similaridade tende a ser baixa à medida que documentos extensos são comparados.

Abordagens envolvendo similaridade semântica

Word2vec

https://www.samyzaf.com/ML/nlp/nlp.html

Word2vec é uma técnica baseada em modelos pré-treinados de redes neurais, sendo o Continuous Bag of Words (CBOW) e o Word-skipping (ou skip-gram). Na abordagem CBOW, o aprendizado acontece predizendo as palavras a partir do contexto (palavras adjacentes), e na abordagem de Skip-gram o contexto é predito a partir de uma palavra.

Não iremos aprofundar a teoria por trás dessa abordagem porque essa técnica merece um artigo específico para ela no futuro, mas é importante dizer que o word2vec é muito útil por conseguir captar a representação semântica dos documentos através dos embeddings, permitindo que comparações como

KING - MAN + WOMAN = QUEEN

sejam possíveis. Isso traz grandes ganhos em tarefas que envolvem a análise da similaridade, além de ser uma ferramenta acessível e de fácil implementação.

MatchPyramid

https://aistudio.baidu.com/aistudio/projectdetail/3238192

Eu achei essa técnica muito interessante e resolvi compartilhar neste artigo. Trata-se de uma abordagem fortemente inspirada em técnicas de visão computacional, onde redes convolucionais são aplicadas para extrair cantos, bordas e outras características de imagens.

O modelo da MatchPyramid usa uma matriz com as posições das palavras em dois documentos (o que chama-se de matching matrix). Essa matriz é usada como entrada de uma rede convolucional (Layer 1 da imagem) e posteriormente aplicada a uma camada de pooling (Layer 2), semelhante ao que se executa em tarefas de imagem. Ao final, uma rede do tipo Multilayer Perceptron (MLP) é conectada para utilizar as características extraídas a partir da CNN para gerar um valor de similaridade entre os documentos (ou Matching Score).

Vale conferir uma implementação desse tipo de modelo com o pacote Matchzoo, em python.

Por hoje, é só! Passamos brevemente por alguns dos principais tópicos envolvendo o tema de similaridade textual, mas não se engane. Este artigo poderia ser muito mais extenso, dado que existe uma área de pesquisa totalmente dedicada ao assunto. Esperamos trazer outras abordagens em artigos futuros. Até a próxima!

--

--

Portal destinado a compartilhamento de ideias, conceitos e tutoriais que envolvam Machine Learning e Processamento de Linguagem Natural. Projeto mantido pelo time de NLP do SiDi.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Henrique Voni

Desenvolvedor de Machine Learning no time de NLP do SiDi e Doutorando em Engenharia da Computação na UNICAMP