模型微调的预处理

news2024/10/5 18:40:27

一.简历文本标注数据的准备

目标:把原始数据集转换为PaddleNLP支持的文本/文档抽取标注格式,为后续的模型微调做好准备。

工具:Label Studio

使用手册:

applications/information_extraction/label_studio_text.md · PaddlePaddle/PaddleNLP - Gitee.comicon-default.png?t=N3I4https://gitee.com/paddlepaddle/PaddleNLP/blob/develop/applications/information_extraction/label_studio_text.mdLabel Studio是一个开源的数据标注工具,用于创建、管理和维护各种类型的机器学习数据集。它提供了一个基于Web的用户界面,可以让用户轻松地创建自定义的数据标注任务,并邀请其他用户来共同完成标注工作。Label Studio支持多种数据类型和标注类型,包括文本、图像、音频、视频和其他自定义数据类型。

环境配置参看:

简历信息提取(三):文本抽取的UIE格式转换与微调训练 - 飞桨AI Studio (baidu.com)icon-default.png?t=N3I4https://aistudio.baidu.com/aistudio/projectdetail/5418951?channelType=0&channel=0数据集的准备:

1.数据导入

Label Studio在NER任务中只支持txt文档导入,但是简历都是word文件,所以我们的目的是把多word中的简历内容存入一个txt文件中,每行是一个简历的内容。

首先研究如何解析多个简历文件:

可以使用glob模块来获取指定目录下的所有符合特定条件的文件名,然后在for循环中遍历这些文件,并对每个文件执行相同的解析操作。下面是一个示例代码,可以实现这个功能:

import glob
import os

# 获取指定目录下所有的Word文件名
dir_path = 'path/to/directory'
file_pattern = '*.docx'  # 或者是 '*.doc',具体根据您的文件类型来定
file_names = glob.glob(os.path.join(dir_path, file_pattern))

# 循环遍历每个Word文件,执行相同的解析操作
for file_name in file_names:
    # 执行解析操作,例如使用python-docx库来读取Word文件
    # ...

根据这段代码改写内容提取代码:

dir_path = '../ResumeFiles/resume'   //存放简历文件的文件夹的相对路径
file_pattern = '*.docx'  # 或者是 '*.doc',具体根据您的文件类型来定
file_names = glob.glob(os.path.join(dir_path, file_pattern))

for file_name in file_names:
    print("---------------------“简历{}”------------------------".format(file_name))
    document = ZipFile(file_name)
    xml = document.read("word/document.xml")
    wordObj = BeautifulSoup(xml.decode("utf-8"))
    texts = wordObj.findAll("w:t")
    paragraphs_text = ""
    for text in texts:
        # print(text.text)
        paragraphs_text += text.text
    print(ie(paragraphs_text))    //ie函数的功能是将文本进行信息提取,然后返回提取结果

打印结果:

