如何实现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
相关产品推荐
相关产品推荐

