飞桨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 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 安装
  • 发票抬头信息抽取之环境搭建 - 基于飞浆开源项目
  • 发票抬头信息抽取之数据标准+模型训练 - 基于飞浆开源项目

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯真题 字串简写 前缀和

👨‍🏫 Acwing 字串简写 输入 4 abababdb a b输出 6💖 前缀和 import java.util.Scanner;public class Main {static int N (int) 5e5 10;static int[] l new int[N];// l[i] 表示 i 以及 i 左边包含多少个字符 apublic static void …

CesiumJS内置三维数字地球,你都不知道效果有多炫酷。

CesiumJS是一个开源的JavaScript库,用于在Web浏览器中创建高性能的3D地球和地理空间应用程序。它提供了强大的工具和API,使开发者能够构建具有交互性、可视化和地理空间分析功能的应用。 以下是CesiumJS的一些主要特点和功能: 3D地球可视化&…

基于RF的时间序列预测模型matlab代码

整理了基于RF的时间序列预测模型matlab代码, 包含数据集。采用了四个评价指标R2、MAE、MBE、MAPE对模型.效果优异 训练集数据的R2为:0.99656 测试集数据的R2为:0.94944 训练集数据的MAE为:0.0042509 测试集数据的MAE为&#x…

HarmonyOS 开发-Worker子线程中解压文件

介绍 本示例介绍在Worker 子线程使用ohos.zlib 提供的zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作,解压成功后将解压路径返回主线程,获取解压文件列表。 效果图预览 使用说明 点击解压按钮,解压test.zip文件,显…

基于Web的农产品销售管理系统

1 课题简介 1.1 选题背景 自宇宙出现盘古开天依赖,万事万物就在不断的进步更新淘汰弱者,现在到了如今人们进入了互联网上帝世纪,越来越多的事物和工作都可以在网上用数据流代替和执行,不必再像以前一样亲自出面和出门做事&#…

第9章 文件和内容管理

思维导图 9.1 引言 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理。它的重点在于保持文件和其他非结构化或半结构化信息的完整性,并使这些信息能够被访问。文件和非结构化内容也应是安全且高质量的。 确保文件和内容…

0基础入门Playwright框架,赶紧上车!

自从2023年底playwright框架火起来之后,很多小伙伴都会来咨询我们这个框架相关内容,甚至问我们什么时候出这个课程。 这不,新课程终于在大家的千呼万唤中出来啦!具体的课程大纲和试听视频! Web自动化测试项目实战(Pyte…

【JavaWeb】JSP实现数据传递与保存

目录 JSP内置对象requestrequest对象的常用方法get与post区别 问题解决表单提交时中文乱码的问题 responseresponse对象的常用方法 思考请求的转发示例 转发与重定向的区别会话session对象常用方法session与窗口的关系示例:使用session实现访问控制 思考小结思考JSP…

AI大模型日报#0409:Llama 3下周发布、特斯联20亿融资、Karpathy新项目

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。标题: 120亿Stable LM 2上线即开源!2万亿token训练,碾压Llama 2 70B 摘要: Stable LM 2 12B参数版本发布&#x…

第一次在Vue里使用Swiper插件轮播先看这里,报错!!!(不同swiper在页面引入时方式不同,步步扫雷ing)

现在用新插件前有了个概念,一定要看它官方文档,因为不你项目版本与你想用的插件版本间是有规定的,不应该直接看别人已经实现就跟着哐哐下载然后不停报错。。。 比如Swiper版本问题的大小写问题: 3.x 版本的 ---- 引入模块时使用小…

爬虫 selenium

爬虫 selenium 【一】介绍 【1】说明 Selenium是一款广泛应用于Web应用程序测试的自动化测试框架 它可以模拟用户再浏览器上的行为对Web应用进行自动化测试 主要作用: 浏览器控制:启动、切换、关闭不同浏览器元素定位于操作:通过CSS选择器…

C++笔记(函数重载)

目录 引入: 定义: 易错案例: 引入: 对于实现相似功能的函数,在命名时,我们常会出现命名重复的问题。对于C语言,编译器遇到这种命名重复的情况,会进行报错。而我们的C为了更方便程…

mineadmin 设置时区

由于不同环境下,会造成时区不一致问题 在/bin/hyperf.php 文件里,设置 date_default_timezone_set(Asia/Shanghai);

【AIGC】训练数据入库(Milvus)

之前的文章有写如何获取数据、如何补充数据,也有说如何对数据进行清洗、如何使用结构化数据进行训练。但好像没有说如何将训练数据“入库”。这里说的入库不是指 MySQL 数据库,而是指向量检索库 Milvus。 众所周知,人工智能多用向量数据进行…

Kubernetes(k8s)监控与报警(qq邮箱+钉钉):Prometheus + Grafana + Alertmanager(超详细)

Kubernetes(k8s)监控与报警(qq邮箱钉钉):Prometheus Grafana Alertmanager(超详细) 1、部署环境2、基本概念简介2.1、Prometheus简介2.2、Grafana简介2.3、Alertmanager简介2.4、Prometheus …

【leetcode】动态规划::前缀和(二)

标题:【leetcode】前缀和(二) 水墨不写bug 正文开始: (一) 和为K的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续…

C#开发 之 解决win11缩放导致的字体模糊问题

现在我们的笔记本电脑分辨率很高,基本上能达到1920*1080以上,目前普遍使用的显示器都已经达到了2K到4K的级别。 但是因为我们的笔记本的屏幕小,在非常高的分辨率下,一切看着都很小,尤其是文字,根本看不清&…

【Linux基础IO】

【Linux基础IO】 C文件接口回顾test.c 写文件test.c读文件> 和 >> 理解文件stdin & stdout & stderr标准输入(stdin)标准输出(stdout)标准错误输出(stderr) 系统文件I/O接口介绍openpathn…

什么是redis? 如何在SpringBoot中集成和操作redis?

喜欢就点击上方关注我们吧! 本篇将带你快速了解什么是redis,以及学会如何在SpringBoot工程下集成和操作redis数据库。 一、概述 1、定义 Redis是一个基于内存的key-value 结构数据库。 1)特点: 1、基于内存存储,读写性…

docker pull镜像的时候指定arm平台

指定arm平台 x86平台下载arm平台的镜像包 以mysql镜像为例 docker pull --platform linux/arm64 mysqldocker images查看镜像信息 要查看Docker镜像的信息,可以使用docker inspect命令。这个命令会返回镜像的详细信息,包括其元数据和配置。 docker i…