使用DeepKE训练命名实体识别模型DEMO(官方DEMO)

使用DeepKE训练命名实体识别模型DEMO(官方DEMO)

说明:

  • 首次发表日期:2024-10-10
  • DeepKE资源:
    • 文档: https://www.zjukg.org/DeepKE/
    • 网站: http://deepke.zjukg.cn/
    • cnschema: http://cnschema.openkg.cn/

如果需要,设置Github镜像

git config --system url."https://githubfast.com/".insteadOf https://github.com/如果要取消,则输入:
git config --system --unset url.https://githubfast.com/.insteadof

创建conda环境

conda create -n deepke python=3.8
conda activate deepke# 安装torch
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113# 使用阿里云镜像安装torch 1.11.0
# pip install https://mirrors.aliyun.com/pytorch-wheels/cu113/torch-1.11.0+cu113-cp38-cp38-linux_x86_64.whl https://mirrors.aliyun.com/pytorch-wheels/cu113/torchvision-0.12.0+cu113-cp38-cp38-linux_x86_64.whl https://mirrors.aliyun.com/pytorch-wheels/cu113/torchaudio-0.11.0+cu113-cp38-cp38-linux_x86_64.whl -i https://mirrors.aliyun.com/pypi/simple/

安装DeepKE:

git clone https://github.com/zjunlp/DeepKE.git
cd DeepKEpip install pip==24.0pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
python setup.py install
python setup.py develop
pip install prettytable==2.4.0
pip install ipython==8.12.0

下载数据集

# apt-get install wget
cd example/ner/standard
wget 120.27.214.45/Data/ner/standard/data.tar.gz
tar -xzvf data.tar.gz

可以看到data文件夹下有:

  • train.txt: Training set
  • valid.txt : Validation set
  • test.txt: Test set

配置wandb

在 https://wandb.ai/ 上注册账号,并新建一个project,取一个名字,比如:deepke-ner-official-demo

打开 https://wandb.ai/authorize 获取 API key

运行 wandb init,输入刚获取的 API key 和创建的project

运行训练和预测

删除之前训练时保存的checkpoints和logs文件夹(如果有):

rm -r checkpoints/
rm -r logs/

lstmcrf

打开 example/ner/standard/run_lstmcrf.py, 确保wandb和yaml库有正常导入:

import wandb
import yaml

修改wandb的project名称:

if config['use_wandb']:wandb.init(project="deepke-ner-official-demo")

修改 example/ner/standard/conf/config.yaml 中的 use_wandbTrue

如果需要使用多个GPU训练,修改 example/ner/standard/conf/train.yaml 中的 use_multi_gpuTrue

开始训练:

python run_lstmcrf.py
>> total: 109870 loss: 27.181508426008552precision    recall  f1-score   supportB-LOC     0.8920    0.8426    0.8666      1951B-ORG     0.8170    0.7439    0.7787       984B-PER     0.8783    0.8167    0.8464       884I-LOC     0.8650    0.8264    0.8453      2581I-ORG     0.8483    0.8365    0.8424      3945I-PER     0.8860    0.8436    0.8643      1714O     0.9861    0.9912    0.9886     97811accuracy                         0.9732    109870macro avg     0.8818    0.8430    0.8618    109870
weighted avg     0.9727    0.9732    0.9729    109870

用于的预测文本保存在example/ner/standard/conf/predict.yaml中,修改为如下:

text: "“热水器等以旧换新,节省了2000多元。”10月3日,在湖北省襄阳市的一家购物广场,市民金煜轻触手机,下单、付款、登记。湖北着力推动大规模设备更新和消费品以旧换新。“力争到今年底,全省汽车报废更新、置换更新分别达到4.5万辆、12.5万辆,家电以旧换新170万套。”湖北省商务厅厅长龙小红介绍。"

运行预测:

python predict.py

NER结果:

[('湖', 'B-LOC'), ('北', 'I-LOC'), ('省', 'I-LOC'), ('襄', 'B-LOC'), ('阳', 'I-LOC'), ('市', 'I-LOC'), ('场', 'I-LOC'), ('煜', 'I-PER'), ('湖', 'B-ORG'), ('北', 'I-ORG'), ('省', 'I-ORG'), ('商', 'I-ORG'), ('务', 'I-ORG'), ('厅', 'I-ORG'), ('厅', 'I-ORG'), ('龙', 'B-PER'), ('小', 'I-PER'), ('红', 'I-PER')]