[2023-05-11 17:54:30,441] [    INFO] - We are using <class 'paddlenlp.transformers.ernie.tokenizer.ErnieTokenizer'> to load 'C:\Users\ysy2001 0615\.paddlenlp\taskflow\information_extraction\uie-base'.
---------------------“简历../ResumeFiles/resume\1.docx”------------------------
[{'姓名': [{'text': '张吉惟', 'start': 0, 'end': 3, 'probability': 0.9939343973137511}], '出生日期': [{'text': '1998.11', 'start': 51, 'end': 58, 'probability': 0.9982788171921086}]}]
---------------------“简历../ResumeFiles/resume\2.docx”------------------------
[{'姓名': [{'text': '林国瑞', 'start': 402, 'end': 405, 'probability': 0.9860693449614004}], '出生日期': [{'text': '1990.2.8', 'start': 1101, 'end': 1109, 'probability': 0.9969562203449982}], '电话': [{'text': '138 3108 8888', 'start': 985, 'end': 998, 'probability': 0.40060286240933607}]}]
---------------------“简历../ResumeFiles/resume\3.docx”------------------------
[{'姓名': [{'text': '林玟书', 'start': 0, 'end': 3, 'probability': 0.9931329291108639}], '出生日期': [{'text': '1996.05', 'start': 18, 'end': 25, 'probability': 0.9974436452829565}], '电话': [{'text': '13801138023', 'start': 43, 'end': 54, 'probability': 0.9825973998539936}]}]
---------------------“简历../ResumeFiles/resume\4.docx”------------------------
[{'姓名': [{'text': '林雅南', 'start': 0, 'end': 3, 'probability': 0.9905885262895744}, {'text': '伊淼', 'start': 2026, 'end': 2028, 'probability': 0.8292328175251846}, {'text': '罗嘉良', 'start': 2889, 'end': 2892, 'probability': 0.7978081125050949}, {'text': '罗嘉良', 'start': 3220, 'end': 3223, 'probability': 0.9071803656674007}, {'text': '吕良伟', 'start': 3740, 'end': 3743, 'probability': 0.7161086518860031}, {'text': '罗嘉良', 'start': 3818, 'end': 3821, 'probability': 0.42471927022469913}, {'text': '罗嘉良', 'start': 4134, 'end': 4137, 'probability': 0.303645922465833}, {'text': '吕良伟', 'start': 4056, 'end': 4059, 'probability': 0.9645008868973619}], '出生日期': [{'text': '1996.05', 'start': 41, 'end': 48, 'probability': 0.9984617729245855}], '电话': [{'text': '13801138823', 'start': 51, 'end': 62, 'probability': 0.9902135906254692}]}]
---------------------“简历../ResumeFiles/resume\5.docx”------------------------
[{'姓名': [{'text': '江奕云', 'start': 112, 'end': 115, 'probability': 0.9881768328965066}, {'text': '罗嘉良', 'start': 2947, 'end': 2950, 'probability': 0.7255947350980705}, {'text': '罗嘉良', 'start': 3272, 'end': 3275, 'probability': 0.887640133829251}], '出生日期': [{'text': '1996.05', 'start': 3, 'end': 10, 'probability': 0.9960509002566198}], '电话': [{'text': '13812138123', 'start': 25, 'end': 36, 'probability': 0.9519620354312615}]}]

Process finished with exit code 0

上述代码可以实现抽取多文件内容打印输出。

下面将其存入一个txt文件并实现分行:

  with open('../ResumeFiles/resume/sample.txt', 'a', encoding='utf-8') as f:
        paragraphs_text = paragraphs_text + "\n"
        f.write(paragraphs_text)

使用Python内置的open()函数创建一个新的文本文件对象sample,并将paragraphs_text中的所有字符串使用'\n'作为分隔符进行连接并写入到sample.txt这个文件中。

然后,使用'a '模式打开这个输出文件,并设置编码格式为utf-8

注意:

a模式是append,代表追加的意思。  w模式是write,如果设置成w模式,会发生覆盖,最后文件里只有最后一条简历的内容。

需要注意的是,使用with语句打开文件可以确保在文件操作完成后自动关闭文件,从而避免了资源泄漏和其他错误。

小插曲:

在写代码的过程中,误将  paragraphs_text = paragraphs_text + "\n"写成了:

  paragraphs_text += paragraphs_text + "\n"

结果就是程序不报错,没有任何输出,计算机内存占满,电脑风扇运转声音很大,页面的一些普通操作都会发生卡顿。

强制结束后,报出错误:

Traceback (most recent call last):
File "D:\pycharm\5.4\recognition_model\extraction.py", line 25, in <module>
paragraphs_text += text.text
MemoryError

MemoryError,内存错误。

Python尝试使用的内存超出了系统可用内存的限制。这条语句会将文本内容累加到一个字符串变量paragraphs_text中,在处理大量文本时,这个变量占用了过多的内存。

错误改正之后,运行程序,会在../ResumeFiles/resume下生成一个sample.txt文件:

 文件内容:

 已经实现把多文件转换成单txt文件,一行就是一份简历的目的。

2023.5.11

未完待续。。。

 

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

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

相关文章

ai原创文章生成器-原创文章生成的软件

