Eu tenho um DataFrame com IDF de determinadas palavras computadas. Por exemplo
(10,[0,1,2,3,4,5],[0.413734499590671,0.4244680552337798,0.4761400657781007, 1.4004620708967006,0.37876590175292424,0.48374466516332])
.... and so on
Agora, faça uma consulta Q, posso calcular o TF-IDF dessa consulta. Como faço para calcular a semelhança de cosseno da consulta com todos os documentos no quadro de dados (há quase um milhão de documentos)
Eu poderia fazê-lo manualmente em um trabalho de redução de mapa usando a multiplicação de vetores
Semelhança de cosseno (Q, documento) = Produto escalar (Q, documento) / || Q || * || documento ||
mas certamente o Spark ML deve suportar nativamente o cálculo da similaridade de cosseno de um texto?
Em outras palavras, com uma consulta de pesquisa, como encontro os cossenos mais próximos do documento TF-IDF do DataFrame?