SpaCyの.similarityメソッドはどのように計算されますか?


13

これが正しいスタックサイトかどうかはわかりませんが、ここに行きます。

.similiarityメソッドはどのように機能しますか?

うわー、spaCyは素晴らしい!tfidfモデルの方が簡単かもしれませんが、w2vのコードは1行だけですか?!

spaCy andrazhribernikショーに関する彼の 10行のチュートリアルでは、トークン、送信、ワードチャンク、およびドキュメントで実行できる.similarityメソッドを示しています。

その後nlp = spacy.load('en')doc = nlp(raw_text) トークンとチャンク間で.similarityクエリを実行できます。しかし、この.similarity方法では、背後で何が計算されていますか?

SpaCyにはすでに.vector、GloVeモデルからトレーニングされたw2vベクトルを計算する非常に単純ながあります(a .tfidfまたは.fasttextmethod はどれくらいクールでしょうか?)。

モデルは、これら2つのw2v、.vector、vectors間のコサイン類似度を単純に計算するのですか、それとも他のマトリックスを比較するのですか?詳細はドキュメントでは明確ではありません。助けていただければ幸いです!


1
「.tfidfメソッドまたは.fasttextメソッドはどれほどクールでしょうか?」ドキュメントは FastTextグローブベクトルを交換する例を提供します。それらを一緒に持っているのとまったく同じではないかもしれません。Githubの
カール・G

回答:


12

答えを見つけた、要するに、はい:

ソースコードへのリンク

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戦略にリンクしているように見えます。
カールG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.