如何转换word2vec的输出以便可以将其放入RowMatrix?

时间:2019-01-30 11:09:29

标签: pyspark nlp databricks

尝试将pyspark.ml.features.word2vec的输出解析为pyspark.mllib.linalg.distributed.RowMatrix时出现以下错误。

文件“ /databricks/spark/python/pyspark/mllib/linalg/init.py”,第83行,在_convert_to_vector中引发TypeError(“无法将类型%s转换为向量”%类型( l))TypeError:无法将类型转换为Vector

我已在数据集上运行pyspark.ml.features.word2vec,从而在新列中产生了预期的输出。

我正在尝试计算每个单词之间的余弦相似度,并创建一个可以通过多维标量进行可视化的余弦相似度矩阵。

我尝试了几种不同的方法,包括将vec1 = vectors.select(“ vectors).rdd中的每个值强制转换为浮点数。

目前,我有以下代码:

    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()

我期望包含word2vec向量的列中的ROWMATRIX,以便可以调用.columnSimilarities()。

我遇到以下错误:

    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

0 个答案:

没有答案