Как преобразовать вывод из word2vec, чтобы его можно было поместить в RowMatrix? - PullRequest
0 голосов
/ 30 января 2019

У меня есть следующие ошибки при попытке проанализировать вывод из pyspark.ml.features.word2vec в pyspark.mllib.linalg.distributed.RowMatrix.

Файл "/ databricks / spark / python / pyspark /mllib / linalg / init .py ", строка 83, в _convert_to_vector поднять TypeError (« Невозможно преобразовать тип% s в вектор »% type (l)) TypeError: Невозможно преобразовать тип в Vector

Я запустил pyspark.ml.features.word2vec для набора данных, что привело к ожидаемому выводу в новом столбце.

Я пытаюсь вычислить косинусные сходства между каждым из слов и создать косинусное сходствоМатрица, которая может быть передана в многомерный скаляр для визуализации.

Я пробовал несколько разных вещей, включая приведение каждого значения в vec1 = vectors.select ("vectors) .rdd to float.

На данный момент у меня есть следующий код:

    tokenizer = RegexTokenizer(pattern="[^a-zA-Z-_']", inputCol="SUBJECTS", outputCol="WORDS")
    df = tokenizer.transform(df_droped_null)    

    word2Vec = Word2Vec(vectorSize=100, seed=42, inputCol="STEMMED", outputCol="VECTORS")
    w2v = word2Vec.fit(df)
    df_w2v = w2v.transform(df)

    vectors = w2v.getVectors()     

    vec1 = vectors.select("vector").rdd
    mat = RowMatrix(vec1)
    mat.numRows()

Я ожидаю ROWMATRIX из столбца, содержащего векторы word2vec, так что .columnSimilities () можно вызвать.

Я получаю следующие ошибки:

    File "/databricks/spark/python/pyspark/util.py", line 99, in wrapper return f(*args, **kwargs)
    File "/databricks/spark/python/pyspark/mllib/linalg/__init__.py", line 83, in _convert_to_vector raise TypeError("Cannot convert type %s into Vector" % type(l)) TypeError: Cannot convert type <class 'pyspark.sql.types.Row'> into Vector
...