Nicht sicher, ob dies die richtige Stack-Site ist, aber es geht los.
Wie funktioniert die .similiarity-Methode?
Wow spaCy ist großartig! Das tfidf-Modell könnte einfacher sein, aber w2v mit nur einer Codezeile ?!
In seinem 10-zeiligen Tutorial zu spaCy andrazhribernik zeigen wir die .similarity-Methode, die für Token, Sents, Word Chunks und Docs ausgeführt werden kann.
Nach nlp = spacy.load('en')
und doc = nlp(raw_text)
wir können .similarity Abfragen zwischen Token und Brocken tun. Was wird bei dieser .similarity
Methode jedoch hinter den Kulissen berechnet?
SpaCy hat bereits die unglaublich einfache Methode .vector
, die den vom GloVe-Modell trainierten w2v-Vektor berechnet (wie cool wäre eine .tfidf
oder eine .fasttext
Methode?).
Berechnet das Modell einfach die Kosinusähnlichkeit zwischen diesen beiden Vektoren w2v, .vector oder vergleicht es eine andere Matrix? Die Einzelheiten sind in der Dokumentation nicht klar ; Jede Hilfe dankbar!
quelle
Antworten:
Fand die Antwort, kurz, es ist ja:
Link zum Quellcode
Das sieht aus wie seine Formel zur Berechnung Kosinusähnlichkeit und die Vektoren scheinen mit Spacy des zu erstellenden
.vector
der Dokumentation sagt von Handschuh W2V Modell trainiert wird.quelle
Standardmäßig handelt es sich um eine Kosinusähnlichkeit, wobei Vektoren für fehlende Wörter über das Dokument gemittelt werden.
Sie können dies auch anpassen, indem Sie einen Haken auf setzen
doc.user_hooks['similarity']
. Diese Pipeline-Komponente umfasst Ähnlichkeitsfunktionen, mit denen die Ähnlichkeit einfach angepasst werden kann:https://github.com/explosion/spaCy/blob/develop/spacy/pipeline.pyx#L50
quelle
SentenceSegmenter
Strategie verbunden zu sein.