小编Sas*_*een的帖子

Spark Dataframe(Pyspark)行之间的成对运算

我有Spark Dataframe两列:idhash_vector.该id是为一个文件的ID和hash_vector一个SparseVector单词的计数对应于文件(并有大小30000).在...中有大约100000行(每个文档一行)Dataframe.

现在,我想找到每对文档之间的相似之处.为此,我想从列中计算余弦相似度hash_vector.我可能还想尝试其他相似性度量,如Jaccard指数.这样做的好方法是什么?我正在使用PySpark.我有一些想法:

  1. 我可以columnSimilarities用来找到成对点产品.但我读到对于具有size_of_vocabulary >> number_of_documents的语料库来说效率更高(这里不是这种情况)
  2. 我可以循环遍历Dataframe行,对于第i行,将第i行作为列添加new_column到其中Dataframe,然后编写一个udf在两列上找到相似性(余弦或Jaccard):hash_vectornew_column.但我读到循环遍历行打败了使用Spark的所有目的.
  3. 最后,我只存储超过某个阈值的相似性.由于我有很多文档,我可以预期相似的矩阵非常稀疏.

我知道这是一个广泛的问题.但我有兴趣了解专家如何考虑这个问题.我很欣赏任何方向.

cosine-similarity apache-spark pyspark spark-dataframe

6
推荐指数
1
解决办法
751
查看次数

如何将稀疏向量的 Spark DataFrame 列转换为密集向量列?

我使用了以下代码:

df.withColumn("dense_vector", $"sparse_vector".toDense)  
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误。

我是 Spark 的新手,所以这可能很明显,我的代码行中可能有明显的错误。请帮忙。谢谢!

dataframe apache-spark apache-spark-sql apache-spark-ml apache-spark-mllib

4
推荐指数
1
解决办法
8474
查看次数

Python string replace not working (bytes input expected?)

I am trying to use Pyner (https://github.com/dat/pyner) for NER. I give it a string of text to extract named entities from it. But I get an error. I am attaching the snipet where the error arises:

for s in ('\f', '\n', '\r', '\t', '\v'): #strip whitespaces
    text = text.replace(s, '')

Error message: {TypeError: a bytes-like object is required, not 'str'}
Run Code Online (Sandbox Code Playgroud)

This error occurs even when I try multiple types of inputs (bytes objects)

text = b'This'
text = …
Run Code Online (Sandbox Code Playgroud)

python string byte replace python-3.x

1
推荐指数
1
解决办法
7467
查看次数