首页 > 其他分享 >使用bert_base_chinese实现文本语义相似度计算

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

时间:2024-09-04 11:26:14浏览次数:7  
标签:bert chinese similarity text2 text1 base

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

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

标签:bert,chinese,similarity,text2,text1,base
From: https://blog.csdn.net/m0_53115174/article/details/141883999

相关文章

  • 《BERT基础教程:Transformer大模型实战》一本相见恨晚的大模型入门书(附PDF)
    前言随着chatgpt的火热,大模型成为业界新的热点。而未来每个人,不仅仅是人工智能或者计算机行业从业者,未来的工作或多或少可能都会被大模型的影响。所以了解transformer为基础的大模型(Bert,gpt)就很有必要了。本书聚焦谷歌公司开发的BERT自然语言处理模型,由浅入深地介绍了BERT的工......
  • TapData 信创数据源 | 国产信创数据库 Vastbase 数据同步指南,加速国产化进程,推进自主
    随着国家对自主可控的日益重视,目前在各个行业和区域中面临越来越多的国产化,采用有自主知识产权的国产数据库正在成为主流。长期以来,作为拥有纯国产自研背景的TapData,自是非常重视对于更多国产信创数据库的数据连接器支持,旗下产品已陆续与阿里云、华为云、麒麟软件、优炫数据库、A......
  • 什么是base64?
    Base64是一种用于将二进制数据转换为文本格式的编码方法。这种编码方式由64个字符组成,包括26个大写字母(A-Z)、26个小写字母(a-z)、数字0-9,以及两个特殊字符“+”和“/”。Base64编码的主要特点和用途如下:编码原理分组与转换:Base64编码将输入的二进制数据按照6个比特(bit)为一组进......
  • java采用base64算法加密用户名和密码
    这里做简单记录来记录整个过程。1.首先引入前端base64.js(这里我就直接放到代码块里)2.使用base64在登陆界面加密用户名和密码3.在后端构建base64解密文件,并解密前端的用户名和密码代码如下:1.base64.js代码(创建js文件保存即可用)/*!*jquery.base64.js0.1-https://github.......
  • Camera Link转光纤卡设计资料:153-基于Sprtan6的Full(Base) Camera Link 信号源
    基于Sprtan6的Full(Base)CameraLink信号源  一、板卡概述 板卡采用单FPGA的结构,FPGA采用XILINX的SPARTAN6系列的XC6SLX45T-1FF484I,用来实现Full 模式下的一路Camera Link转光纤功能输出。   二、主要功能和性能板卡功能参数内容......
  • NocoBase 与百事通:为法律行业带来全新变革
    关于百事通上海百事通信息技术股份有限公司成立于2006年,是大型创新型法律服务提供方,构建了法律数字化智能平台,为下一代法律解决方案提供创新的技术和服务。百事通业务覆盖全国31省市自治区,积极参与公共法律服务体系建设,年度服务达到700万人次,市占率达50%。在企业法律科......
  • Chinese tourists traveling to Morocco
    ChinesetouriststravelingtoMoroccoshouldbeawareofafewkeyaspectstoensureasafeandenjoyableexperience:1.LanguageBarrierLanguages:ArabicandBerberaretheofficiallanguages,andFrenchiswidelyspoken.Englishisspokenintouristarea......
  • 使用 Supabase 保护 Next.js 路由
    要使用Supabase保护Next.js路由,你可以按照以下步骤进行操作:1.安装所需的依赖:在你的Next.js项目中,安装`@supabase/supabase-js`和`next-auth`库。2.配置Supabase:在你的项目中创建一个`.env.local`文件,并添加你的Supabase项目的URL和API密钥。3.创建认证页......
  • Java分布式系统设计:CAP定理与BASE理论
    Java分布式系统设计:CAP定理与BASE理论大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在构建分布式系统时,CAP定理和BASE理论是两个核心概念,它们帮助开发者理解分布式系统的特性和设计原则。本文将深入探讨这两个理论,并提供在Java中实现分布式系统时的......
  • Lecture 10 & 11 Real-time Physically-based Materials (surface model)
    Lecture10Real-timePhysically-basedMaterials(surfacemodelsandcont.)PBRandPBRMaterialsPhysically-BasedRendering(PBR)基于物理的渲染渲染内的任何事都应该是PBR的材质、光照、相机、光线传播等等不限于材质,但常常指材质PBRmaterialsinRTR......