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

如何用Python计算DataFrame每行两列文本的成对Jaccard相似度

实现方法

首先导入所需依赖库:

import pandas as pd
import nltk

在你已经构造好目标DataFrame的前提下,可选择以下任意一种方式完成批量计算:

方法1:apply逐行处理(逻辑最直观)

完全沿用你给出的单条计算逻辑,对整表逐行遍历计算:

df['jac_q1_q2'] = df.apply(lambda row: nltk.jaccard_distance(set(row['q1']), set(row['q2'])), axis=1)

方法2:列表推导式(执行性能更高)

通过zip配对两列的句子,批量计算后直接赋值给新列:

df['jac_q1_q2'] = [nltk.jaccard_distance(set(q1), set(q2)) for q1, q2 in zip(df['q1'], df['q2'])]

补充说明

你当前的计算逻辑是字符级的Jaccard距离,若需要更符合句子相似度场景的词级计算,可先对句子分词再处理:

# 第一次使用分词功能需要先下载punkt资源
nltk.download('punkt')
df['jac_q1_q2_word_level'] = df.apply(lambda row: nltk.jaccard_distance(
    set(nltk.word_tokenize(row['q1'])), 
    set(nltk.word_tokenize(row['q2']))
), axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:15:03