BERT应用——文本相似度计算

BERT 模型是什么 BERT(代表 Bidirectional Encoder Representations from Transformers)是 Google 于 2018 年开发的开源模型。这是一项雄心勃勃的实验,旨在测试所谓的 Transformers(一种创新的神经架构,由谷歌研究人员在 2017 年的著名论文《注意力是你所需要的一切》中提出)在自然语言 (NLP) 任务上的性能。BERT成功的关键在于其变压器架构。在 Transformer 出现之前,对自然语言进行建模是一项非常具有挑战性的任务。 阅读详情
AI摘要

本文介绍了一种利用BERT模型计算文本相似度的方法。通过将文本编码为嵌入向量并应用余弦相似度函数,可以有效评估两段文本的语义相近程度。此方法结合了BERT的深度语义理解能力及余弦相似度的直观度量,适用于多种自然语言处理场景。

  本文展示了如何利用BERT模型计算两个文本字符串之间的余弦相似度。BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的预训练模型,广泛应用于自然语言处理领域。BERT的核心创新在于其双向训练的机制,使得模型能够同时考虑到输入数据的左右两侧的上下文信息,从而获得更为丰富的语义表示。

在这里插入图片描述

一、技术思路

  本代码段的技术思路是:首先使用BERT的分词器对输入的单词进行编码,然后将编码后的数据输入到BERT模型中获取嵌入向量。随后,对这些向量进行平均池化处理以获得更加稳定的特征表示,最后通过余弦相似度函数计算两个嵌入向量之间的相似度。这种方法结合了BERT的深层语义理解能力和余弦相似度的直观度量方式,能有效地评估两个文本之间的语义接近程度。

  1. 文本编码原理

  在BERT中,文本首先通过一个分词器(Tokenizer)处理,该分词器将原始输入文本转换为模型可以理解的格式,包括将单词转换为词汇表中的索引、添加特殊的分隔符(如[CLS]和[SEP]),以及生成对应的注意力掩码(Attention Mask)。这一步是处理文本数据的关键,它直接关系到后续模型能否正确理解和处理输入数据。

  1. 嵌入向量的获取

  通过BERT模型对编码后的文本进行处理后,可以获取到每个输入token的嵌入表示。这些表示是在模型的多层网络结构中生成的,其中每一层都通过自注意力机制和前馈网络计算得到新的表示。在自然语言处理任务中,通常使用模型最后一层的输出作为最终的特征表示,因为它们包含了经过多层处理后的高级语义信息。

  1. 余弦相似度的计算

  余弦相似度是一种常用的相似度度量方式,它通过计算两个向量的夹角余弦值来评估它们的相似度。在文本处理中,将两个文本的嵌入向量进行余弦相似度计算,可以得到一个介于-1和1之间的标量值,表示这两个文本在语义上的接近程度。值越接近1,表示语义相似度越高;值越接近-1,表示语义差异越大。

二、代码实现

from transformers import BertTokenizer, BertModel
import torch
import torch.nn.functional as F

# 定义要比较的单词
Text_1 = "Apple"
Text_2 = "Red"

# 初始化 BERT tokenizer 和模型
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

# 对单词进行编码
tokens_a = tokenizer(Text_1, return_tensors='pt')
tokens_b = tokenizer(Text_2, return_tensors='pt')

# 获取单词的嵌入
with torch.no_grad():
    embeddings_a = model(**tokens_a).last_hidden_state.mean(dim=1)
    embeddings_b = model(**tokens_b).last_hidden_state.mean(dim=1)

# 计算余弦相似度
cosine_similarity = F.cosine_similarity(embeddings_a, embeddings_b)
cosine_similarity.item()
print(cosine_similarity)

结果

Text_1Text_2cosine_similarity
AppleRed0.8330
AppleEat0.8428
I like applesThe weather is cold0.4977
I like applesI don’t like bananas0.7750

参考资料

[1] Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arxiv preprint arxiv:1810.04805, 2018.
[2] bert-base-uncased

用Bert获取句子向量,并计算句子相似度 我用的是sentence-bert,它封装在sentence-transformer中: 二、相似度 向量相似度有两个度量标准:余弦相似度、余弦距离,其中余弦相似度就是cos,两个向量越像,余弦相似度越大;余弦距离=1-余弦相似度,两个向量越像,余弦距离越小。下面这段代码就是计算余弦距离的 结果: 参考文章: 1.https://blog.youkuaiyun.com/u011412768/article/details/86714540... 阅读详情

相关推荐

Bert基础(十九)--Bert实战:文本相似度匹配

