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 :)
nlp
clustering
word2vec
similarity
DaveTheAl
fonte
fonte
Respostas:
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
fonte
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 .
fonte
O bert-as-service ( https://github.com/hanxiao/bert-as-service#building-a-qa-semantic-search-engine-in-3-minutes ) oferece exatamente essa solução.
Para responder sua pergunta, implementá-lo do zero seria muito difícil, pois o BERT não é um NN trivial, mas com esta solução, você pode simplesmente conectá-lo ao seu algo que usa similaridade de sentença.
fonte
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
fonte
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
fonte