飞桨Ai(一)基于训练后的模型进行信息提取

基准

  • 本博客基于如下视频:
    • 发票抬头信息抽取之环境搭建 - 基于飞浆开源项目
    • 发票抬头信息抽取之数据标准+模型训练 - 基于飞浆开源项目

步骤

1、准备工作

  • 下载python:【Python】Windows:Python 3.9.2 下载和安装(建议3.9)
  • 升级pip:CMD窗口运行python -m pip install --upgrade pip
  • 安装飞浆模型:CMD窗口运行python -m pip install paddlepaddle==2.6.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

2、使用默认模型尝试识别程序

2.1、创建项目,目录结构如下(model下为空文件夹)

在这里插入图片描述

2.2、uie_v1.py代码
import time
t1=time.time()
from pprint import pprint
from paddlenlp import Taskflowschema = ['单位', '统一社会信用代码', '地址', '电话', '开户行', '账号'] # Define the schema for entity extraction
ie = Taskflow('information_extraction', schema=schema, task_path='./model') #注意这里的地址可改
pprint(ie("单位:芒市四维有限公司 统一社会信用代码:915331035772611689 地址:云南法州市文说华区73号 电话:0692-8895660 开户行:中国工商银行限有限公司法市支行 账号:25102309201037948")) # Better print results using pprint
t2=time.time()
print(t2-t1)
2.3、识别结果

在这里插入图片描述

3、训练模型

3.1、准备训练数据(123.txt)
1、云南科禹建设管理咨询有限公司德宏分公司91533100MA6K35YB2C公司地址:云南省德宏州艺市白象街东侧(翠堤晓镇)06922212326开户行及:中国农业银行股份有限公司芒市支行账号:24139801040014503
2、单位:芒市四维有限公司统一社会信用代码:915331035772611689地址:云南法州市文说华区73号电活0692-8895660开户行:中国工商银行限有限公司法市支行账号:25102309201037948
3、单位名称税号注册:电话号码开户银行银行账号湖博康贝医疗器城有限公司913703047292704866博山区城东街道办事处良生三泉山 0533-4290668中国银行博山 支行206505422178
4、2020年09月28日芒市善彻金属结构制/部92533103MA6POKQ7X4云南宏州风平流门村民小13759201612 王云南艺市农村商业银行股份有限公司核支行55000156432370129
5、2020年10月21日市盘达汽车像理厂92533103MA6M4DKF5A云南省宏州艺市寨村(环东路旁)1598789707 李玉花中国农业银行股份有限公司德法青年分理处623190001810146
3.2、数据标注
  • 本地安装并启动doccano,参考两篇文档:
    • PaddleNLP信息抽取技术重磅升级!开放域信息抽取来了!三行代码用起来~
    • 文本标注工具doccano的安装与使用
    • 注意:使用python3.9(不要3.10,会报错)在cmd窗口创建虚拟环境,然后再下载和启动doccano
  • 进入doccano:输入网址http://127.0.0.1:8000/进入doccano,输入自己设置的账号密码
  • 上传数据集:123.txt就是上面的训练数据
    在这里插入图片描述
    在这里插入图片描述
  • 添加标签
    在这里插入图片描述
  • 在数据集中进行数据标注

在这里插入图片描述

  • 导出数据:选择jsonl,并勾选选项

在这里插入图片描述
在这里插入图片描述

3.3、模型训练
  • 新建项目:在官网上登录,新建如下项目并启动
    在这里插入图片描述
  • 准备工作:
    • 更新pip:pip install --upgrade pip
    • 更新protobuf:pip install protobuf==3.19.0
    • 更新PaddleNLP:pip install paddlenlp==2.5.2(不要升级到最新的,不兼容)
  • 放入文件:从官方源代码中摘取如下文件放到根目录,然后将标注后的jsonl文件放入data文件夹中,最终目录如下
    • 官方项目开放源代码:UIE模型
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 数据转换:执行后会在./data目录下生成训练/验证/测试集文件
!python doccano.py \--doccano_file ./data/admin.jsonl \--task_type ext \--save_dir ./data \--splits 0.8 0.2 0 \--schema_lang ch
  • 模型微调:使用 uie-base 作为预训练模型进行模型微调,将微调后的模型保存至./model中
    • 如果是基于已有模型进行微调,修改model_name_or_path后面的参数,修改为模型地址./model
