可以通过以下步骤实现:
import pandas as pd
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
model = SentenceTransformer('bert-base-nli-mean-tokens')
这里使用了SentenceTransformer库中的BERT模型,可以根据需要选择其他预训练的BERT模型。
embeddings1 = model.encode(df1['文本列'].tolist())
embeddings2 = model.encode(df2['文本列'].tolist())
这里使用BERT模型将文本数据转换为向量表示,分别得到df1和df2的向量表示。
similarity_matrix = cosine_similarity(embeddings1, embeddings2)
使用sklearn库中的cosine_similarity函数计算两个数据帧之间的余弦相似度矩阵。
df1['相似度列'] = similarity_matrix.tolist()
将余弦相似度矩阵转换为列表,并将其添加为df1或df2的新列。
完整代码示例:
import pandas as pd
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
# 加载BERT模型
model = SentenceTransformer('bert-base-nli-mean-tokens')
# 准备数据
df1 = pd.DataFrame({'文本列': ['文本1', '文本2', '文本3']})
df2 = pd.DataFrame({'文本列': ['文本4', '文本5', '文本6']})
# 对文本数据进行向量化
embeddings1 = model.encode(df1['文本列'].tolist())
embeddings2 = model.encode(df2['文本列'].tolist())
# 计算余弦相似度
similarity_matrix = cosine_similarity(embeddings1, embeddings2)
# 将余弦相似度矩阵添加到df1或df2
df1['相似度列'] = similarity_matrix.tolist()
print(df1)
以上代码中使用了pandas库进行数据处理,SentenceTransformer库加载了BERT模型进行文本向量化,sklearn库中的cosine_similarity函数计算了余弦相似度。最后将计算得到的相似度矩阵添加到了df1的新列中。
推荐的腾讯云相关产品:腾讯云机器学习平台(https://cloud.tencent.com/product/tcmlp)可以提供强大的机器学习和自然语言处理能力,适用于BERT模型的训练和推理。
领取专属 10元无门槛券
手把手带您无忧上云