BERT应用——文本间关联性分析

搜索系统中的文本相关性实践经验 文本相关性问题就是判断两个文本之间的相关程度,也是搜广推中的重点问题之一。本篇文章主要粗略总结这方面的一些实践经验,包括特征、模型以及部署上需要注意的问题,都是本人在工作中积累的实际经验,非综述类文章,只总结用过的。总体包括特征和模型两个方面,特征一般指类似 BM25、tf-idf 之类的统计特征,模型则是指各类双塔、交互深度学习模型。... 阅读详情
AI摘要

本文介绍了一种结合自然语言处理(NLP)和深度学习技术,特别是BERT模型,来分析任务文本中的动词及其与属性关联性的方法。通过spaCy进行词性标注,定位关键动词,再利用BERT模型的语义编码能力,评估动词与一系列属性的相关性。

  本文结合了自然语言处理(NLP)和深度学习技术,旨在分析一段指定的任务文本中的动词,并进一步探讨这个动词与一系列属性之间的关联性。具体技术路径包括文本的词性标注、语义编码和模型推断。
在这里插入图片描述

一、技术思路

  1. NLP和词性标注

  在自然语言处理中,理解文本通常开始于基础的语法分析,包括词性标注(POS Tagging)。这一过程涉及识别文本中每个单词的语法类别,如名词、动词等。在本代码中,使用了spaCy这一开源NLP库,它包含预训练的语言模型来执行包括词性标注在内的多种语言分析任务。通过识别任务文本中的主动词,我们可以抓住句子的行动指令,这对于理解任务的本质至关重要。

  1. 深度学习模型BERT

  代码中采用的BERT模型是一种预训练的变换器模型,具有处理各种语言理解任务的能力。BERT模型的核心优势在于其双向编码器表示,能够理解单词在上下文中的复杂关系。通过对BERT模型的进一步训练或微调,它可以适应特定的文本分类任务,如判断文本属性是否与特定动词相关。

  1. 语义编码和模型推断

  文本编码是将文本转换为模型能够处理的格式的过程,通常涉及分词和数字化表示。在BERT中,使用特定的分词器将文本转换为一系列的token,然后将这些token转换为索引,这些索引对应于BERT模型训练时使用的词汇表。这种编码后的数值形式允许模型处理并理解原始文本。

  在属性的相关性判断上,代码首先将每个属性独立地进行编码,然后通过BERT模型进行推断,输出每个属性与动词的相关性得分。通过设定阈值,可以决定哪些属性与动词具有高度相关性。这一步骤是基于模型学习到的语言特征,判断不同属性对于完成任务的相关性和重要性。

二、代码实现

from transformers import BertTokenizer, BertForSequenceClassification
import torch
import spacy

# 加载spaCy的英语语言模型
nlp = spacy.load("en_core_web_sm")

# 加载预训练的bert-base-uncased模型和分词器
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")

# 任务文本
task_text = "Please take the cup for me"
# 已知的物品属性
attribute_text = "graspable, containable, red, cylinder shape"


# 处理任务文本
doc = nlp(task_text)

# 提取最关键的动词
main_verb = None
for token in doc:
    if "VB" in token.tag_:
        main_verb = token.text
        break

# 打印最关键的动词
if main_verb:
    print(f"The main verb is: {main_verb}")
else:
    print("No main verb found in the sentence.")

# 分词并编码任务文本
task_tokens = tokenizer.encode(main_verb, add_special_tokens=True, max_length=32, truncation=True,
                               padding='max_length')
print('task_tokens: ', task_tokens)
task_input_ids = torch.tensor(task_tokens).unsqueeze(0)  # 添加批次维度
print('task_input_ids: ', task_input_ids)

# 分词并编码每个属性
attributes = attribute_text.split(", ")
is_related = []

# 阈值用于判断属性是否与任务相关
threshold = 0.5

