Ho un DataFrame con IDF di determinate parole calcolate. Per esempio
(10,[0,1,2,3,4,5],[0.413734499590671,0.4244680552337798,0.4761400657781007, 1.4004620708967006,0.37876590175292424,0.48374466516332])
.... and so on
Ora fornisci una query Q, posso calcolare il TF-IDF di questa query. Come posso calcolare la somiglianza del coseno della query con tutti i documenti nel frame di dati (ci sono quasi milioni di documenti)
Potrei farlo manualmente in un lavoro di riduzione della mappa usando la moltiplicazione vettoriale
Somiglianza del coseno (Q, documento) = Prodotto punto (Q, dodcument) / || Q || * || documento ||
ma sicuramente Spark ML deve supportare nativamente il calcolo della somiglianza del coseno di un testo?
In altre parole, una query di ricerca come posso trovare i coseni più vicini del documento TF-IDF dal DataFrame?