SpaCy'deki benzerlik yöntemi nasıl hesaplanır?


13

Bu doğru yığın sitesi olup olmadığından emin değilsiniz, ama işte gidiyor.

.Similiarity yöntemi nasıl çalışır?

Vay canına, harika! Onun tfidf modeli daha kolay olabilir, ama sadece bir kod satırı ile w2v ?!

Onun içinde Spacy 10 hat öğretici andrazhribernik gösterisi bize jeton, rak yüzlerce, kelime parçaları ve dokümanlar üzerinde çalıştırılabilir .similarity yöntemi bu.

Sonra nlp = spacy.load('en')ve doc = nlp(raw_text) belirteçler ve parçalar arasında benzerlik sorguları yapabiliriz. Ancak, bu .similarityyöntemde perde arkasında ne hesaplanıyor ?

SpaCy .vector, w2v vektörünü GloVe modelinden eğitildiği gibi hesaplayan inanılmaz derecede basittir (a .tfidfveya .fasttextyöntem ne kadar havalı olurdu ?).

Model sadece bu iki w2v, .vector, vektörler arasındaki kosinüs benzerliğini mi hesaplıyor yoksa başka bir matrisi mi karşılaştırıyor? Ayrıntılar dokümantasyonda net değil ; herhangi bir yardım takdir!


1
".tfidf veya .fasttext yöntemi ne kadar havalı olurdu?" dokümanlar Fasttext eldivenin vektörleri yerine bir örneğini sağlar. Onları bir araya getirmekle aynı şey olmayabilir. Github
Carl G

Yanıtlar:


12

Kısaca cevabı buldum, evet:

Sos Koduna Bağlantı

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

Bu, kosinüs benzerliğini hesaplama formülü gibi görünüyor ve vektörler .vector, belgelerin GloVe'nin w2v modelinden eğitildiği söylenen SpaCy ile oluşturulmuş gibi görünüyor .


6

Varsayılan olarak kosinüs benzerliği vardır, vektörler eksik kelimeler için belge üzerinde ortalanır.

Bunu, bir kanca ayarlayarak da özelleştirebilirsiniz doc.user_hooks['similarity']. Bu ardışık düzen bileşeni benzerlik işlevlerini sararak benzerliği özelleştirmeyi kolaylaştırır:

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


Teknik olarak, SentenceSegmenterstratejiye bağlanmış görünüyorsunuz .
Carl G
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.