You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何改进代码计算DataFrame单元格与同列其余单元格的Cosine Similarity

改进代码实现指定单元格与同列所有单元格的余弦相似度计算

原代码仅实现了单个单元格文本与指定字符串的余弦相似度计算,以下是改进后的代码,可计算data.iloc[15]['Description']与同一列所有其他单元格的余弦相似度,并生成包含原数据索引、文本内容及相似度的结果表格:

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 提取目标文本(DataFrame中索引为15的行,Description字段)
target_text = data.iloc[15]['Description']
# 获取同列所有文本,保留原数据索引
all_texts = data['Description']
# 合并目标文本与所有待比较文本,确保词汇表拟合的一致性
combined_texts = pd.concat([pd.Series([target_text]), all_texts])

# 初始化词频向量器并完成拟合与转换
count_vectorizer = CountVectorizer()
vector_matrix = count_vectorizer.fit_transform(combined_texts)

# 分离目标文本向量和其他所有文本的向量
target_vector = vector_matrix[0]
other_vectors = vector_matrix[1:]

# 计算目标向量与所有其他向量的余弦相似度
similarity_scores = cosine_similarity(target_vector, other_vectors)[0]

# 生成结构化结果表格
result_df = pd.DataFrame({
    '原数据索引': all_texts.index,
    'Description': all_texts.values,
    '与目标文本的余弦相似度': similarity_scores
})

# 可选:剔除目标文本自身的行(相似度恒为1.0,按需保留或删除)
result_df = result_df[result_df['原数据索引'] != 15]

# 查看结果
print(result_df)

关键说明

  • 词汇表一致性:将目标文本与所有待比较文本一起传入CountVectorizer拟合,确保所有文本基于同一套词汇表生成向量,避免因词汇体系不一致导致的计算误差。
  • 向量切片处理:拟合后的向量矩阵中,第一个元素对应目标文本的向量,剩余元素对应同列其他文本的向量,通过切片分离后完成相似度计算。
  • 结果可读性:保留原数据的索引和文本内容,便于直接对应每个单元格与目标文本的相似度关系。

内容的提问来源于stack exchange,提问作者will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:55:18