Saya memiliki DataFrame dengan IDF dari kata-kata tertentu yang dihitung. Sebagai contoh
(10,[0,1,2,3,4,5],[0.413734499590671,0.4244680552337798,0.4761400657781007, 1.4004620708967006,0.37876590175292424,0.48374466516332])
.... and so on
Sekarang berikan pertanyaan Q, saya bisa menghitung TF-IDF dari permintaan ini. Bagaimana cara menghitung kesamaan cosinus dari kueri dengan semua dokumen dalam kerangka data (ada hampir sejuta dokumen)
Saya bisa melakukannya secara manual dalam pekerjaan mengurangi peta dengan menggunakan perkalian vektor
Kesamaan Cosine (Q, dokumen) = Dot product (Q, dodcument) / || Q || * || dokumen ||
tetapi tentunya Spark ML harus secara alami mendukung penghitungan kesamaan cosinus dari suatu teks?
Dengan kata lain diberi kueri pencarian bagaimana cara menemukan cosinus terdekat dari dokumen TF-IDF dari DataFrame?
machine-learning
nlp
apache-spark
cosine-distance
Ganesh Krishnan
sumber
sumber
Jawaban:
Ada contoh terkait dengan masalah Anda di repo Spark di sini . Strateginya adalah untuk merepresentasikan dokumen sebagai RowMatrix dan kemudian menggunakan metode columnSimilarities (). Itu akan memberi Anda matriks dari semua persamaan cosinus. Ekstrak baris yang sesuai dengan dokumen kueri Anda dan urutkan. Itu akan memberikan indeks dokumen yang paling mirip.
Tergantung pada aplikasi Anda, semua pekerjaan ini dapat dilakukan sebelum permintaan.
sumber