Nie jestem pewien, czy to jest odpowiednia strona stosu, ale proszę bardzo.
Jak działa metoda .similiarity?
Wow spaCy jest świetne! Jego model tfidf może być łatwiejszy, ale w2v z tylko jedną linią kodu ?!
W swoim 10-liniowym samouczku na temat spaCy andrazhribernik pokazuje nam metodę .similarity, którą można uruchamiać na tokenach, wysyłkach, fragmentach słów i dokumentach.
Po nlp = spacy.load('en')
i doc = nlp(raw_text)
możemy wykonać .podobne zapytania między tokenami a fragmentami. Co jednak oblicza się za kulisami w tej .similarity
metodzie?
SpaCy ma już niewiarygodnie prostą funkcję .vector
, która oblicza wektor w2v zgodnie z treningiem z modelu GloVe (jak fajnie byłoby zastosować metodę .tfidf
lub .fasttext
metodę?).
Czy model po prostu oblicza podobieństwo cosinus między tymi dwoma w2v, .vector, wektorami lub porównuje jakąś inną macierz? Szczegóły nie są jasne w dokumentacji ; jakakolwiek pomoc doceniona!
źródło
Odpowiedzi:
Znalazłem odpowiedź, krótko mówiąc: tak:
Link do kodu Souce
Wygląda na to, że jest to wzór na obliczanie podobieństwa cosinusowego, a wektory wydają się być tworzone za pomocą SpaCy,
.vector
którego dokumentacja mówi, że jest wyuczona z modelu w2v GloVe.źródło
Domyślnie jest to podobieństwo kosinusowe, z wektorami uśrednionymi w dokumencie dla brakujących słów.
Możesz to również dostosować, ustawiając hak na
doc.user_hooks['similarity']
. Ten komponent potoku otacza funkcje podobieństwa, ułatwiając dostosowanie podobieństwa:https://github.com/explosion/spaCy/blob/develop/spacy/pipeline.pyx#L50
źródło
SentenceSegmenter
strategią.