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

如何实现DataFrame两列文本逐行相似度计算并解决调用报错

解决方案

报错根因

compare() 仅支持单次传入两个独立字符串作为入参,不支持直接接收Pandas Series(整列数据)作为输入,你之前的两种调用方式都没有完成逐行匹配两个入参的逻辑,因此触发参数缺失报错。

实现方法

方法1:通过apply逐行处理(写法简单)

需要指定axis=1按行遍历DataFrame,每一行分别取出两列的文本传入compare(),示例代码如下:

# 此处替换为你实际使用的compare函数实例化/导入逻辑
from sentence_similarity import sentence_similarity
sim_model = sentence_similarity()

# 逐行计算相似度,写入新列
df['similarity_score'] = df.apply(
    lambda row: sim_model.compare(row['OriginalTxt'], row['SummarizedTxt']),
    axis=1
)

如果使用Levenshtein工具,写法逻辑完全一致,只需替换sim_model.compare为对应Levenshtein相似度计算函数即可。

方法2:通过列表推导式实现(执行效率更高)

对于100行的小数据量,两种方法性能差异不大,列表推导式普遍比apply执行速度更快,写法如下:

# 提前过滤空值避免计算报错
df = df.dropna(subset=['OriginalTxt', 'SummarizedTxt']).reset_index(drop=True)

df['similarity_score'] = [
    sim_model.compare(txt1, txt2) 
    for txt1, txt2 in zip(df['OriginalTxt'], df['SummarizedTxt'])
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:45:04