!python finetune.py  \--device gpu \--logging_steps 10 \--save_steps 100 \--eval_steps 100 \--seed 42 \--model_name_or_path uie-base \--output_dir ./model \--train_path data/train.txt \--dev_path data/dev.txt  \--max_seq_length 512  \--per_device_eval_batch_size 6 \--per_device_train_batch_size  6 \--num_train_epochs 20 \--learning_rate 1e-5 \--label_names "start_positions" "end_positions" \--do_train \--do_eval \--do_export \--export_model_dir ./model \--overwrite_output_dir \--disable_tqdm True \--metric_for_best_model eval_f1 \--load_best_model_at_end  True \--save_total_limit 1
  • 取出模型文件,替换默认的模型(注:有三个文件在static文件夹里)
    在这里插入图片描述
    在这里插入图片描述
3.4 验证模型
  • 依据训练好的高精度模型进行识别,执行如下脚本
#uie_v1.py
import time
t1=time.time()
from pprint import pprint
from paddlenlp import Taskflowschema = ['名称', '识别号', '地址', '电话', '账户', '账号'] # Define the schema for entity extraction
ie = Taskflow('information_extraction', schema=schema, task_path='./model')
pprint(ie("单位:芒市四维有限公司 统一社会信用代码:915331035772611689 地址:云南法州市文说华区73号 电话:0692-8895660 开户行:中国工商银行限有限公司法市支行 账号:25102309201037948")) # Better print results using pprint
t2=time.time()
print(t2-t1)

在这里插入图片描述

注意事项:

  • ‘doccano’ 不是内部或外部命令,也不是可运行的程序或批处理文件:网上没有找到相关的原因,我费了半天劲发现可能是python版本的问题,用本地3.10安装doccano或者用3.10版本创建虚拟环境安装doccano会报上述问题,用3.9创建虚拟环境就可以
  • 报错如下:执行pip install protobuf==3.19.0解决,若还报错,pip install --upgrade pip
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:- Downgrade the protobuf package to 3.20.x or lower.- Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
  • 报错如下:执行pip install paddlenlp==2.5.2
[paddle]ModuleNotFoundError: No module named ‘paddle.nn.layer.layers
  • 如果第二次打开飞桨的项目环境报错,重新执行那三次更新操作即可

参考:

  • ModuleNotFoundError: No module named ‘paddle.nn.layer.layers‘
  • 解决:TypeError: Descriptors cannot not be created directly
  • 文本标注工具doccano的安装与使用
  • 通用信息抽取 UIE(Universal Information Extraction)
  • PaddleNLP信息抽取技术重磅升级!开放域信息抽取来了!三行代码用起来~
  • Windows 下的 PIP 安装
  • 发票抬头信息抽取之环境搭建 - 基于飞浆开源项目
  • 发票抬头信息抽取之数据标准+模型训练 - 基于飞浆开源项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数通HCIE考试分享:考前心态很重要,心情放松好过一次练习

誉天数通HCIE晚班火热预约中!真机实验考前辅导备考资料,名师保驾护航,助你稳定通关!识别二维码,即可获取免费试听名额! 备考阶段 我是去年10月底完成了笔试考试,在笔试之前就将PY的课程过了一遍…

力扣算法-回溯

递归 104.二叉树的最大深度 回溯 17.电话号码的字母组合 ①子集型回溯 78.子集 (1)选不选 (2)选哪个 131.分割回文串 (1593.拆分字符串使唯一子字符串的数目最大 也可以用这个思路解:从结果角度,分割字符串) ②组合型回溯…

[leetcode] 55. 跳跃游戏

文章目录 题目描述解题方法模拟java代码复杂度分析 相似题目 题目描述 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 tr…

杀死那个名为360安全的软件

背景 2023年底,闲来没事想起了xjun师傅2021年发的procexp驱动利用帖子时在群里讨论的,通过procexp驱动突破PPL后注入到csrss进程中,再通过csrss来结束那些个安全防护软件。于是在当时就有了如下成果: 这些弄完之后,觉…

冯诺依曼与进程【Linux】

文章目录 冯诺依曼体系结构(从硬件的角度描述)冯诺依曼体系结构(从软件的角度描述)操作系统(软件)理解管理系统调用和库函数进程查看进程的两种方式 通过系统调用获取进程的PID和PPID通过系统调用创建进程-…

C++ Primer是每位C++ coder心中的圣经吗?

首先,C Primer的作者是Stanley B. Lippman、Jos Lajoie和Barbara E. Moo。Stanley B. Lippman是C领域的知名专家,他在C标准委员会中担任过要职,对C语言的发展有深刻的理解。Jos Lajoie和Barbara E. Moo也都是C领域的资深专家,他们…

