Я прочитал, что могу использовать метод columnSimilarities
, который поставляется с RowMatrix
, чтобы найти сходство косинусов различных записей (на основе контента). Мои данные выглядит примерно так:Spark ml cosine сходство: как получить от 1 до n оценку подобия
genre,actor
horror,mohanlal shobhana pranav
comedy,mammooty suraj dulquer
romance,fahad dileep manju
comedy,prithviraj
Теперь, я создал искровым мл трубопровода для расчета Tf-IDF указанных выше текстовых объектов (жанр, актер) и использует VectorAssembler
в моем трубопроводе, чтобы собрать как функции в один столбец «функции». После этого я конвертировать мой полученный DataFrame
с помощью этого:
val vectorRdd = finalDF.map(row => row.getAs[Vector]("features"))
, чтобы превратить его в RDD[Vector]
Тогда я получаю мой RowMatrix
по
val matrix = new RowMatrix(vectorRdd)
Я следую this руководства для ссылки к подобию косинуса и тому, что мне нужно, - это метод в spark-mllib, чтобы найти сходство между конкретной записью и всеми остальными, например, this метод в sklearn, так как s в руководстве:
cosine_similarity(tfidf_matrix[0:1], tfidf_matrix)
Но, я не могу найти, как это сделать. Я не понимаю, что сравнивает и возвращает matrix.columnSimilarities()
. Может кто-нибудь помочь мне с тем, что я ищу?
Любая помощь приветствуется! Благодарю.