我有Spark Dataframe两列:id和hash_vector.该id是为一个文件的ID和hash_vector一个SparseVector单词的计数对应于文件(并有大小30000).在...中有大约100000行(每个文档一行)Dataframe.
现在,我想找到每对文档之间的相似之处.为此,我想从列中计算余弦相似度hash_vector.我可能还想尝试其他相似性度量,如Jaccard指数.这样做的好方法是什么?我正在使用PySpark.我有一些想法:
columnSimilarities用来找到成对点产品.但我读到对于具有size_of_vocabulary >> number_of_documents的语料库来说效率更高(这里不是这种情况)Dataframe行,对于第i行,将第i行作为列添加new_column到其中Dataframe,然后编写一个udf在两列上找到相似性(余弦或Jaccard):hash_vector和new_column.但我读到循环遍历行打败了使用Spark的所有目的.我知道这是一个广泛的问题.但我有兴趣了解专家如何考虑这个问题.我很欣赏任何方向.
我使用了以下代码:
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
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)