Não tenho certeza se este é o site de pilha certo, mas aqui vai.
Como o método .similiarity funciona?
Uau spa é ótimo! Seu modelo tfidf poderia ser mais fácil, mas w2v com apenas uma linha de código ?!
Em seu tutorial de 10 linhas sobre spaCy, o andrazhribernik mostra o método .similarity que pode ser executado em tokens, sents, pedaços de palavras e documentos.
Depois nlp = spacy.load('en')
e doc = nlp(raw_text)
podemos fazer consultas de similaridade entre tokens e chunks. No entanto, o que está sendo calculado nos bastidores neste .similarity
método?
O SpaCy já possui o incrivelmente simples .vector
, que calcula o vetor w2v conforme treinado no modelo GloVe (quão legal seria um método .tfidf
ou .fasttext
?).
O modelo está simplesmente computando a semelhança de cosseno entre esses dois vetores w2v, .vector ou comparando alguma outra matriz? Os detalhes não são claros na documentação ; qualquer ajuda apreciada!
fonte
Respostas:
Encontrou a resposta, em suma, é sim:
Link para o código da fonte
Parece que é a fórmula para calcular a semelhança de cossenos e os vetores parecem ter sido criados com o SpaCy,
.vector
cuja documentação diz que é treinada a partir do modelo w2v do GloVe.fonte
Por padrão, é a semelhança de cosseno, com vetores calculados sobre o documento em busca de palavras ausentes.
Você também pode personalizar isso, definindo um gancho para
doc.user_hooks['similarity']
. Esse componente de pipeline agrupa funções de similaridade, facilitando a personalização da similaridade:https://github.com/explosion/spaCy/blob/develop/spacy/pipeline.pyx#L50
fonte
SentenceSegmenter
estratégia.