1.NLP预训练模型3 -- 预训练任务优化(ERNIE、新新闻系统SpanBERT等)
2.小样本学习在文心ERNIE3.0多分类任务应用--提示学习
3.基于PaddleNLP搭建评论观点抽取和属性级情感分析系统
4.企业内部流程管理软件有哪些?
5.探索系列 百度情感预训练模型SKEP
6.NLP修炼系列之Bert(二)Bert多分类&多标签文本分类实战(附源码)
NLP预训练模型3 -- 预训练任务优化(ERNIE、闻分SpanBERT等)
前面一篇文章中,类系我们从模型结构、统源实现源码、分类实验结果等角度,源码一开始有必要学源码吗分析了预训练语言中大名鼎鼎的新新闻系统BERT模型。BERT大幅刷新的闻分GLUE得分,提高了7.7个点之多,类系甚至有些中文NLP任务上达到了人类水平。统源那是分类不是在预训练模型方面就没法进行其他创新了呢,答案显然是源码否定的。前文中我们也提到了BERT存在的新新闻系统很多缺点,从预训练任务、闻分模型结构、类系语料数据、模型轻量化等方面我们都可以进行深度优化。本文我们就先从预训练任务的优化讲起。
BERT是一个multi-mask任务,包括mask language model和next sequence prediction两个任务。两个任务有哪些缺点和改进点呢,主要有
过去的年,关于BERT改进的文章层出不穷,目前已经有+ PLMs了。每篇文章从多个不同角度进行了优化,可能既包括预训练任务优化,又包括数据优化。我们按照文章主要出发点来进行归类,但不代表他们就仅仅针对单个点。预训练任务优化方面,我们主要分析ERNIE(百度那篇)和SpanBERT。
2 ERNIE
论文信息:年4月,百度
论文地址
预训练模型和GitHub地址
2.1 主要贡献
文章提到主要有三个贡献
2.2 主要创新
主要创新有
2.2.1 知识融合和MLM任务
ERNIE 将实体(Entity-Level)和短语(Phrase-Level)进行mask,让预训练模型学习到外部知识,从而不需要通过knowledge embedding来引入外部知识。这种方法可以让模型隐式地学到实体知识、实体与实体关系、语义依赖等 ERNIE的模型结构和BERT基本相同,
MLM方面,采用了三种mask策略
文章也对三种mask方式进行了消融分析,加入短语级别和实体级别后,ACC不断提升。如下图。
2.2.2 添加更多优质中文语料
ERNIE添加了中文维基百科、百度百科、百度新闻、百度贴吧语料,网络物流平台源码分别包括的sentences数目为M, M, M, M。
文章也对这些语料进行了消融分析,可见三种不同的语料均对模型performance提升至关重要。
2.2.3 DLM
对于Dialog对话,ERNIE针对对话角色进行了Dialog embedding。如下
如上图,Dialog Embedding添加了对话角色信息,从而使模型可以提升在多轮对话中的performance。
2.3 实验结果
在5个中文NLP任务上进行了实验,均超过BERT,有些甚至提升1%以上。如下
3 SpanBERT
论文信息:年7月,Facebook & 华盛顿大学
论文地址
预训练模型和GitHub地址
3.1 主要创新
3.1.1 span Maskingmask方法
随机挑选span分为两步。
最终仍然保持总共%的token被mask,并按照% % %的方式进行[mask]替换、随机替换和保持不变。策略和BERT相同,只不过token level改为了span level。span masking例子如下。
mask效果对比
文章也对不同的mask方式做了对比分析,主要有单个subword mask,整词mask,实体mask,短语mask和span mask几种方式。可见大部分任务上,span masking均是最优的。
3.1.2 Span Boundary Objective (SBO)
SpanBERT认为span边界词对理解span中的词语意义重大,故提出了一个新的训练目标,也就是SBO。它利用两个边界词的encoding和当前词的position,来预测当前词。实现方式为
3.1.3 Single-Sequence Training
SpanBERT认为BERT的NSP反而会降低模型的performance,原因有二
3.2 实验结果
3.2.1 抽取式QA、指代消解、关系抽取等与span相关的任务
SpanBERT学习span信息,对抽取式QA、指代消解、关系抽取等与span相关的任务上帮助很大。下面为在抽取式QA SQuAD上的结果
其中
可见
3.2.2 span相关度不大任务
文章也在span关联度不大任务上进行了实验,比如GLUE,发现大部分任务效果仍然比BERT好。平均得分提高了2.4个百分点,效果还是杠杠的。
3.2.3 消融实验
文章也分析了三个创新点各自的作用。如下图所示
以GLUE任务为例,去掉NSP可以提高0.4个百分点,android源码运行步骤加入SBO可以提高0.2个百分点。三个创新点均能带来效果的提升。
4 其他预训练任务优化方法
针对BERT预训练任务的改进,也有其他思路和文章。比如
其他更多的优化方法,就不一一列举了。从训练任务角度来优化预训练模型,还是十分关键和有效的。在我们自己的业务场景中,很多时候训练任务也不一定是很清晰的,我们也一定要注意训练任务的建模方式。
系列文章,请多关注
小样本学习在文心ERNIE3.0多分类任务应用--提示学习
小样本学习在文心ERNIE3.0多分类任务应用介绍,主要关注提示学习方法与实践。
二分类/多分类任务广泛应用于商品、网页、新闻和医疗文本分类等现实场景。主流解决方案是在大规模预训练语言模型上进行微调,但需要大量标注数据。小样本学习旨在在数据量有限的情况下取得更好效果。
提示学习通过任务转换和添加提示文本,使下游任务与预训练任务更相似,利用预训练模型学习的特征,减少对大量标注数据的依赖。在Ernie模型中,通过类似完形填空的形式转换多分类任务。
以新闻分类为例,展示如何使用小样本学习进行文本分类。环境要求包括Python3.6及以上、paddlepaddle 2.3及以上、paddlenlp 2.4.0(预计9月发布)。获取最新版本的步骤包括使用git直接安装paddlenlp的源码。
数据集格式包括训练/验证/测试数据集和待预测数据文件。标签集文件存储所有标签,用于分类器初始化,标签名与映射词构成通顺语句以优化学习效果。
模型训练与预测步骤包括使用--do_predict参数进行预测,配置参数如数据路径、输出目录、是否预测、最大序列长度等。训练结束后,模型可导出为静态图参数以部署推理。
部署过程涉及模型转换与ONNXRuntime预测,使用Paddle2ONNX将静态图模型转化为ONNX格式,根据部署设备选择所需的精准反向指标源码依赖和配置参数。
总结,小样本学习通过提示学习提高模型在数据量有限情况下的泛化能力,解决大模型与小训练集匹配问题。展望未来,优化模型融合、进行可解释性分析是关键研究方向。作者博客提供了更多深入信息。
基于PaddleNLP搭建评论观点抽取和属性级情感分析系统
基于PaddleNLP搭建评论观点抽取和属性级情感分析系统旨在实现对带有情感色彩的主观性文本进行深入分析与处理,广泛应用于消费决策、舆情分析、个性化推荐等领域。百度工程师将带来直播讲解,深入解读情感分析等系统方案,并带来手把手项目实战,详情请点击课程直通车。本项目源代码全部开源在PaddleNLP中。
情感分析任务包括语句级情感分析、评论对象抽取和观点抽取。其中,语句级别的情感分析在宏观上分析整句话的感情色彩,粒度较粗。而属性级别的情感分析则针对某一产品或服务的多个属性进行评论,能提供更具体、细致的分析结果。例如,关于薯片的评论“这个薯片味道真的太好了,口感很脆,只是包装很一般。”可以看出,顾客在味道和口感两个方面给出了好评,但在包装上给出了负面评价。这种细粒度的分析,对于商家改进产品或服务具有重要意义。
项目提出细粒度的情感分析能力,首先进行评论观点抽取,然后分析不同观点的情感极性。评论观点抽取采用序列标注方式,利用BIO的序列标注体系拓展标签,包括B-Aspect、I-Aspect、B-Opinion、I-Opinion和O。在抽取评论观点后,对评论属性和观点进行拼接,并与原文拼接作为独立训练语句,最终传入SKEP模型进行细粒度情感倾向分析。外卖侠5.12源码
评论观点抽取模型通过序列标注完成,训练、评估和测试数据集包含标签词典,数据集格式包含文本串和序列标签。数据加载、转换成特征形式,构造DataLoader后,基于SKEP模型实现评论观点抽取功能,进行文本数据输入和向量序列产生,基于CLS位置的输出向量进行情感分析。训练配置包括环境配置、模型参数定义等。
属性级情感分类模型同样基于SKEP模型实现,将处理好的文本数据输入SKEP模型进行编码,使用CLS位置对应的输出向量进行情感分类。训练配置、训练与测试定义完成后,模型训练与测试进行评估,模型效果最好的模型将被保存。在完成模型训练与测试后,可以使用全量数据训练好的评论观点抽取模型和属性级情感分类模型进行全流程情感分析预测。
基于PaddleNLP开源的PP-MiniLM实现属性级情感分类模型,利用模型蒸馏技术蒸馏出6层小模型,效果好、运行速度快。PP-MiniLM数据集在7项CLUE任务上的平均值表现良好。模型量化操作后,与SKEP-Large、PP-MiniLM进行性能和效果对比,展现出显著的性能提升。
加入PaddleNLP的QQ技术交流群,一起学习NLP技术,获得更多关于情感分析的信息。
企业内部流程管理软件有哪些?
推荐致远互联专业管理软件,致远互联BPM工作流管理平台:为组织构建智能、敏捷、高效业务流程管理。协同运营平台-免费体验
1.流程管理:智能化工作流平台,为组织构建全方位流程管理,实现企业经营管理中的标准化、规范化的工作流程体系管理。支持NLP文本识别智能填单、全员流程审批下的抢派单等。
2.BPM门户:原有各系统的流程和功能被统一到BPM门户里,消灭信息孤岛,通过Portal用户不需登录多个系统就能处理日常事务,通过业务的全流程驱动实现事找人,全面提高员工工作效率和领导管理效能。
3.移动BPM:时间轴形式展示流程处理结果,方便企业用户清晰、快速地查看;移动端设计流程时可查看到全貌,帮助参与人进行宏观把控。
4.协同互联:基于组织中人、部门、岗位、角色进行流程流转及分支条件匹配,构建基于组织结构的流程体系。同时,支持新闻/公告/会议纪要/文档权限等经过流程审批后生效。
5.业务互联:BPM与致远业务定制平台无缝融合,适应各种业务应用、管理办事机制和场景。
6.流程集成:通过接口,实现与ERP等第三方系统的待办集成、消息集成、财务凭证、业务集成,支持双向流程集成。
7.流程知识中心:多角度呈现整个组织的流程管理方式,并由单个流程管理,走向组织流程整体管理,为管理者对流程管理做顶层设计提供参考信息。
有任何的问题和不明白的地方,都可以咨询致远互联。致远互联为企业去繁就简,让客户能在协同平台上用适合企业自身的方式运行软件。利用随需定制的协同平台及云服务,支持千行百业实现高效运营并持续进行业务创新,为客户提供放心、省心、舒心的数智工作体验。
探索系列 百度情感预训练模型SKEP
探索面向中英文场景的文本分类训练及推理工作,以百度的情感预训练模型SKEP为核心。SKEP在项典型任务上全面超越当前最先进的模型,已被ACL 收录。
为执行此任务,需在MAC系统环境下操作。首先安装飞桨2版本,其次安装senta。推荐使用pip安装,或根据源码进行安装。注意,本机为Windows环境,因此某些sh指令需调整执行方式。
任务涉及的数据下载需通过浏览器的地址栏完成,为中文任务准备的文本分类数据和英文数据分别下载后存入data目录中。接下来,执行官方demo服务的数据集处理步骤,这是一项典型的NLP基础任务。
为了完成任务,需下载预训练语言模型。在senta中,获取中文预训练语言模型的下载链接,英文预训练模型的下载链接同样存在。这些链接由百度云提供的文件存储服务BOS支持,下载速度较快。
NLP修炼系列之Bert(二)Bert多分类&多标签文本分类实战(附源码)
在NLP修炼系列之Bert(二)的上一篇文章中,我们对Bert的背景和预训练模型进行了深入讲解。现在,我们将步入实战环节,通过Bert解决文本的多分类和多标签分类任务。本文将介绍两个实际项目,一个是基于THUCNews数据集的类新闻标题分类,另一个是我们公司业务中的意图识别任务,采用多标签分类方式。 1.1 数据集详解多分类项目使用THUCNews数据集,包含万个新闻标题,长度控制在-个字符,共分为财经、房产等个类别,每个类别有2万个样本。训练集包含万个样本,验证集和测试集各1万个,每个类别条。
多标签任务数据集来自公司业务,以对话形式的json格式存在,用于意图识别。由于隐私原因,我们无法提供,但网上有很多公开的多标签数据集,稍加调整即可适用。
1.2 项目结构概览项目包含Bert预训练模型文件、配置文件和词典等,可以从Huggingface官网下载。
datas 目录下存放数据集、日志和模型。
models 包含模型定义和超参数配置,还包括混合模型如Bert+CNN等。
run.py 是项目入口,负责运行训练。
train_eval.py 负责模型训练、验证和测试。
utils 提供数据预处理和加载工具。
2. 项目流程和环境要求 通过run.py调用argparse工具配置参数。安装环境要求Python 3.8,项目中已准备好requirements.txt文件。 3. 项目实战步骤 从构建数据集到模型定义,包括数据预处理、数据迭代器的创建、配置定义以及训练、验证和测试模块的实现。 4. 实验与总结 我们尝试了以下实验参数:num_epochs、batch_size、pad_size和learning_rate。在fine-tune模式下,Bert表现最佳,否则效果不佳。项目代码和数据集可通过关注布尔NLPer公众号获取,回复相应关键词获取多分类和多标签分类项目源码。你需要知道的几个好用的中文词法分析工具
在中文词法分析领域,有几款高效且功能丰富的工具,它们分别是Stanford CoreNLP、语言技术平台(LTP)、清华大学词法分析器(THULAC)以及FudanNLP。
Stanford CoreNLP,由斯坦福大学自然语言处理小组开发,是一个集成自然语言分析工具集,包括分句、分词、词性标注、命名实体识别、句法分析、指代消解与情感分析等功能。工具以流式集成方式工作,各模块解耦,易于单独调用。支持多种语言,包括中文、英文、法文、德文及西班牙文。开发语言为Java,提供Java 8+环境下的jar包下载,支持C#、Node.js、PHP、Python等语言调用。分词和命名实体识别基于条件随机场模型,词性标注则采用双向依存网络模型。
LTP,由哈尔滨大学社会计算与信息检索研究中心发布,是一套全面的中文自然语言处理工具集,功能涵盖分句、分词、词性标注、命名实体识别、依存句法分析、语义角色标注与语义依存分析。同样采用流式集成方式,支持各功能模块单独调用。分词与词性标注基于人民日报与微博语料训练,命名实体识别基于人民日报语料训练。工具使用C++语言开发,提供静态、动态库,适用于C、C++与Java程序。分词、词性标注及命名实体识别基于结构化感知器实现。
THULAC,由清华大学自然语言处理与社会人文计算实验室研制推出,是一款中文词法分析工具包,包含分词与词性标注功能。工具包内含人民日报语料库训练得到的Model_1与Model_2,支持分词接口调用,但词性标注接口不可单独使用。语料库包含约五千八百万字已标注文本,可填写申请表获取全部语料库。THULAC完全开源,提供了算法源代码、模型与语料库。在Python中通过import thulac引用,同时支持C++接口与命令格式运行。
FudanNLP,复旦大学自然语言处理实验室开发的中文自然语言处理工具包,包含信息检索、文本分类、新闻聚类、中文分词、词性标注、实体名识别、关键词抽取、依存句法分析与时间短语识别等功能。FNLP采用Java语言开发,支持命令行调用及jar包集成。分词、词性标注与实体名识别功能在命令行中调用。
BERT(Transformer Encoder)详解和TensorFlow实现(附源码)
BERT,全称Bidirectional Encoder Representation from Transformers,源自Transformer的Encoder部分。其核心结构通过双向注意力机制,使得每个token能同时关注其前后文内容,形成双向上下文融合。相较于单向语言模型,BERT在复杂语言理解任务中展现出更强大的性能,如完形填空、问答系统、情感分析、目标导向搜索和辅助导航等。
BERT的训练机制包含两种创新的预训练策略:Masked Language Model(MLM)和Next Sentence Prediction(NSP)。MLM通过在句子中随机遮蔽部分词汇,促使模型基于上下文进行预测,增强词汇理解和错误纠正能力。NSP则判断两句话在语料中的连续性,强化句子级别的语言表征能力。
在BERT的架构中,每个输入token生成一个输出表示,对于任务不同,输出会用到额外的输出层进行预测。例如,对于完型填空或问答任务,使用每个token对应的输出;对于情感分类任务,则使用“[CLS]”对应的输出。
微调阶段,BERT在大量语料上训练后,可用于NLP的各个任务中。对于语义分析任务,构建模型时将BERT输出中的“[CLS]”符号输入到Dense层进行分类处理。通过加载BERT模型、预处理模型以及进行微调,最终完成任务的训练和推理。