Melhor algoritmo prático para similaridade de sentenças

18

Eu tenho duas frases, S1 e S2, ambas com uma contagem de palavras (geralmente) abaixo de 15.

Quais são os algoritmos mais úteis e bem-sucedidos (aprendizado de máquina), que são possivelmente fáceis de implementar (a rede neural é aceitável, a menos que a arquitetura seja tão complicada quanto o Google Inception etc.).

Eu estou procurando um algoritmo que funcione bem, sem colocar muito tempo nele. Existem algoritmos que você achou bem-sucedidos e fáceis de usar?

Isso pode, mas não precisa se enquadrar na categoria de armazenamento em cluster. Minha formação é em aprendizado de máquina, portanto, todas as sugestões são bem-vindas :)

DaveTheAl
fonte
O que você implementou? Também estou enfrentando o mesmo, tenho que chegar a solução para artigos relacionados 'k' em um corpus que continua atualizando.
Dileepa 15/08/18

Respostas:

16

Semelhança de cosseno para espaço vetorial, você pode responder: http://blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

Ou você pode calcular o vetor próprio de cada sentença. Mas o problema é: qual é a semelhança?

"Isto é uma árvore", "Isto não é uma árvore"

Se você quiser verificar o significado semântico da frase, precisará de um conjunto de dados de vetores de palavras. Com o conjunto de dados wordvector, você poderá verificar a relação entre as palavras. Exemplo: (Rei - Homem + Mulher = Rainha)

Siraj Raval tem um bom notebook python para criar conjuntos de dados de vetores de palavras: https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE

Christian Frei
fonte
8

Uma abordagem que você pode tentar é calcular a média de vetores de palavras gerados por algoritmos de incorporação de palavras (word2vec, luva etc.). Esses algoritmos criam um vetor para cada palavra e a semelhança de cosseno entre elas representa semelhança semântica entre as palavras. No caso dos vetores médios entre as frases. Um bom ponto de partida para saber mais sobre esses métodos é este artigo: Como os encaixes de frases capturam significado . Ele discute alguns métodos de incorporação de sentenças. Eu também sugiro que você analise o aprendizado não supervisionado de incorporações de sentenças usando os recursos n-Gram de composição que os autores afirmam que sua abordagem supera os métodos mais avançados. Eles também fornecem o código e algumas instruções de uso neste repositório do github .

feynman410
fonte
2

Você deve conferir https://github.com/seatgeek/fuzzywuzzy#usage . O fuzzywuzzy é uma biblioteca impressionante para correspondência de texto / string que fornece um número entre 0 e 100, com base na similaridade entre duas frases. Ele usa o Levenshtein Distance para calcular as diferenças entre seqüências em um pacote simples de usar. Além disso, confira esta postagem no blog para obter uma explicação detalhada de como o fuzzywuzzy faz o trabalho. Este blog também foi escrito pelo autor fuzzywuzzy

karthikeyan mg
fonte
1

Este blog tem a solução para similaridade de texto curto. Eles usam principalmente o modelo de rede neural BERT para encontrar semelhanças entre as frases. https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e

vimal Dharmalingam
fonte
Olá, seja bem-vindo ao Data Science Stack Exchange! Ao referenciar uma solução de um site externo, considere escrever um resumo em sua resposta. Na verdade, isso será mais fácil de ler e evita que sua resposta se torne obsoleta se a página de destino mudar ou se o link quebrar.
Romain Reboulleau 11/11
Bom, isso é realmente bom. Então eles basicamente usam o BERT? @RomainReboulleau está definitivamente certo!
DaveTheAl 13/11