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

server/2024/10/17 14:33:29/

使用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.ppmy.cn/server/132502.html

相关文章

Java设计模式梳理:行为型模式(策略,观察者等)

行为型模式 行为型模式关注的是各个类之间的相互作用,将职责划分清楚,使得我们的代码更加地清晰。 策略模式 策略模式太常用了,所以把它放到最前面进行介绍。它比较简单,我就不废话,直接用代码说事吧。 下面设计的…

用示波器观测RC一阶电路零输入响应是否激励必须是方波信号

概述 RC一阶电路是一种简单但非常重要的电路,广泛应用于滤波、信号处理和时间常数分析等领域。在研究RC电路的动态特性时,零输入响应(Natural Response)是一项关键内容。本文将详细解析用示波器观测RC一阶电路零输入响应时&#…

Spring Boot助力B2B医疗平台病历数据交换

第1章绪论 计算机已经从科研院所,大中型企业,走进了平常百姓家,Internet遍及世界各地,在网上能够用计算机进行文字草拟、修改、打印清样、文件登陆、检索、综合统计、分类、数据库管理等,用科学的方法将无序的信息进行…

不用搭建服务?MemFire Cloud让开发更简单

不用搭建服务?MemFire Cloud让开发更简单 在当今的开发世界里,想要开发一个功能齐全的应用,往往意味着需要搭建复杂的后端、开发API接口、处理认证授权、管理数据库……这些琐碎的工作让很多开发者头疼不已,尤其是独立开发者或者…

菜鸟笔记006 截图识别文字插件 textOCR

随手可得的截图识别文字插件 textOCR,识别出来的文字可直接输入到illustrator的当前文档中: 执行条件 1、需截图软件支持,推荐笔记截图工具 2、截好图片直接拖入面板即可完成识别 ****后期可完成实现在illustrator选择图片对象完成文字识别。…

经典困难难度算法题,利用优先队列其实很好解决

这道题在力扣官网上面是困难难度。但是假如利用好 C 的优先队列或者利用好大根堆和小根堆,​这道题的思路其实很简单。 题目描述: 题号:295 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位…

自定义注解和组件扫描在Spring Boot中动态注册Bean(一)

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 在Spring Boot中,自定义注解和组件扫描是两种强大的机制,它们允许开发者以声明性的方式动态注册Bean。这种方式不仅提高了代码的可读性和可维护性,还使得Spring Boot应用的…

Tailwind css系列教程(四)

高级应用 1、指令 tailwind:使用 Tailwind 指令将 Tailwind 的 base, components, utilities 插入到 CSS 中。 apply:使用 apply 将任何样式内联到您自己的自定义 CSS 中。 layer:使用 layer 指令告诉 Tailwind 属于一组自定义样式的 “块”…