python - PySpark - 文本列的余弦相似度
问题描述
我正在尝试对来自两个数据帧的文本执行余弦相似度分析。
我通过删除所有停用词来清理文本,并执行了词干提取。
我的数据框中剩下两列,如下所示:数据框一只有一行用于词干列
df1 =
Stemmed col
every solut catch except new
而数据框二的词干列有多行
df2=
colum_num stemmed col
1 every except new
2 didnt find solut ye
3 fatal except main
4 access databas everi
我希望得到一个输出,在词干 col 旁边显示每个余弦相似度值,然后我想选择余弦相似度最高的列
df_cosine_similarity =
colum_num stemmed col cosine_similarity
1 every except new 0.230
2 didnt find solut ye 0.652
3 fatal except main 0.095
4 access databas everi 0.159
original_text_body highest_similarity cosine_similarity
every solut catch except new didnt find solut ye 0.652
到目前为止,我知道我需要对词干文本进行矢量化,因此我尝试创建一个文本到矢量函数:
def text_to_vector(text):
words = WORD.findall(text)
return Counter(words)
def get_cosine(vec1, vec2):
intersection = set(vec1.keys()) & set(vec2.keys())
numerator = sum([vec1[x] * vec2[x] for x in intersection])
sum1 = sum([vec1[x] ** 2 for x in list(vec1.keys())])
sum2 = sum([vec2[x] ** 2 for x in list(vec2.keys())])
denominator = math.sqrt(sum1) * math.sqrt(sum2)
if not denominator:
return 0.0
else:
return float(numerator) / denominator
不幸的是,这些功能没有按照他们应该的方式工作
解决方案
推荐阅读
- c# - 无法加载文件或程序集“Elmah”或其依赖项之一。该系统找不到指定的文件
- r - 如何使用 R 在法语中准确应用停用词
- spring - Spring Boot MongoDB 仅将数据库中的某些字段获取到模型中
- sql - Sql Azure 停止使用索引
- java - Flutter FCM 后台调用平台具体代码
- c++ - 为什么关系运算符在 STL 字符串中被重载为非成员函数?
- c# - 将枚举值写入 db col
- c++ - 即使检测到人脸并正确获取左右两半,OpenCV 也没有检测到眼睛
- python - OpenCV:使用 findContours 仅获取二进制图像中的黑色轮廓
- swift - 如何正确更新修饰符?