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

news2024/11/25 6:50:42

基准

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

步骤

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 Taskflow

schema = ['单位', '统一社会信用代码', '地址', '电话', '开户行', '账号'] # 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中
!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 Taskflow

schema = ['名称', '识别号', '地址', '电话', '账户', '账号'] # 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.coloradmin.cn/o/1582987.html

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

相关文章

QDateTimeEdit设置按钮宽度无效

在对QDateTimeEdit组件的小按钮用qss样式加图标的时候,发现设置的宽度无效,原因是spacing属性必须设置才行。

【MATLAB源码-第29期】基于matlab的MIMO,MISO,SIMO,SISO瑞利rayleigh信道容量对比。

操作环境: MATLAB 2022a 1、算法描述 1. SISO(单输入单输出): - SISO 是指在通信系统中,只有一个天线用于传输信号,也只有一个天线用于接收信号的情况。这是最简单的通信方式。 2. SIMO(单…

回归预测 | MATLAB实现BO-GRNN贝叶斯优化广义回归神经网络多输入单输出预测

回归预测 | MATLAB实现BO-GRNN贝叶斯优化广义回归神经网络多输入单输出预测 目录 回归预测 | MATLAB实现BO-GRNN贝叶斯优化广义回归神经网络多输入单输出预测预测效果基本介绍程序设计参考资料预测效果 基本介绍

C++奇迹之旅:探索类对象模型内存的存储猜想

文章目录 📝前言🌠 类的实例化🌉类对象模型 🌠 如何计算类对象的大小🌉类对象的存储方式猜想🌠猜想一:对象中包含类的各个成员🌉猜想二:代码只保存一份,在对象…

韩顺平Java | C24 MySQL数据库(下)

※多表查询 笛卡尔集:查询两个表,默认无条件情况下,取出第一张表中的每一条记录和第二张表的每一条记录进行组合,返回row1*row2条记录数,包含两张表的所有列 内连接 # 写出正确的过滤条件:多表查询条件不…

【linux】yum 和 vim

yum 和 vim 1. Linux 软件包管理器 yum1.1 什么是软件包1.2 查看软件包1.3 如何安装软件1.4 如何卸载软件1.5 关于 rzsz 2. Linux编辑器-vim使用2.1 vim的基本概念2.2 vim的基本操作2.3 vim命令模式命令集2.4 vim底行模式命令集2.5 vim操作总结补充:vim下批量化注释…

9. 软件登陆界面-2

窗口组件 1.组件的属性 组件的位置 组件的可视 2.组件的事件 窗口_创建完毕 窗口_托盘事件;带有参数的事件的使用方法。 3.组件的方法 置托盘图标 销毁() 编辑框组件 1.编辑框的属性 内容 是否允许多行 输入方式 密码遮盖字符…

单链表专题

文章目录 目录1. 链表的概念及结构2. 实现单链表2.1 链表的打印2.2 链表的尾插2.3 链表的头插2.4 链表的尾删2.5 链表的头删2.6 查找2.7 在指定位置之前插入数据2.8 在指定位置之后插入数据2.9 删除pos节点2.10 删除pos之后的节点2.11 销毁链表 3. 链表的分类 目录 链表的概念…

【Linux】初识Linux操作系统

目录 一、shell 二、Linux命令的分类 三、Linux命令的格式 四、编辑Linux命令行的辅助操作 五、查看命令使用说明的方法 六、基础命令 一、shell ●Linux系统中运行的一个特殊程序,位于用户与内核之间 ●作用:作为“翻译官”,接收用户…

基于Java+SpringBoot+Vue网络相册设计与实现(源码+文档+部署+讲解)

一.系统概述 网络相册设计与实现的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起…

C++ 类和对象(中篇)

类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情 况下,都会自动生成下面6个默认成员函数。 构造函数: 定义:构造函数是一个特殊的成员…

【PHP系统学习】——Laravel框架数据库的连接以及数据库的增删改查的详细教程

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

【招贤纳士】长期有效

【招贤纳士】长期有效,有意者联系 一、SLAM算法工程师工作内容:任职资格: 二、规划算法工程师工作内容:任职资格: 工作地点:深圳南山 公司行业:家用扫地机器人 待遇从优,有机器人比赛…

CAD导入GIS平台常见问题大全

1.CAD导入图新地球报【坐标超出范围】、【导入失败】 一般是投影不对,多数是中央经线选错了,或者是没注意是否有带号 这种情况,先打开CAD软件,通过id命令看一下数据的坐标,如下图 看到坐标是这样式的,X达…

达梦数据库审计相关参数

达梦数据库审计相关参数 基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例1 查看审计相关的参数 查看AUD相关的参数。 1.1 查看dm.ini配置文件。 在dm.ini配置文…

gurobi不同版本切换

每年年底,gurobi都会推出新版本。新版本是大的迭代更新,求解问题的效率和精度都会提升。官方人员一般会建议我们安装最新的版本,此外,写论文审稿专家也会建议我们使用较新的版本。 从我们现装的版本切换到新版本。我以往的做法是…

【CVE-2023-38831】进行钓鱼攻击的研究

本文仅仅是对相关漏洞利用的学习记录,请各位合法合规食用! WinRAR是一款文件压缩器,该产品支持RAR、ZIP等格式文件的压缩和解压等。WinRAR在处理压缩包内同名的文件与文件夹时代码执行漏洞,攻击者构建由恶意文件与非恶意文件构成的特制压缩包文件,诱导受…

【负载均衡——一致性哈希算法】

1.一致性哈希是什么 一致性哈希算法就很好地解决了分布式系统在扩容或者缩容时,发生过多的数据迁移的问题。 一致哈希算法也用了取模运算,但与哈希算法不同的是,哈希算法是对节点的数量进行取模运算,而一致哈希算法是对 2^32 进…

吴恩达机器学习理论基础—决策树模型

吴恩达机器学习理论基础—决策树模型 决策树模型(Decision Trees) 采用猫狗分类的数据集,同时拥有三个基本的特征(输入)作为模型建立时使用的数据集。 将构造出来的决策树,分为了决策结点和叶子节点&#…

【C++入门】内联函数、auto与基于范围的for循环

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…