《项目介绍》 基于python+Flask+Paddle-ERNIE实现的的自动派单系统源码+项目说明.zip 基于fasttext的文本分类 最初的派单项目是使用fasttext实现的文本分类模型实现的一级文本分类任务。在这个任务中,没有层级分类的概念,即各标签之间没有从属关系。 Fasttext的思想是:将工单文本切分成单个字的序列,例如:【我爱中国】切分成[我,爱,中,国]。模型训练一个词嵌入层,对输入的文本,切分成**字序列**后通入模型获取句子的**词向量序列**。分类过程:对词向量序列去平均,作为文本的特征向量,经过线性层映射到最后的类别分类向量,实现多分类。 在最初的分类需求中,上家开发人员通过面向数据的编程,通过关键词检测等手段,处理一部分特征明显的工单,随后通过fasttext处理剩余的工单,在当时满足了客户的需求。 基于fasttext的层级文本分类 我们接手派单项目之后,通过分析上家的源码,发现存在几个可优化点: 1. 原方法从字的尺度对文本进行编码及特征提取,忽略了中文存在词尺度的上下文信息。举个例子:【我爱中国】切分成[我,爱,中,国],相当于将【I love china】切分成[I, l, o, v, e, c, h, i, n, a],随后进行fasttext文本特征提取,这造成了上下文信息丢失。 2. 原方法没有适配层级分类,新的需求要求对工单进行层级分类,不同层级之间具有依赖性,原方法显然不适用。 在初步尝试阶段,根据上述分析,我们引入了Jieba分词库(一个应用广泛的中文分词库)以解决词尺度的上下文信息丢失。我们针对3个层级各训练了一个fasttext分类器,以解决层级分类的标签分层问题。 在尝试中,我们发现,对非层级分类的场景中,引入Jieba分词的fasttext相较于纯fasttext有明显的性能提升。但是在层级分类场景中,仍未能很好地解决标签依赖的问题。例如:真实标签是**LABEL_lv_1-LABEL_lv_2-LABEL_lv_3_A**,是一个三级分类标签,在三个模型中的分类结果可能是:**LABEL_lv_1-LABEL_lv_2-LABEL_lv_3_B**。这是二级标签与三级标签不匹配的问题。 现在的算法 通过调研,我们选择了[基于Paddle的Encoder——ERNIE的层级分类模型][1](简称Hierarchical),作文分类模型,相较于之前的工作,改善有: 1. Encoder类词嵌入模型特征提取能力比fasttext更强,Encoder拥有自带的预训练分词器,相较于基于统计的Jieba分词器会更适配多变的语境。同时预训练模型拥有大量语料库作为底模支撑,在finetune的过程中相对更不容易发生过拟合。 2. Hierarchical在设置标签的时候,引入了不同层级之间依赖关系,具体而言,是让三级标签的标签文本中包含前两级标签的文本,使用特定的分隔符分隔。 Hierarchical的分类机制:使用ERNIE对输入文本进行编码,提取出文本的特征向量;整合多级标签,进行编码得到标签特征向量。通过计算文本特征向量与标签特征向量的余弦相似度,获得文本属于该标签的置信度。在这一步中,因为低级标签包含高级标签的文本,因此可以实现模型提取层级标签之间的依赖关系信息。 现有方法的弊端: 1. PaddlePaddle框架相较于PyTorch更难使用,如果使用现成开源代码开发,需要配置Paddle的环境,是相对麻烦的。可以用Docker解决这一个问题。 2. 我们目前还没有完全拆解分析ERNIE模型的源码及模型结构,暂时不能实现移植到Pytorch上用bert-base-chinese实现相似的功能。 API实现 我们使用了Flask轻量化Web框架实现了简单的Web API接口化。将模型导出为静态图,实现计算结果后处理,并部署到客户的服务器上,告知客户访问服务的IP和端口号即可。 模型静态图的导出使用Onnx作为导出规格,实现了在无GPU环境的BERT模型部署。在调用频率最高的一次测试中,客户一天调用了1.4万次接口,目前仍未收到客户对于处理速度的投诉。 总体流程 【注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载使用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
- 1
- 粉丝: 3823
- 资源: 4648
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- HIVE-14706.01.patch
- C# WInForm IrisSkin2皮肤控件
- svn cleanup 失败怎么办
- Spring Boot集成Spring Security,HTTP请求授权配置:包含匿名访问、允许访问、禁止访问配置
- 易语言-画曲线模块及应用例程
- 电子元件行业知名厂商官网(TI/NXP/ST/Infineon/ADI/Microchip/Qualcomm/Diodes/Panasonic/TDK/TE/Vishay/Molex等)数据样例
- Cytoscape-3-10-0-windows-64bit.exe
- 基于STM32设计的宠物投喂器项目源代码(高分项目).zip
- 机器学习音频训练文件-24年抖音金曲
- 工业以太网无线通信解决方案