文本匹配是指计算机系统识别和确定两段文本之间关系的任务。这个概念非常广泛,涵盖了各种场景,其中文本之间的关系可以是有相似度、问答、对话、推理等。在不同的应用场景下,文本匹配的具体定义可能会有所不同。本次先介绍最简单的文本相似度计算的任务,后面将其他的信息检索、机器翻译、文本生成、对话系统等任务进行实战。基本步骤:fill:#333;color:#333;color:#333;fill:none;1 加载数据集2 数据预处理3 创建模型4 创建评估函数5 创建训练器6 训练模型7 评估。

Andy_shenzl的博客 2501

BERT模型的详细介绍

BERT模型的详细介绍 1.BERT 的基本原理是什么? BERT 来自 Google 的论文Pre-training of Deep Bidirectional Transformers for Language Understanding,BERT 是“Bidirectional Encoder Representations from Transformers”的首字母缩写,整体是一个自编码语言模型(Autoencoder LM),并且其设计了两个任务来预训练该模型。 第一个任务是采用 Ma

IT之一小佬的博客 12万+

基于深度学习的文本相似度计算

BERT是一种基于 Transformer 的双向编码器表示模型,它通过预训练和微调(fine-tuning)来获取文本的上下文信息。在文本相似度计算中,我们可以利用 BERT 提供的句子嵌入(Sentence Embedding),然后计算它们之间的余弦相似度。本文介绍了如何基于深度学习进行文本相似度计算。通过使用BERT预训练模型,我们能够得到高质量的文本嵌入,从而有效地进行文本相似度计算。我们还通过微调模型来提高相似度预测的准确性。使用更大规模的预训练模型。

斌擎科技 493

BERT模型

BERT模型 Paper: https://arxiv.org/abs/1810.04805 BERT 全称为Bidirectional Encoder Representation from Transformers(来自Transformers的双向编码表示),谷歌发表的发的论文Pre-traning of Deep Bidirectional Transformers for Language Understanding中提出的一个面向自然语言处理任务的无监督预训练语言模型。是近年来自然语言处理领域公

发呆的比目鱼的博客 2万+

深入研究计算文本相似度的深度学习模型与算法(BERT、SentenceBERT、SimCSE)

BERT(Bidirectional Encoder Representations from Transformers)模型由Google于2018年提出,是一种基于Transformer的预训练语言表示模型。它通过双向的Transformer结构获取文本的深层语义信息,从而克服了传统单向模型信息捕获的局限。BERT模型的输入是文本序列,输出则包含了每个token的隐藏层表示,这些表示可以直接用于下游的NLP任务。

weixin_36304957的博客 1251

深度学习文本相似度分析:BERT、SentenceBERT、SimCSE算法实现与应用研究

本文还有配套的精品资源,点击获取 简介:本人工智能大作业将探讨深度神经网络模型在文本相似度计算中的应用,重点分析BERT、SentenceBERT和SimCSE三种方法。BERT利用Transformer架构实现双向上下文理解,SentenceBERT针对句子级别优化学习,而SimCSE通过对比学习框架提升无监督环境下的相似度计算性能。这些模型在信息检索、问答系统、情感分析...

weixin_31938351的博客 7900

语义文本相似度计算:轻松实现BERT模型的应用

语义文本相似度计算:轻松实现BERT模型的应用 项目介绍 在自然语言处理(NLP)领域,文本相似度计算是一个核心任务,广泛应用于搜索引擎、推荐系统、问答系统等场景。传统的文本相似度计算方法往往依赖于词频统计或简单的词向量计算,难以捕捉文本的深层语义信息。为了解决这一问题,semantic-text-similarity项目应运而生。 semantic-text-similarity是一个基于BER...

gitblog_00001的博客 547

基于Django与BERT的深度学习文本相似度检测系统实战设计

Django 是一个基于 Python 的高性能 Web 开发框架,以其“开箱即用”的设计理念著称。它内置了 ORM(对象关系映射)、Admin 管理界面、模板引擎、表单处理、用户认证等模块,极大地提升了开发效率。Django 的核心优势包括:优势点描述快速开发提供丰富的内置组件,减少重复开发安全性强自带防止 CSRF、XSS 等常见攻击机制可扩展性好支持模块化开发,便于系统后期扩展社区活跃文档完善,社区资源丰富,学习成本低。

weixin_29867767的博客 1028

基于BERT的文本相似度计算

一、背景 最近在研究文本相似度,利用Bert去实现。 如果是在通用领域内进行文本相似度计算的话,就无需对Bert中文模型进行预训练,如果在特定领域内,就需要提前用大量的语料进行对google原版的中文模型进行预训练。 bert用来提取句向量,然后利用余弦距离去计算相似度。 二、具体实现 利用苏神的bert4keras去构建网络模型,简单而又方便。 from bert4keras.models import build_transformer_model from bert4keras.tokeniz

weixin_42052964的博客 1万+

深度学习文本相似度计算项目实践