bert

修改 example/ner/standard/conf/config.yaml中的hydra/modelbert

bert的超参设置在 example/ner/standard/conf/hydra/model/bert.yaml,如有需要可以修改。

修改 example/ner/standard/conf/config.yaml 中的 use_wandbTrue

修改 example/ner/standard/run_bert.py 中的wandb的project名称:

    if cfg.use_wandb:wandb.init(project="deepke-ner-official-demo")

根据需要,修改example/ner/standard/conf/train.yaml中的train_batch_size,对于bert来说推荐不小于64

开始训练:

export HF_ENDPOINT=https://hf-mirror.com
python run_bert.py

w2ner

w2ner是一个新的SOTA模型。

基于W2NER (AAAI’22)的应对多种场景的实体识别方法 (详情请查阅论文Unified Named Entity Recognition as Word-Word Relation Classification).

命名实体识别 (NER) 涉及三种主要类型,包括平面、重叠(又名嵌套)和不连续的 NER,它们大多是单独研究的。最近,人们对统一 NER 越来越感兴趣, W2NER使用一个模型同时处理上述三项工作。

由于使用单卡GPU,修改example/ner/standard/w2ner/conf/train.yaml中的 device0

修改example/ner/standard/w2ner/conf/train.yaml中的data_dirdo_train

data_dir: "../data"
do_train: True

以便使用之前下载的数据集和开始训练。

运行训练:

python run.py

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

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

相关文章

云开发 | 微信小程序云开发无法获取数据库数据

1.我在我的云数据库中创建了一个数据表(即collection数据集)userList,并且存入了两条用户信息数据 2. 想要通过按钮触发事件拿取数据库中数据并且打印在控制台时,获取数据失败,控制台无输出 3. 初始化 | 在开始使用数据库 API 进…

“医者仁术”再进化,AI让乳腺癌筛查迎难而上

世卫组织最新数据显示,我国肿瘤疾病仍然呈上升趋势,肿瘤防控形势依然比较严峻。尤其是像乳腺癌等发病率较高的疾病,早诊断和早治疗意义重大,能够有效降低病死率。 另一方面,中国地域广阔且发展不平衡,各地…

Qt-界面优化盒子模型(71)

目录 描述 相关属性 使用 描述 盒子模型 例如下面房子模型 • Content 矩形区域: 存放控件内容.⽐如包含的⽂本/图标等. • Border 矩形区域: 控件的边框. • Padding 矩形区域: 内边距. 边框和内容之间的距离. • Margin 矩形区域: 外边距. 边框到控件 geometry 返回的矩形…

Qt5.14.2 安装详细教程(图文版)

Qt 是一个跨平台的 C 应用程序开发框架,主要用于开发图形用户界面(GUI)程序,但也支持非 GUI 程序的开发。Qt 提供了丰富的功能库和工具,使开发者能够在不同平台上编写、编译和运行应用程序,而无需修改代码。…

sql server中字符串类型的日期如何比较大小

SQL Server 计算两个时间相差 案例:计算 标准结束时间 和 实际结束时间 之间的秒数差,并根据这个差值判断是否超时。 假设 test 表中有以下数据: 标准结束时间实际结束时间2024-10-12 10:00:002024-10-12 10:30:002024-10-12 11:00:00202…

【分布式微服务云原生】掌握Java分布式事务:2PC、3PC、TCC与Seata全解析

目录 掌握Java分布式事务:2PC、3PC、TCC与Seata全解析一、分布式事务的由来二、两阶段提交2PC1. **准备阶段(投票阶段)**2. **提交阶段**3.**优缺点**优点:缺点: 三、三阶段提交3PC1. 准备阶段(Prepare Phase)2. 预提交…

Flutter路由管理(二)

路由(Route)在移动开发中通常是指页面(Page),这与Web开发的意义是相同的,Route在Andriod中通常指一个Activaty,在IOS中指一个ViewController,路由入栈(push)用…

原生小程序开发组件|地图组件汇总

map 基础库 2.0.12 开始支持, 低版本需做兼容处理。 依赖 MapKit 插件, 插件版本 > 2.2.2。 Tuya MiniApp Tools 上是通过 WebView 模拟的与真机存在差异,请以真机效果为主。 地图。相关 API:ty.createMapContext。这是基于异层渲染的原生组件, 请注意…