# 遍历每个属性并判断相关性
for attribute in attributes:
    attribute_tokens = tokenizer.encode(attribute, add_special_tokens=True, max_length=32, truncation=True,
                                        padding='max_length')
    attribute_input_ids = torch.tensor(attribute_tokens).unsqueeze(0)

    # 推理
    with torch.no_grad():
        attribute_output = model(input_ids=attribute_input_ids)

    print('attribute_output: ', attribute_output)
    # 获取模型的分类分数
    attribute_scores = attribute_output.logits
    print(attribute_scores)

    # 检查标签为1的类别(相关性)
    print(attribute_scores[0][1])
    is_related_attribute = attribute_scores[0][1] > threshold
    is_related.append((attribute, is_related_attribute))

print(is_related)
# 打印结果
for attribute, related in is_related:
    if related:
        print(f"任务文本与属性 '{attribute}' 相关")
    else:
        print(f"任务文本与属性 '{attribute}' 不相关")

输出结果

The main verb is:take
task_tokens:[101, 2202, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
task_input_ids:tensor([[ 101, 2202, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
attribute_output:SequenceClassifierOutput(loss=None, logits=tensor([[ 0.2044, -0.1437]]), hidden_states=None, attentions=None)
tensor([[ 0.2044, -0.1437]])
tensor(-0.1437)
attribute_output:SequenceClassifierOutput(loss=None, logits=tensor([[ 0.2036, -0.1523]]), hidden_states=None, attentions=None)
tensor([[ 0.2036, -0.1523]])
tensor(-0.1523)
attribute_output:SequenceClassifierOutput(loss=None, logits=tensor([[ 0.2480, -0.1076]]), hidden_states=None, attentions=None)
tensor([[ 0.2480, -0.1076]])
tensor(-0.1076)
attribute_output:SequenceClassifierOutput(loss=None, logits=tensor([[ 0.2650, -0.1961]]), hidden_states=None, attentions=None)
tensor([[ 0.2650, -0.1961]])
tensor(-0.1961)
[(‘graspable’, tensor(False)), (‘containable’, tensor(False)), (‘red’, tensor(False)), (‘cylinder shape’, tensor(False))]
任务文本与属性 ‘graspable’ 不相关
任务文本与属性 ‘containable’ 不相关
任务文本与属性 ‘red’ 不相关
任务文本与属性 ‘cylinder shape’ 不相关
机器学习入门算法及其java实现-Apriori(文本关联性)算法 算法原理:基本概念介绍: 支持度: 对于事件A→BA\to B的支持度 support=P(AB)support=P(AB) 置信度: 置信度confidence=P(B|A)=P(AB)/P(A)confidence=P(B|A)=P(AB)/P(A); 3、强关联规则: 如果存在一条关联规则,它的支持度和置信度都大于预先定义好的最小支持度与置信度,我们就称它为强关联规则。强关联规则就可以 阅读详情

相关推荐

基于BERT的文本分类模型开发

非常感谢您的详细需求说明。作为一位世界级的人工智能专家和计算机领域大师,我将以最专业的态度和视角,为您撰写这篇关于"基于BERT的文本分类模型开发"的技术博客文章。我会严格遵循您提供的章节安排和撰写要求,以简洁易懂的语言,深入浅出地阐述相关的核心概念、算法原理、最佳实践以及未来发展趋势等内容,力求为读者带来实用价值。在撰写过程中,我将充分发挥自身在人工智能、自然语言处理等

AI天才研究院 1117

文本内关键字关联挖掘&图谱可视化

提取文本内出现的产品,做关联分析,并进行可视化。 1、文本内产品提取与关联规则挖掘 import pandas as pd #生成相似度百分比 import jieba import jieba.posseg as pseg from gensim import corpora, models, similarities import xlrd import numpy as np import pandas as pd def StopWordsList(filepath): wlst

Sundial dream的博客 2683

主题模型中的语义解耦:相似性与关联性差异分析

在自然语言处理领域,主题模型是文本挖掘的核心技术,主要分为基于统计的传统方法和基于预训练语言模型(PLM)的现代方法。传统方法如LDA通过词共现捕捉主题关联性,反映词语在特定场景中的功能关系;而PLM增强方法则利用语义嵌入识别分类相似性,体现概念层级的相近程度。这两种语义维度——分类相似性和主题关联性,分别对应人类语言理解中的'是什么'和'用什么'关系。理解这一差异对实际应用至关重要:在事件监测等关联性主导任务中,传统模型表现更优;而在同义词检索等相似性需求场景中,PLM模型更具优势。合理选择模型类型并调整

abtmh02622的专栏 502

python文本关联分析_如何对文本内的某个词的关联词进行提取?

简单提供几个思路。比较常见的做法是通过训练词向量,计算词向量的相似度。正如题主所说的word2vec就是最常见的是训练词向量的方法。word2vec是Google的一个开源工具,通过将词转化成向量的形式,可以把对文本內容的处理简化为向量空间中的向量运算,往往会结合余弦相似度来计算向量空间上的相似度,來表示文本语意上的相似度。例如:word2vec训练词向量的方法是通过上下文去预测某个词或者通过一个...

weixin_39847722的博客 2707

数据分析案例-文本挖掘与中文文本的统计分析

本次将以小说HLM为例,介绍中文文本的统计分析和文本发掘等方面的基本知识。

m0_64336780的博客 9770

使用BERT算法进行语义分析

作者:禅与计算机程序设计艺术 1.简介 机器学习(ML)和深度学习(DL)在近几年的快速发展中产生了很大的影响。其中,深度神经网络的发展带来了一种新型的机器学习方法——深度学习。基于深度学习的方法,如卷积神经网络(CNN)、循环神经网络(RNN)等,在图像识别、自然语言处理等领域取得了惊艳成果。2019

AI天才研究院 891

终极指南:BERT-pytorch Next Sentence Prediction实现,快速判断句子关联性的完整教程

BERT-pytorch是Google AI 2018年BERT模型的PyTorch实现,其中Next Sentence Prediction(NSP)任务是BERT预训练的核心任务之一,能够高效判断两个句子之间的逻辑关联性。本文将详细介绍NSP的实现原理与应用方法,帮助开发者快速掌握这一实用功能。 ## 什么是Next Sentence Prediction? Next Sentence P

gitblog_01166的博客 1162

文本聚类黑科技:用BERT将几千条客户投诉自动归类,精准定位产品缺陷

摘要: 面对海量客户投诉文本,传统方法(如TF-IDF、LDA)因语义理解不足难以有效归类。基于BERT的文本聚类技术通过动态上下文编码,将投诉转化为稠密向量,结合UMAP降维和HDBSCAN聚类,显著提升缺陷识别效果。实践表明,BERT方案在Silhouette Score等指标上全面优于传统方法,并成功应用于电子产品缺陷预警(如电池问题)和用户反馈定位等场景。关键步骤包括:文本预处理、BERT嵌入生成、降维聚类及主题解释。需注意定期重训模型以捕捉动态变化的缺陷分布,同时过滤低质量数据干扰。该技术将主观归

IT老农民的博客 41

网络安全日志分析新利器:BERT文本分割模型实战应用

本文介绍了如何利用星图GPU平台,自动化部署BERT文本分割-中文-通用领域镜像,以应对网络安全日志分析的挑战。该模型能够智能切分海量、非结构化的安全日志,将一次完整的攻击事件从背景噪音中自动剥离出来,帮助安全分析师快速定位攻击链,提升威胁调查效率。

weixin_33240461的博客 360

文本情感分析:人工智能在语义情感挖掘中的应用

文本情感分析的核心目标是从文本数据中提取出作者的情绪倾向,即识别出正面情感或负面情感。正面情感(Positive Sentiment)通常指积极、满意、喜悦等情绪,而负面情感(Negative Sentiment)则涵盖了消极、不满、悲伤等情绪。文本情感分析在识别这些情感时,依赖于机器学习模型来预测文本表达的情感极性,这些模型基于大量带有情感标签的训练数据来“学习”文本中情感倾向的信号。识别情感极性的技术通常涉及以下几个步骤:1. 数据预处理:包括分词、去除停用词、词干提取、词性标注等。

weixin_42315569的博客 1230

ZED2双目相机运行VINS-FUSION初试

基于ZED2运行VINS-MONO的经验,在运行VINS-FUSION前有几点tips想跟大家分享,应该能在运行的过程中避免一些踩坑吧。 TIPs 1)关于zed2标定 开始使用Kalibr进行相机单目/双目及联合标定,虽然重投影误差最高也就5个像素,但实际使用效果却并不好,故建议大家相机内参还是从ZED2相机发布出的topic获取或可尝试/usr/local/zed/settings文件下的参数文档 另,启动ZED2.launch的时候,会有一个相机(一般是左目)和IMU的轴系转换关系Camera-IMU

xiaojinger_123的博客 5356

文本匹配技术:从基础原理到BERT实战应用

文本匹配是自然语言处理的基础任务,通过计算两段文本的相似度实现智能检索与推荐。其技术演进经历了从TF-IDF等传统方法到深度学习模型的跨越,特别是BERT等预训练语言模型的出现显著提升了语义理解能力。在工程实践中,文本匹配支撑着搜索引擎相关度排序、智能问答系统、电商推荐等核心场景,其中结合注意力机制的交互式匹配模型和模型轻量化技术成为行业热点。实际应用时需注意数据增强、过拟合处理等常见问题,而多模态匹配和少样本学习则代表了未来发展方向。

weixin_28221501的博客 244

基于STM32F407的立创球形六足双形态机器人:从Morphex复刻到毕业设计的完整开发指南

本文详细介绍了基于STM32F407主控芯片,从零开始复刻Morphex球形六足双形态机器人的完整开发过程。内容涵盖硬件选型(如总线舵机)、机械结构设计(阿基米德螺旋底盘)、软件控制(逆运动学与步态算法)以及多控制方式集成,为嵌入式系统与机器人开发的毕业设计或爱好者提供了全面的实战指南。

weixin_35414260的博客 322

BERT文本分割-中文-通用领域企业应用案例:智能会议纪要生成系统搭建

本文介绍了如何在星图GPU平台自动化部署BERT文本分割-中文-通用领域镜像,快速搭建智能会议纪要生成系统。该系统能将冗长的会议录音文本自动分割为结构清晰的段落,显著提升企业会议记录处理效率和信息可读性,适用于日常会议管理、知识库构建等场景。

weixin_32005771的博客 280

Matlab实战:手把手教你用Zernike多项式模拟光学像差(附完整代码)

本文详细介绍了如何在Matlab中使用Zernike多项式模拟光学像差,包括基础理论、不同排序系统的实现、完整代码示例以及高级应用技巧。通过Zernike多项式,可以有效地描述和分析光学系统中的波前畸变,适用于望远镜校正、眼科光学等多个领域。

weixin_42523720的博客 161

什么是深度展开网络?如何将迭代算法的每一次迭代展开成深度网络对应的一层?深度展开网络进行端对端训练,其中端对端是什么意思?

在深度学习和机器学习的背景下,“端到端”(End-to-end)训练指的是将输入数据直接映射到最终输出的过程,而不需要任何中间的手动数据预处理或特征工程。- **自然语言处理**:端到端自然语言处理系统可以将自然语言输入直接转化为计算机可理解的语言输出,而不需要对语言进行分解和转化。- **推荐系统**:通过使用深度神经网络,端到端推荐系统可以直接根据用户历史行为预测其未来的兴趣爱好,并推荐相应的产品或服务。4. **直接映射**:从输入到输出的直接映射,中间没有任何拆分或分解的过程。

m0_67897882的博客 5433

C盘清理日志分析:用BERT文本分割识别大文件来源描述

本文介绍了如何利用星图GPU平台自动化部署BERT文本分割-中文-通用领域镜像,为C盘清理工作提供智能辅助。该方案将文件路径和描述信息转化为文本,通过AI模型进行语义分割与分类,从而精准识别出缓存、日志等可安全清理的大文件,有效降低误删系统文件的风险。

weixin_42511373的博客 86

[毕设项目-MCP+ENSP]一句话搞定ENSP自动化:MCP + LLM实战(架构图、工具清单、踩坑全解)

用 MCP + LLM 把“人话”变成对华为 ENSP 的安全自动化操作,三款工具覆盖配置/查询/落盘,配套架构、实战与排坑清单。

逐梦苍穹的博客 2540

bert中的sep_语言模型 BERT

今天我们想到 NLP 就会想到 BERT,在 NLP 领域中 BERT 到处屠榜。BERT 主要应用于自然语言处理中的预训练。这里想说一件有趣的事,就是当下比较火的自然语言处理模型如 ElMo 和 BERT 都是动画片芝麻街中角色。BERT(Bidirectional Encoder Representations from Transformers)那么什么是 BERT 呢? 我们先从字面上解释...

weixin_35174422的博客 1158

pb插入ole控件点击insert+control时自动关闭解决办法

也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID中的DLL或OCX控件和PB有冲突时,CLSID后面的DLL、OCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。进行对出问题的控件反注册,如果提示反注册成功,打开PB的OLE控件看是否报错,如果还报错返回步骤(三)循环查找。,再进入注册表看到的是最正确的。来注册会莫名的冲突,但是用。

悠闲饭团的博客 710

SAP 实例解析分期付款配置及应用

SAP系统的付款条件支持分期付款功能,其奥妙之处就在于需要定义一个母条款和一个子条款,其中,母条款需要标识“分期付款”。 首先,定义分期付款的母条款OBB8:             然后,定义子条款(即分期付款的具体方式)OBB9:   由上图可以看出,分期付款的配置还是很强大的,针对每次付款,都可以进行第二层次付款条件的设置。   然后,我们做一笔发票,

heng0757的专栏 1万+

bert、GPT、bart

BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的自然语言处理模型,由Google于2018年提出。它通过在大规模的文本数据上进行无监督的预训练,学习到了一种丰富的句子表示方法,可以用于各种下游任务,如文本分类、命名实体识别、句子关系判断等。BERT模型的核心组成部分是Transformer结构,这是一种基于自注意力机制的深度神经网络结构。

weixin_45495671的博客 1134

最新扣子智能体教程:手把手教你接入抖音评论区,实现自动回复

摘要:本文介绍如何利用扣子(Coze)平台搭建智能体实现抖音评论自动回复。从准备工作(账号注册、权限申请)到智能体创建(提示词优化、模型选择),再到抖音API接入和自动回复逻辑设置,详细说明了每个步骤的操作方法。文章还提供了回复模板示例和优化建议,帮助提升互动效率。通过这套方案,创作者可以显著减轻评论区管理压力,增强用户互动体验。(149字)

互联网架构师笔记 985

BERT文本分割镜像实测:如何提升语音转写稿阅读效率

本文介绍了如何在星图GPU平台自动化部署BERT文本分割-中文-通用领域镜像,实现语音转写稿的智能段落分割。该技术能有效提升长篇转写稿的阅读体验,通过识别语义边界将杂乱文本转化为结构清晰的段落,显著提高会议记录、讲座文稿等材料的阅读效率。

weixin_36064575的博客 265

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

BERT 和 GPT 的核心差异

BERT 是 “语文老师判题” :直接分析句子对是否有关联;GPT 是 “小说家续写” :用生成的下文自然体现句子该咋关联。本质是“双向理解” vs “单向生成”的设计差异,导致处理句子关系的方式完全不同~

mayaohao的博客 537

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

如何用序列分类方式进行法律要素与当事人关联性分析

点击左上方蓝字关注我们【飞桨开发者说】LJPD,“睿聚杯”法律科技创新大赛冠军队伍。队员为:清华大学计算法学20级硕士、中国矿业大学信息与控制工程19级硕士在智慧司法领域中,针对法律裁判...

百度大脑 1089

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: BERT应用——文本相似度计算
下一篇: LLM的物理推理与规划方法E2WM
晓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、付费专栏及课程。

余额充值