AI原创文章生成器——让你轻松批量生成高质量文章 随着内容创作的需求不断增加&#xff0c;人工撰写也难以满足快速高效的产出需求。在这种情况下&#xff0c;AI原创文章生成器应运而生&#xff0c;为人们创造了一种全新的自动化创作方式。下面我们就来了解一下这个神奇的工具…

无网络要求有网就能免费体验ChatGPT/GPT4

ChatGPT 是 OpenAI 公司开发的一款聊天机器人。它基于 OpenAI 的 GPT-3 语言模型,可以进行开域的自然语言聊天。主要特点如下: 开域聊天:ChatGPT可以聊任意话题,不需要预先定义话题范围或关键词,真正实现开放领域聊天。自然语言交互:ChatGPT可以理解并生成自然的语言表达,其对…

[答疑]事件和其影响的属性的对应是多样的

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 第五元素 2023-5-2 19:16 这题是不是缺少条件啊&#xff1f;“按钮默认isEnabled为true&#xff0c;被点击后&#xff0c;isEnabled变为false” 是通过什么渠道达到S4状态…

视频截取gif方法分享,利用gif制作工具在线制作动图

表情包作为聊天社交中调节氛围的工具&#xff0c;而动态的gif表情包更是深受大众的喜爱。那么&#xff0c;这种gif动态图片要怎么制作呢&#xff1f;其实&#xff0c;很简单不需要下载软件&#xff0c;小白也能轻松操作的。 一、什么工具能够制作gif动画呢&#xff1f; 使用G…

freeswitch两个DTMF转换接口的区别

概述 freeswitch支持三种模式的DTMF传输方式&#xff0c;分别时inband、INFO、2833。 在传统的PSTN网络中&#xff0c;所有的DTMF码都是inband模式&#xff0c;所以VOIP网络和PSTN网络对接中&#xff0c;需要将DTMF码做格式转换&#xff0c;通常是2833和inband之间的转换。 …

普乐蛙数字文旅动感5d电影设备5d动感电影体验馆

普乐蛙5d动感影院7d互动影院设备&#xff0c;它是通过视觉、听觉、触觉、嗅觉和味觉&#xff0c;在特定的环境中模拟形成一种特定的空间&#xff0c;营造出身临其境的效果。普乐蛙5d动感影院7d互动影院设备&#xff0c;它是根据人体工程学设计的座椅&#xff0c;让观众坐在座椅…

【iOS】—— 实现WebSocket发送消息(SocketRocket第三方库的使用和解析)

文章目录 WebSocketWebSocket特点 SocketRocket导入头文件设置代理SRWebSocket的初始化和建立连接SRWebSocketDelegate 代理方法实现加上简单UI实现两个用户之间简单通信浅看了一点点源码&#xff08;理解的不深&#xff09; 偶然之间了解到了利用WebSocket实现后端和前端的相互…

力扣刷题19天