el-date-picker 自定义指令,输入数字自动转换显示yyyy-mm-dd格式

el-date-picker 自定义指令,输入数字显示yyyy-mm-dd格式 在main.js引入自定义指令direct.jsdirect.js公共部分时间日期控件,表格内编辑时间控件可用 - (年-月-日)时间范围控件 - (年-月-日)日期转换主要正则年-月-日/年-月-日 时:分/年-月-日 时:分:秒年…

Element-plus el-form、el-dialog 数据回显同时用时,重置失效问题

问题 当第一次打开网页并点击“编辑”按钮时,虽然对话框变量变为 true 使对话框可见,但同步代码会将 formData 对象的属性设置为默认值。由于 Vue 的异步更新机制,DOM 实际上还未更新,因此表单组件内绑定了这些有值的初始数据。这…

【病毒分析】DevicData家族扩散:全球企业和机构成为勒索病毒头号攻击目标!

1.背景 本文聚焦于勒索病毒家族 DevicData 的最新变种,命名为 .DevicData-P a2a9e9c勒索病毒。自2023年1月首次被发现以来,DevicData 家族一直对多个高价值目标展开攻击,包括企业用户、医疗机构和教育机构。这些目标通常持有大量敏感数据&a…

初始爬虫13(js逆向)

为了解决网页端的动态加载,加密设置等,所以需要js逆向操作。 JavaScript逆向可以分为三大部分:寻找入口,调试分析和模拟执行。 1.chrome在爬虫中的作用 1.1preserve log的使用 默认情况下,页面发生跳转之后&#xf…

已发布金融行业标准目录(截止2024年3月)

已发布金融行业标准目录2024年3月序号行业标准编号标准名称

MySQL学习(五):数据类型与约束

MySQL学习(五):数据类型与约束 文章目录 MySQL学习(五):数据类型与约束1. 数据类型与属性1.1 所有的数据类型1.2 所有属性 2. 数据类型详解2.1 整型2.2 浮点类型2.3 定点数类型2.4 位类型2.5 日期与时间2.6…

Linux环境基础开发工具的使用

vim编辑器的基本操作: 在linux环境下输入vim 文件名就可以进入编辑模式. 上述四种模式必须退到命令模式才能进行下一个模式. 在编辑器中写完之后,输入ESC进入命令模式,然后再输入shift:进入低行模式并输入wq保存并退出. 在命令模式下的操作: 光标所在行:1.输入yy进行复制, 输…

golang语法

参考链接&#xff1a;https://www.runoob.com/go/ 创建变量 // 3种方法 var a int a : 10 // 类型推断 a : make() // 复合类型循环 // 3种循环 for i : 0; i < 10; i {// 循环体} // 传统for循环 for index, num : range nums {// 循环体} // nums是可迭代的复合类型…

ubuntu24 root用户修改密码 ubuntu新系统没有创建root用户

ubuntu 系统在虚拟机新建一个ubuntu24&#xff0c;但是在配置系统时候&#xff0c;并没有配置root密码&#xff0c;只是新增了一个自定义账号于密码&#xff0c;在创建好后&#xff0c;可以登录系统&#xff0c;设置root密码~ 1. ubuntu系统初始化后&#xff0c;登录自建账号 …

k8s介绍-搭建k8s

Kubernetes介绍&#xff0c;官网&#xff1a;Kubernetes 应用部署方式演变 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其他技术的参与 缺点&#xff1a;不能为应用程序定义资源使用边界&#xff0c…

【C++网络编程】(一)Linux平台下TCP客户/服务端程序

文章目录 Linux平台下TCP客户/服务端程序服务端客户端相关头文件介绍 Linux平台下TCP客户/服务端程序 图片来源&#xff1a;https://subingwen.cn/linux/socket/ 下面实现一个Linux平台下TCP客户/服务端程序&#xff1a;客户端向服务器发送&#xff1a;“你好&#xff0c;服务…

从零创建苹果App应用,不知道怎么申请证书的可以先去看我的上一篇文章

用大家自己的开发者账户&#xff0c;登录进入App Store Connect ,注册自己的应用 进入之后&#xff0c;点击增加 填写相关的信息 一切顺利的话&#xff0c;就可以来到这个页面