PySpark - Создать матрицу матчей ближайшего соседа из MinHashL SH? - PullRequest
0 голосов
/ 05 марта 2020

Я добился большого успеха в создании поиска ближайших соседей для данной страницы из большого массива страниц. Основной процесс c:

  1. Считайте ключевые слова каждой страницы в DataFrame (каждая страница является строкой).
  2. Подгонка и преобразование кадра данных с использованием CountVectorizer для создания столбца «Особенности» для каждой страницы, содержащего векторизованное представление ключевых слов для всего корпуса.
  3. Подгонка и преобразование векторов с использованием MinHashL SH.

Оттуда я могу преобразовать га sh для данной (одной) страницы и найти расстояние по Джакарду до всех остальных страниц следующим образом:

    result_df = hash_model.approxSimilarityJoin(trans_corpus_df, \
            trans_key_df, 1.0, distCol="JaccardDistance")\
            .select(col("datasetA.id").alias("PageID"),
                    col("JaccardDistance"))

Это хорошо работает, но мысль пришла мне в голову ... было бы очень полезно иметь матрицу, в которой каждая ячейка была расстоянием Жакара от страницы m до страницы n. Другими словами, что я мог легко найти совпадения ближайших соседей для ЛЮБОЙ страницы в корпусе, просто посмотрев на полученную матрицу.

Помимо метода грубой силы (выполняющего вышеизложенное для каждой страницы), есть способ сделать это более эффективно в PySpark?

Спасибо!

...