106.从中序与后序遍历序列构造二又树(1、在中序、前序和后序&#xff0c;每轮取得时候数量都一样. 2、必须要有中序才能推测出来) 这道题下面是前提&#xff1a; 如果没有这个前提&#xff0c;会出现下面情况(前序遍历会变成新的树)&#xff1a; 运行代码&#xff1a; class S…

MySQL简介与基本的select语句

1.SQL的分类 DDL(Data Definition Languages、数据定义语言)&#xff0c;这些语句定义了不同的数据库、表、视图、索引等数据库对象&#xff0c;还可以用来创建、删除、修改数据库和数据库表的结构. 主要的语句关键字包括 CREATE、DROP、ALTER等。 DML(Data Manipulation Lan…

CSS3 的其他特性(了解)

目录 1.CSS3滤镜filter&#xff1a; 2.CSS3 calc函数 3.CSS3 过度&#xff08;重点&#xff09; 4.进度条案例 5.侠义的HTML5 CSS3 1.CSS3滤镜filter&#xff1a; filter CSS属性及那个模糊或颜色偏移等图形效果应用于元素。 filter: 函数()&#xff1b; 例如&#xff1a;…

端子排电压继电器 动作时间短 35mm卡槽安装 JY-7GA/2 80-320VAC

JY-7GA/2端子排电压继电器品牌:JOSEF约瑟名称:端子排电压继电器型号:JY-7GA/2电压整定范围:60200VAC/90300VDC功率消耗:&#xff1c;3W触点容量:250V5A返回系数:过压0.920.96/欠压1.041.08 系列型号&#xff1a; JY-7GA/DK/220端子排电压继电器&#xff1b; JY-7GB/DK/220端…

sqoop将hive中的数据导入MySQL不能正常显示中文——已解决

问题&#xff1a; 原因&#xff1a; 结果查看 问题&#xff1a; 在做练习利用sqoop工具将hive中的表导入到MySQL之后&#xff0c;在MySQL查看中文部分不能正常显示 输入sqoop执行语句 sqoop export -connect "jdbc:mysql://HadoopMaster:3306/hive_to_mysql?useUnicode…

要不要提前去实习?

大家好&#xff0c;我是帅地。 秋招结束&#xff0c;很多人在纠结要不要提前去公司实习&#xff0c;最近也有一些帅友问了这个问题 说说我去年在腾讯实习的经历给你做个参考吧。 入职前的学习 20年初那会&#xff0c;还是蛮激动&#xff0c;之前我从来没有去打过工&#xff…

如何用Xcode安装ipa

Xcode安装ipa iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store&#xff01;​ 下面进行步骤介绍&#xff01;​ 利用Appuploader这个软件&#xff0c;可以在Windows、Linux或Mac系统中申请ios和上传IPA到App Store Connect。​ 非常的方便&#xff0c;没有…

08-01 分布式系统理论

分布式一致性和CAP理论 C&#xff08;一致性&#xff09;&#xff1a;在分布式环境中&#xff0c;一致性是指数据在多个副本之间能否保持一致的特性A&#xff08;可用性&#xff09;&#xff1a;系统提供的服务必须一直处于可用的状态&#xff0c;对于用户的每一个操作请求总是…

butter滤波器

文章目录 什么是巴特沃斯滤波器&#xff1f;滤波器的阶数的含义matlab中的butterscipy.signal butter 中有哪些参数&#xff0c;各参数分别是什么含义&#xff1f; 本节围绕以下问题展开 butter 是什么&#xff1f;滤波器的阶数是什么意思&#xff1f;matlab中的butter参数含义…

00后工资太低想转行?选择云计算如何

00后已经成为目前从业最年轻的群体&#xff0c;有活力也需求明确&#xff0c;搞钱已经成为上班最核心的目的。但也有一波比较迷茫的00后&#xff0c;比如原专业学得不好&#xff0c;没有对口就业、工作内容不喜欢、工资太低养不活自己等等。而工资太低也是大部分00后想转行的主…

Linux 服务器设置 jar包开机自启动

一、新建jar包启动sh文件 新建startup.sh脚本文件&#xff0c;启动项目jar包 nohup java -jar test.jar >/dev/null 2>&1 & 二、设置自动启动命令 1.进入rc.d目录 执行cd /etc/rc.d 命令&#xff0c;进入rc.d目录 如图所示&#xff08;示例&#xff09;&…

如何将参考文献格式改成目标期刊要求的格式?

最近在改投期刊&#xff0c;所以要对参考文献的格式进行修改&#xff0c;记录一下修改过程中遇到的问题和解决方法&#xff0c;希望对小伙伴们有所帮助&#xff01; (1)问题&#xff1a;不知道目标期刊的参考文献格式是什么怎么办&#xff1f; (2)解决&#xff1a;下载目标期刊…

论文解读:DeepZ:一种用于Z-DNA预测的深度学习方法

标题 DeepZ: A Deep Learning Approach for Z-DNA Prediction. DOI 10.1007/978-1-0716-3084-6_15 期刊 Methods in molecular biology 作者 Nazar Beknazarov; Maria Poptsova 出版日期 2023-01-01 Github:https://github.com/Nazar1997/Sparse-vector 网址 https://doi…