1.W2NER论文详解
2.NLP修炼系列之Bert(二)Bert多分类&多标签文本分类实战(附源码)
3.序列化推荐中的项项目GRU与Transformer源码解析之一
4.信息抽取UIE——基于prompt的信息抽取模型(附源码)
5.使用全套开源工具构建 LLM 应用实战:在 Dify 调用 Baichuan 开源模型能力
6.郑立峰NLP课程是什么?
W2NER论文详解
论文: arxiv.org/pdf/....
代码: github.com/ljynlp/W2NER
W2NER模型将命名实体识别(NER)任务转化为预测word-word(字-字)的关系,能够统一处理扁平实体、目源码重叠实体和非连续实体三种NER任务。开源
模型假定摄入的项项目句子X由N个token或word组成,X = { x_1,目源码x_2,...,x_N},对每个word pair(x_i,开源arduino keyboard源码x_j)中的两个word关系类别R进行预测,其中R属于{ None,项项目NNW,THW-^*}。
以一个具体例子为例(蓝色箭头表示NNW、目源码红色箭头表示THW-*),开源分析句子中两个症状实体“aching in legs”和“aching in shoulders”之间的项项目关系,构建二维矩阵表示句子按word维度。目源码
模型架构主要是开源预测word pair中两个word之间的关系,如图所示。项项目
数据流转过程中,目源码对output的开源最后一个维度取softmax,得到word-word pair,再进行关系解码。
模型中存在四种情况:扁平实体(情况a)、重叠实体(情况b)、扁平实体+非连续实体(情况c和情况d)。
源码中,B表示batch_size,L表示当前句子的长度。以句子“常建良,男”为例,实体为“常建良(Name类型)”,数据输入格式包括pieces2word、pieces2word、grid_mask2d、grid_labels等。
模型代码包括主类Model、ConvolutionLayer类、CoPredictor类、MLP类和Biaffine类。
参考资料包括博客、知乎专栏和参照代码。
NLP修炼系列之Bert(二)Bert多分类&多标签文本分类实战(附源码)
在NLP修炼系列之Bert(二)的上一篇文章中,我们对Bert的背景和预训练模型进行了深入讲解。现在,android虚拟摇杆+源码我们将步入实战环节,通过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. 项目实战步骤 从构建数据集到模型定义,ar涂涂乐+源码包括数据预处理、数据迭代器的创建、配置定义以及训练、验证和测试模块的实现。 4. 实验与总结 我们尝试了以下实验参数:num_epochs、batch_size、pad_size和learning_rate。在fine-tune模式下,Bert表现最佳,否则效果不佳。项目代码和数据集可通过关注布尔NLPer公众号获取,回复相应关键词获取多分类和多标签分类项目源码。序列化推荐中的GRU与Transformer源码解析之一
GRU4Rec源码(TF版本):github.com/Songweiping/...
Transformer源码:github.com/kang/SASR...
序列化推荐领域中,GRU4Rec成功地将循环神经网络(NLP和时序预测常用)应用至推荐领域,此模型取得了良好效果。紧随其后的是"SASR",基于注意力机制的自适应序列推荐模型,实验表明其性能超越了GRU4Rec。
两篇论文的作者均在源码公开阶段,为研究者提供参考。我们深入剖析源码,后续系列文章将比较GRU4Rec与SASR的差异、联系与优缺点。
GRU4Rec模型结构简洁,采用门限循环神经网络,Embedding层处理item_id的one_hot编码,降低维度,便于优化。
并行化训练数据集优化了模型训练速度,构建了training_batch,便于使用GPU加速矩阵运算。
负采样技术提高了训练频率,利用同一时刻不同session中的item作为负样本。
模型设计了贝叶斯排序和TOP1等pairwise方法计算排序损失,认为pairwise结果优于pointwise。
实验数据集包括RSC和私有VIDEO集,结果表明GRU4Rec模型性能优秀,测试集评价指标包括召回率(recall)和倒序排名得分(mrr)。macbook+源码输出
深入分析模型的Tensorflow版本代码,主要从main.py和model.py文件开始,重点解析模型定义、损失函数、GRU4Rec核心代码、数据集初始化、模型训练与预测以及评估函数。
GRU4Rec的代码分析暂告一段落,后续将详细梳理SASR代码,目标是通过三篇文章全面探讨两个模型的细节。感谢关注。
信息抽取UIE——基于prompt的信息抽取模型(附源码)
信息抽取是NLP任务中的一个常见模块,旨在从自然文本中提取关键信息结构。通过例子理解,例如从"新东方烹饪学校在成都"中提取"新东方烹饪学校"与"成都"作为实体。
命名实体识别(NER)是提取词语级别的实体任务,而关系抽取(RE)则更进一步,关注实体之间的关系。序列标注(Sequence Labeling)方法通过为文本中的每个词分配类别标签,来实现信息抽取。
序列标注面临实体重叠问题,指针网络(Pointer Network)通过为每个实体单独预测解决此问题。它设计多头网络,为每个实体分别预测起始和结束位置,确保实体重叠问题得到解决。
UIE(基于prompt的指针网络)旨在提供更灵活的信息抽取方式。它通过引入prompt参数,允许模型在输入时激活与特定实体类型相关的参数,从而实现不同实体的抽取任务。此方法解决了模型结构随实体类型变化而变化的问题,同时可以高效处理实体关系抽取任务。
UIE的实现相对简洁,主要包含构建起始层和结束层,以及计算损失函数(BCE Loss)以优化模型。通过这种机制,UIE不仅简化了模型结构的调整,还提高了任务处理的灵活性和效率。
完整源码可供查阅,净水机源码实现了一个高效且灵活的信息抽取解决方案,UIE展示了在信息抽取领域的创新与进步。
使用全套开源工具构建 LLM 应用实战:在 Dify 调用 Baichuan 开源模型能力
在当前开源大语言模型的热潮中,许多开发者希望本地部署开源LLM(大型语言模型),用于研究LLM或构建基于开源LLM的应用。笔者也尝试通过开源社区的项目,本地部署服务构建自己的LLM应用。那么,本地部署开源LLM构建聊天应用需要哪些准备呢?本文将详细介绍步骤与工具,包括本地环境准备、大型语言模型、推理服务以及使用开源平台Dify.AI快速构建应用。 本地环境的准备: 为了部署高性能的开源大模型,需要一台配备高性能大显存NVIDIA显卡、大容量高速内存和大容量固态硬盘的本地机器。以Baichuan-chat-B模型为例,建议配置为:i9-K CPU、GTX双卡、GB内存和2TB固态硬盘。 大型语言模型: 大型语言模型是构建应用的基础,不同模型根据预训练数据和任务目标的不同,其结构和知识学习也不同。在Hugging Face等热门AI社区,可以寻找感兴趣的开源LLMs进行尝试和能力对比。 本地部署推理服务: 推理服务将预训练模型加载至本地服务器,提供模型预测接口,支持本地化使用LLM进行NLP任务,无需依赖云服务。使用GitHub上的一流开源项目,如LocalAI、openLLM等,一键部署热门开源模型。 Dify.AI:“LLM操作系统”:使用开源平台Dify.AI,构建基于不同LLM能力的AI应用变得简单。Dify支持快速调用和切换开源模型,包括托管在HuggingFace和Replicate上的所有模型,支持本地部署,通过Xorbits inference推理服务构建AI应用。
以下为实操步骤,从零开始介绍环境配置、安装CUDA、WSL2准备、Docker部署等。 环境准备: 基本的conda和Python环境推荐使用conda管理。首先安装conda,初始化Python3.环境。安装CUDA,推荐从官网直接下载Windows 版本。WSL2环境准备,安装Ubuntu版本并配置代理脚本。安装Docker Desktop,选择使用WSL2,确保WLS和Docker正常运行。配置WSL,安装WSL的CUDA,安装PyTorch。 部署推理服务Xinference: 根据Dify部署文档,Xinference支持多种大型语言模型。选择Xinference部署Baichuan-chat-3B模型。在WSL中安装Xinference基础依赖,并配置模型。启动Xinference并下载部署模型。使用Xinference管理模型查看已部署模型的uid。 部署Dify.AI: 参考Dify官网部署文档,CloneDify源代码,启动Dify,检查容器运行状态。在浏览器访问部署结果。 接入Xinference配置模型供应商: 在Dify设置中填入Xinference模型信息,注意SeverUrl使用局域网IP,获取WSL的IP地址。配置Baichuan-chat模型,创建应用。 后记: 本地部署结合Dify.AI,快速构建基于开源LLM的AI应用成为可能。通过持续迭代和优化,提升应用性能。Dify提供了一个完整的LLM应用技术栈,简化了构建和管理过程,支持数据清洗、标注等服务。LLM应用的场景和能力将进一步丰富,门槛降低。郑立峰NLP课程是什么?
郑立峰,国际级NLP导师,华人中极少数和NLP创始人理查德.班德勒共同签发国际最高级别文凭的NLP塔尖精英,为您带来的精彩的执行师国际文凭课程,让您成为NLP高手,帮助您拥有健康、幸福、成功的人生。
NLP是被称为人类行为的源代码,和人类的沟通密码,人类智慧DNA,人脑使用说明书,是一门可以让人拥有轻松满足成功快乐人生的学问,是一门从根本上解决您的问题,帮助您实现人生梦想的学问。
NLP--神经语言程式学,NLP研究三方面内容:
Neurology(神经学)--大脑的运作和如何思考;
Linguistics(语法)--我们如何应用语言,语言如何影响我们;
Programming(程式)--我们如何用行动来完成目标。
心世界网可以了解更多相关内容。
基于PaddleNLP搭建评论观点抽取和属性级情感分析系统
基于PaddleNLP搭建评论观点抽取和属性级情感分析系统旨在实现对带有情感色彩的主观性文本进行深入分析与处理,广泛应用于消费决策、舆情分析、个性化推荐等领域。百度工程师将带来直播讲解,深入解读情感分析等系统方案,并带来手把手项目实战,详情请点击课程直通车。本项目源代码全部开源在PaddleNLP中。
情感分析任务包括语句级情感分析、评论对象抽取和观点抽取。其中,语句级别的情感分析在宏观上分析整句话的感情色彩,粒度较粗。而属性级别的情感分析则针对某一产品或服务的多个属性进行评论,能提供更具体、细致的分析结果。例如,关于薯片的评论“这个薯片味道真的太好了,口感很脆,只是包装很一般。”可以看出,顾客在味道和口感两个方面给出了好评,但在包装上给出了负面评价。这种细粒度的分析,对于商家改进产品或服务具有重要意义。
项目提出细粒度的情感分析能力,首先进行评论观点抽取,然后分析不同观点的情感极性。评论观点抽取采用序列标注方式,利用BIO的序列标注体系拓展标签,包括B-Aspect、I-Aspect、B-Opinion、I-Opinion和O。在抽取评论观点后,对评论属性和观点进行拼接,并与原文拼接作为独立训练语句,最终传入SKEP模型进行细粒度情感倾向分析。
评论观点抽取模型通过序列标注完成,训练、评估和测试数据集包含标签词典,数据集格式包含文本串和序列标签。数据加载、转换成特征形式,构造DataLoader后,基于SKEP模型实现评论观点抽取功能,进行文本数据输入和向量序列产生,基于CLS位置的输出向量进行情感分析。训练配置包括环境配置、模型参数定义等。
属性级情感分类模型同样基于SKEP模型实现,将处理好的文本数据输入SKEP模型进行编码,使用CLS位置对应的输出向量进行情感分类。训练配置、训练与测试定义完成后,模型训练与测试进行评估,模型效果最好的模型将被保存。在完成模型训练与测试后,可以使用全量数据训练好的评论观点抽取模型和属性级情感分类模型进行全流程情感分析预测。
基于PaddleNLP开源的PP-MiniLM实现属性级情感分类模型,利用模型蒸馏技术蒸馏出6层小模型,效果好、运行速度快。PP-MiniLM数据集在7项CLUE任务上的平均值表现良好。模型量化操作后,与SKEP-Large、PP-MiniLM进行性能和效果对比,展现出显著的性能提升。
加入PaddleNLP的QQ技术交流群,一起学习NLP技术,获得更多关于情感分析的信息。
基于梯度的NLP对抗攻击方法
Facebook的研究团队在EMNLP上发布了一项名为“Gradient-based Adversarial Attacks against Text Transformers”的NLP通用攻击策略,源代码可在facebookresearch/text-adversarial-attack获取。
首先,研究者定义了模型,其中输入集[公式]和输出集[公式]。对于测试样本[公式],如果预测标签为[公式],则目标是找到与[公式]相近的对抗样本[公式],使其预测结果变为[公式]。通过定义函数[公式]来量化两者的接近程度,如果对抗样本[公式]满足[公式],则认为两者非常接近。
寻找对抗样本的过程转化为优化问题,如在分类问题中,使用margin loss作为对抗损失,公式为[公式]。当损失为0时,模型在超参数[公式]的影响下会预测错误。margin loss在年的研究中证明了对抗图像的有效性。
优化目标是通过梯度方法实现,给定对抗损失[公式],对抗样本生成的优化问题可以表述为[公式],通过引入可微的约束函数,如[公式],进行优化。
论文解决了文本数据中应用[公式]的困难,通过概率分布[公式],每个token独立采样。目标是优化参数矩阵[公式],使得[公式]成为对抗样本,优化目标函数[公式],可以包含对抗损失如margin loss。
文章还探讨了如何将概率向量输入模型,通过Gumbel-softmax进行平滑估计,引入梯度。同时,加入了流畅性和语义相似性约束,如因果语言模型和BERTScore,以生成更自然和语义连贯的对抗样本。
实验结果显示,作者的方法可以有效降低模型准确率至%以下,同时保持高语义相似度。消融实验揭示了流畅性约束对结果的影响。
尽管我最初误以为是关于Adversarial训练的内容,但实际研究的是Attack技术,这与我的研究领域不直接相关。