智能问答系统的核心在于通过理解用户提问,自动从大量数据中检索、抽取、合成答案。一个基本的智能问答系统通常包括以下几个核心组件:自然语言处理(NLP):负责理解用户输入的问题,并将其转化为一个可操作的内部表示形式。知识库/搜索引擎:作为回答问题的数据源,知识库可能是一个结构化的数据库或非结构化的文档集合。答案检索与抽取:基于理解的问题意图,在知识库中检索相关信息,并从这些信息中抽取最符合用户问题的答案。答案生成:将检索到的信息合成流畅、准确的回答。对话管理。

weixin_42560991的博客 481

一文详解本地知识库RAG(检索增强):LangChain + Hugging Face 三件套 + 本地大模型 + MCP 协议 + Chroma + Agent 全流程实战

模型上下文协议(MCP)是 Anthropic 推出的开放标准,基于 JSON-RPC 2.0,为 AI 应用与外部工具/数据源之间提供统一的双向通信协议,被称为“AI 应用的 USB-C”。LangChain 是一个围绕 LLM、提示模板(Prompts)、记忆(Memory)、链(Chains)、工具(Tools)和代理(Agents)等组件打造的开源框架,旨在简化复杂自然语言应用的开发。:任意可调用的功能或服务(API、数据库查询、本地函数等),由 Agent 或 Chain 在推理过程中调用。

weixin_41645791的博客 1425

bert文本相似度计算_使用bert和其他模型计算文档相似度

bert文本相似度计算入门(Getting Started) Introduction介绍 Document similarities is one of the most crucial problems of NLP. Finding similarity across documents is used in several domains such as recommending simi...

weixin_26739165的博客 8246

Windows上搭建OpenHarmony星闪开发环境:HiSpark Studio全流程指南

嵌入式开发中,环境搭建是项目启动的关键步骤。OpenHarmony作为开源操作系统,其构建体系依赖Python脚本和GN/Ninja工具链,对版本兼容性要求严格。星闪(NearLink)技术作为新一代短距无线通信方案,在时延、并发和抗干扰方面优势显著,广泛应用于智能家居、工业控制等场景。在Windows平台上,通过HiSpark Studio集成开发工具,开发者可高效完成代码编辑、编译、烧录与调试。然而,Python版本冲突、环境变量配置、驱动签名等问题常导致搭建失败。本文详细拆解从系统准备到编译验证的全流

weixin_32658257的博客 343

揭秘BERT背后的魔力:语义相似度算法深度剖析

BERT模型是由GoogleAI研究院于2018年提出的,一经问世便引起了业界的广泛关注。该模型通过大量的语料库进行预训练,可以学习到丰富的语言知识和上下文信息。BERT最大的特点在于其双向性,即同时考虑了文本的上文和下文信息,从而能够更准确地理解文本的含义。BERT是一种基于Transformer的双向编码器表示模型,它通过预训练的方式学习了丰富的语言表示。BERT模型在训练过程中使用了大量的无标注文本数据,通过自监督学习的方式,学习到了文本中词、短语和句子的上下文表示。

沛哥儿的专栏 4486

地震勘探原理---地震预处理

3.1 为什么说要对数据进行振幅补偿?具体来说,地震波在传播过程中会遇到各种各样的地质条件,例如不同的岩层、土壤、水层等,这些介质的密度、速度等特性不同,因而对地震波的能量消耗也有所不同。在传播距离较远的情况下,能量损失可能会导致接收到的地震信号振幅变小。相反,在传播距离较近的情况下,能量损失可能较小,导致接收到的地震信号振幅变大。如果不对数据进行振幅补偿,这种振幅不均衡会导致地震数据分析和解释的误差和不确定性增加,可能产生错误的结论。

DARRENANJIAN的博客 3274

Neo4j 智能供应链应用源代码简析

本文简析Neo4j智能供应链应用的源代码,让你也可以快速开发自己的供应链应用。

Neo4j 开发者博客 1680

使用BERT做中文文本相似度计算与文本分类

简介 最近Google推出了NLP大杀器BERT,BERT(Transformer双向编码器表示)是Google AI语言研究人员最近发表的一篇论文。它通过在各种NLP任务中呈现最先进的结果,包括问答系统、自然语言推理等,引起了机器学习社区的轰动。 本文不会去讲解BERT的原理,如果您还不清楚什么是BERT建议先参阅Google的论文或者其他博文,本文主要目的在于教会大家怎么使用BERT的预训练模...

u012526436的博客 5万+

当AI学会自我验证:Chain-of-Verification如何杜绝错误决策?

2025年,大模型"幻觉"问题已成为企业落地AI的最大障碍之一——金融风控中1.2%的误判率可能导致千万级损失,医疗诊断中3%的错误可能危及生命,法律文书中5%的事实偏差可能引发合规风险。MetaAI与Google联合提出的**Chain-of-Verification(CoVe,验证链)**技术,让AI具备"自我审视"能力,通过结构化验证流程将幻觉率降低68%+,在复杂决策场景准确率提升至95%+。本文系统拆解CoVe的技术原理、实施路径与行业实战,为企业提供AI决策可靠性保障的完整方案。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1081

