使用bert_base_chinese实现文本语义相似度计算

本文选择将模型下载到本地,进行离线分析计算,也可以使用在线下载,但本文略过

1 下载bert_base_chinese

下载地址:https://huggingface.co/google-bert/bert-base-chinese/tree/main
在这里插入图片描述
下载图上红框内的四个文件,并按照下图的目录结构放置
在这里插入图片描述
bert-base-chinese文件夹里放
在这里插入图片描述

2 代码

import torch
from transformers import BertTokenizer, BertModel
from torch.nn.functional import cosine_similarity

# 初始化分词器和模型
vocab_file = 'D:/code/python/rpa/vocab.txt'
tokenizer = BertTokenizer.from_pretrained(vocab_file)
model = BertModel.from_pretrained('D:/code/python/rpa/bert-base-chinese')

def get_bert_embeddings(text):
    # 对文本进行分词
    inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512)
    # 获取BERT的输出
    with torch.no_grad():
        outputs = model(**inputs)
    # 获取最后一层的隐藏状态
    last_hidden_states = outputs.last_hidden_state
    # 取[CLS]标记的输出作为句子的表示
    sentence_embedding = last_hidden_states[:, 0, :]
    return sentence_embedding

# 计算两个文本的语义相似度
def calculate_similarity(text1, text2):
    emb1 = get_bert_embeddings(text1)
    emb2 = get_bert_embeddings(text2)
    
    # 计算余弦相似度
    # 将emb1和emb2调整为(batch_size, 1, embedding_dim),以便使用cosine_similarity
    similarity = cosine_similarity(emb1.unsqueeze(1), emb2.unsqueeze(1), dim=2)
    return similarity.item()

# 主函数
def main(text1, text2):
    similarity = calculate_similarity(text1, text2)
    print(f"The semantic similarity between the texts is: {similarity}")

text1 = '我的身体很健康'
text2 = '我没有生病'
main(text1, text2)
# result
The semantic similarity between the texts is: 0.8934338092803955
  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用pytorch实现BERT语义相似度计算可以分为以下几个步骤: 步骤1:准备数据 首先,需要导入必要的库和模型,如torch、torchvision、transformers等。然后,加载预训练的BERT模型和Tokenizer,如BertTokenizer和BertModel。接着,将输入的文本进行分词处理,并使用Tokenizer将分词后的文本转换为BERT模型可以接受的格式。 步骤2:数据预处理 在此步骤中,需要对输入的文本进行预处理。BERT模型的输入包括input_ids、attention_mask和token_type_ids。input_ids是文本的token序列,attention_mask用于标记哪些token是有效的,token_type_ids用于区分输入的文本句子对。 步骤3:加载BERT模型 使用transformers库加载预训练的BERT模型,如BertModel。然后,将预处理后的数据作为输入传入BERT模型,获取模型的输出。 步骤4:计算语义相似度 BERT模型的输出是一个包含表示文本语义信息的隐藏向量,可以使用这些向量计算语义相似度。常见的计算方式包括余弦相似度和欧氏距离等。 步骤5:评估语义相似度 为了评估语义相似度的性能,可以使用一些标准的评估指标,如Pearson相关系数、Spearman相关系数和Kendall相关系数等。 步骤6:模型训练和优化 可以使用已标注的语义相似度数据进行模型的训练,使用优化方法如反向传播算法和随机梯度下降等来优化模型的参数。 步骤7:模型应用 完成模型的训练后,可以将其应用于实际的语义相似度计算任务中。通过输入两个文本,经过预处理和BERT模型的计算,可以得到它们之间的语义相似度分数。 上述是使用pytorch实现BERT语义相似度计算的主要步骤,具体的实现细节可以根据具体情况和需求进行调整和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青石横刀策马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值