Ich habe einen DataFrame mit IDF bestimmter Wörter berechnet. Zum Beispiel
(10,[0,1,2,3,4,5],[0.413734499590671,0.4244680552337798,0.4761400657781007, 1.4004620708967006,0.37876590175292424,0.48374466516332])
.... and so on
Geben Sie nun eine Abfrage Q, ich kann die TF-IDF dieser Abfrage berechnen. Wie berechne ich die Kosinusähnlichkeit der Abfrage mit allen Dokumenten im Datenrahmen (es gibt fast eine Million Dokumente)?
Ich könnte es manuell in einem Job zur Kartenreduzierung tun, indem ich die Vektormultiplikation verwende
Kosinusähnlichkeit (Q, Dokument) = Punktprodukt (Q, Dokument) / || Q || * || Dokument ||
aber sicherlich muss Spark ML die Berechnung der Kosinusähnlichkeit eines Textes von Haus aus unterstützen?
Mit anderen Worten, wenn ich eine Suchabfrage habe, wie finde ich die nächsten Cosinus des Dokuments TF-IDF aus dem DataFrame?