回归预测 | Matlab实现WOA-BP鲸鱼算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现WOA-BP鲸鱼算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现WOA-BP鲸鱼算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现WOA-BP鲸鱼算法优化BP神经网络多变量回归预测(完整源码…

各大厂都推出鸿蒙APP了,你就一定要学习一下鸿蒙APP测试了!

2023年8月,华为推出鸿蒙4.0,由于其广泛的用户基础和品牌传播力,在短短几个月的时间,使用鸿蒙4.0系统的设备就达到千万级别,并且在9月份发售Mate 6之后,还在装机量的增长更加迅猛。 基于此,11月…

AMD新一代AI PC芯片惊艳登场!颠覆商业计算领域!

AMD发布新一代AI PC芯片 前言 就在北京时间4月17日,AMD正式面向商业计算领域推出新一代AI PC创新产品!他们宣布推出锐龙Pro 8040系列和AMD锐龙Pro 8000系列,扩展其商用移动和桌面AI个人电脑(PC)产品组合。 了解PRO 804…

【Vue3】setup语法糖的使用

文章目录 setup简介使用vite-plugin-vue-setup-extend插件 指定组件名字 setup简介 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖 相比较普通的<script> ,它有以下优势&#xff1a; 更少的样板内容&#xff0c;更简洁的代码。能够使用纯…

基于SpringBoot的“人职匹配推荐系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“人职匹配推荐系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 网上商城购物系统结构图 管理员登录界面图 个…

flask 应用程序

flask 程序示例 创建 hello.py 文件&#xff1a; # 导入 Flask 模块。Flask 类的一个对象是 wsgi 应用程序。 from flask import Flask# 创建app对象, Flask构造函数将当前模块的名称(__name__)作为参数。 app Flask(__name__)# route() 函数是一个装饰器&#xff0c;它告诉应…

【UE5.1】使用MySQL and MariaDB Integration插件——(3)表格形式显示数据

在上一篇&#xff08;【UE5.1】使用MySQL and MariaDB Integration插件——&#xff08;2&#xff09;查询&#xff09;基础上继续实现以表格形式显示查询到的数据的功能 效果 步骤 1. 在“WBP_Query”中将多行文本框替换未网格面板控件&#xff0c;该控件可以用表格形式布局…

vr兽医设备操作模拟仿真教学平台提升教学效果

在兽医教育的传统领域中&#xff0c;动物诊疗一直是一项不可或缺的实践环节。然而&#xff0c;传统的解剖教学方式受限于动物数量、种类以及安全隐患&#xff0c;无法充分满足学生的学习需求。随着VR虚拟仿真技术的不断精进&#xff0c;VR动物诊疗仿真实训系统为兽医教育带来了…

【训练营】DateWhale——动手学大模型应用开发(更新中)

文章目录 写在前面大模型简介LLM简介RAG简介LangChain开发框架开发LLM应用的整体流程 写在前面 大模型时代从GPT爆发开始到现在已有一年多了&#xff0c;深度学习发展之快无法想象&#xff0c;一味感叹技术发展速度超越个人学习速度是没用的&#xff0c;倒不如花点时间参加一些…

Linux之 USB驱动框架-USB总线核心和主控驱动(4)

一、USB设备描述符 一个USB设备描述符中可以有多个配置描述符&#xff0c;即USB设备可以有多种配置&#xff1b;一个配置描述符中可以有多个接口描述符&#xff0c;即USB设备可以支持多种功能&#xff08;接口&#xff09;&#xff1b;一个接口描述符中可以有多个端点描述符。 …

5个常见的前端手写功能:New、call apply bind、防抖和节流、instanceof、ajax

实现New 首先创建一个新的空对象设置原型&#xff0c;将对象的原型设置为函数的prototype对象让函数的this指向这个对象&#xff0c;执行构造函数的代码判断函数的返回值类型&#xff0c;如果是值类型&#xff0c;返回创建的对象。如果是引用类型&#xff0c;就返回这个引用类…

网站创建的流程是什么

网站的创建过程包括几个主要的步骤&#xff0c;其中涉及到一系列的决策和实践操作。下面我将详细介绍网站创建的流程&#xff0c;帮助读者了解如何创建一个成功的网站。 第一步&#xff1a;确定网站目标和功能 在创建网站之前&#xff0c;你需要明确自己网站的目标和功能。是用…

【剪映专业版】07素材导入与界面认识

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 点击开始创作后生成新的草稿 单击更改草稿名称 导入数量没有限制 根据选中素材创建文件夹&#xff1a;选中素材&#xff0c;单击右键 智能镜头分割&#xff1a;选中素材&#xff0c;单击右键&#xff0c;用于不同场景…

【Git】安装 Git

文章目录 1. CentOS 下安装2. Ubuntu 下安装 Git 是开放源代码的代码托管工具&#xff0c;最早是在 Linux 下开发的。开始也只能应用于 Linux 平台&#xff0c;后面慢慢的被移植到 Windows 下。现在&#xff0c;Git 可以在 Linux、Unix、Mac 和 Windows 这几大平台上正常运行了…