SpaCy의 .similarity 방법은 어떻게 계산됩니까?


13

이것이 올바른 스택 사이트라면 확실하지 않지만 여기에 있습니다.

.similiarity 방법은 어떻게 작동합니까?

와우 spaCy는 위대하다! tfidf 모델이 더 쉬울 수 있지만 한 줄의 코드로 w2v가 가능합니까?!

spaCy andrazhribernik 대한 10 줄의 튜토리얼에서 우리는 토큰, 전송, 단어 청크 및 문서에서 실행할 수있는 .similarity 방법을 보여줍니다.

nlp = spacy.load('en')doc = nlp(raw_text) 우리는 토큰과 덩어리 사이 쿼리를 .similarity 할 수 있습니다. 그러나이 .similarity방법 에서 장면 뒤에서 계산되는 것은 무엇 입니까?

SpaCy는 이미 매우 간단합니다 .vector. 이는 GloVe 모델에서 학습 한 w2v 벡터를 계산합니다 ( .tfidf또는 얼마나 멋진가 .fasttext?).

모델이 단순히이 두 w2v, .vector, 벡터 간의 코사인 유사성을 계산하거나 다른 행렬을 비교합니까? 구체적인 내용은에서 명확하지 않다 문서 ; 어떤 도움을 주셔서 감사합니다!


1
".tfidf 또는 .fasttext 방법은 얼마나 멋진가요?" 이 문서 는 GloVe 벡터를 FastText로 바꾸는 예를 제공합니다. 그것들을 함께 갖는 것과 정확히 같지 않을 수도 있습니다. Github
Carl G

답변:


12

한마디로 대답을 찾았습니다.

Souce 코드 링크

return numpy.dot(self.vector, other.vector) / (self.vector_norm * other.vector_norm)

이것은 코사인 유사성 을 계산하는 공식처럼 보이며 벡터 .vector는 GloVe의 w2v 모델에서 훈련 된 문서 인 SpaCy를 사용하여 생성 된 것으로 보입니다 .


6

기본적으로 코사인 유사성이며, 단어가 누락 된 경우 벡터가 문서 평균입니다.

후크를로 설정하여이를 사용자 정의 할 수도 있습니다 doc.user_hooks['similarity']. 이 파이프 라인 구성 요소는 유사성 기능을 래핑하여 유사성을 쉽게 사용자 지정할 수 있습니다.

https://github.com/explosion/spaCy/blob/develop/spacy/pipeline.pyx#L50


기술적으로, 당신은 SentenceSegmenter전략에 연결된 것으로 보입니다 .
Carl G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.