【NLP实战】基于ALBERT的文本相似度计算

实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式。因此,NLP专栏推出了实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试。ALBERT是一个比BERT要轻量,效果更好的模型,本篇实践介绍如何用ALBERT计算两个文本的相似度。作者&编辑 | 小Dream哥 1 ALBERT介绍ALBERT利用词嵌入参数因式分解和隐藏层间参数共享两种手段,显著减少了模型的参数量的同时...

hacker_long的专栏 5712

看懂 SAP S/4HANA 产品主数据里的 GTIN:一串号码背后的全球商品识别与业务协同

SAP S/4HANA中的GTIN管理是企业供应链运营的关键环节。本文深入解析GTIN的业务内涵及其在SAP系统中的实现方式:1) GTIN是全球通用的商品标识码,不同于企业内部物料编码;2) SAP主数据中GTIN与计量单位强绑定,需为不同包装层级维护独立GTIN;3) 同一产品可能因渠道、供应商差异存在多个GTIN;4) GTIN贯穿零售POS、仓储管理、EDI订单等核心业务流程;5) 通过典型案例说明错误维护GTIN将导致收银异常、仓库作业低效等运营问题。文章强调GTIN管理需结合包装层级、计量单位等

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1433

(一)激光线扫描-三维成像原理

激光线扫描是一种使用激光作为光源,通过特定的扫描设备(如光学镜头、电机驱动的镜头或电子扫描设备)将激光束引导到目标表面,并按照预定的路径进行扫描的技术。这种技术通常用于测量、检测、打印、切割等多种应用中。

FlyWine的博客 3629

使用bert-service获取句向量和相似度计算

一、下载已训练好的模型 前往https://github.com/google-research/bert#pre-trained-models选择模型(本文选择中文模型)下载并解压. 二、下载bert-as-server 1、下载bert-server服务 pip install bert-serving-server #server pip install bert-serving-client #client 2、启动服务 bert-serving-start -model_dir /pro

小马日记 4440

RK3588 C++ MeloTTS 推理

本文介绍了基于RK3588平台和RKNN工具链实现的端侧语音合成(TTS)系统。该系统支持中英文混合输入处理,通过自动合并英文单词、转换标点符号等方式预处理文本,并将其转换为音素和声调序列。核心推理流程包含编码器、中间处理和解码器三个阶段:编码器将音素序列转为隐藏状态,中间处理调节音调和语速,解码器生成最终波形。代码示例展示了输入数据设置和模型推理过程,利用RK3588内置NPU实现高效语音合成。该系统展现了在边缘计算设备上实现复杂AI任务的能力。

J。 199

Google-BERT/bert-base-chinese文本相似度计算:语义匹配核心技术

在传统的信息检索和文本匹配任务中,我们通常使用基于词频的统计方法(如TF-IDF、BM25)或者简单的字符串相似度算法(如编辑距离、Jaccard相似度)。然而,这些方法存在明显的局限性: - **词汇鸿沟问题**:无法识别同义词和近义词的语义关系 - **语境缺失**:无法理解词语在不同上下文中的含义变化 - **结构复杂性**:难以处理长文本和复杂语义关系 BERT(Bidirection...

gitblog_01058的博客 1269

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【亲测免费】 中文法律BERT相似度项目教程

中文法律BERT相似度项目教程 项目介绍 中文法律BERT相似度项目(chinese-law-bert-similarity)是一个基于BERT模型的开源项目,专门用于处理中文法律文本的相似度计算。该项目利用深度学习技术,通过预训练的BERT模型来提取法律文本的特征,进而计算文本之间的相似度。这对于法律领域的文本分析、案例检索和法律咨询等应用具有重要价值。 项目快速启动 环境准备 在开始之前,请确...

gitblog_00488的博客 753

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

transformers文本相似度

通过将文本转换为向量表示(例如,使用词袋模型、TF-IDF 或 word2vec、GloVe 等词嵌入技术),然后计算这两个向量之间的余弦夹角来评估相似度。利用如BERT这样的Transformer架构的预训练模型,可以直接获取句子级别的向量表示,然后计算这些向量之间的相似度。训练网络以学习将文本映射到一个固定大小的向量空间,其中相似的文本对应相近的向量,从而可以直接比较向量间的距离或相似度得分。对于分词后的文档集合,可以计算它们的交集与并集的比例,以此作为相似度指标。编辑距离较小,表明文本更相似。

LLMUZI123456789的博客 1375

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 自然语言指令执行机器人控制策略GRIF
下一篇: BERT应用——文本间关联性分析
晓shuo
晓shuo 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄6年 4万+粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

晓shuo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值