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

说明:

如果需要,设置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 DeepKE pip install pip==24.0 pip 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.181508426008552
precision recall f1-score support B-LOC 0.8920 0.8426 0.8666 1951
B-ORG 0.8170 0.7439 0.7787 984
B-PER 0.8783 0.8167 0.8464 884
I-LOC 0.8650 0.8264 0.8453 2581
I-ORG 0.8483 0.8365 0.8424 3945
I-PER 0.8860 0.8436 0.8643 1714
O 0.9861 0.9912 0.9886 97811 accuracy 0.9732 109870
macro 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

使用DeepKE训练命名实体识别模型DEMO(官方DEMO)的更多相关文章

  1. 使用modelarts部署bert命名实体识别模型

    模型部署介绍 当我们通过深度学习完成模型训练后,有时希望能将模型落地于生产,能开发API接口被终端调用,这就涉及了模型的部署工作.Modelarts支持对tensorflow,mxnet,pytorc ...

  2. 通俗理解BiLSTM-CRF命名实体识别模型中的CRF层

    虽然网上的文章对BiLSTM-CRF模型介绍的文章有很多,但是一般对CRF层的解读比较少. 于是决定,写一系列专门用来解读BiLSTM-CRF模型中的CRF层的文章. 我是用英文写的,发表在了gith ...

  3. 基于BERT预训练的中文命名实体识别TensorFlow实现

    BERT-BiLSMT-CRF-NERTensorflow solution of NER task Using BiLSTM-CRF model with Google BERT Fine-tuni ...

  4. 『深度应用』NLP命名实体识别(NER)开源实战教程

    近几年来,基于神经网络的深度学习方法在计算机视觉.语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展.在NLP的关键性基础任务—命名实体识别(Named Entity Recogni ...

  5. 抛弃模板,一种Prompt Learning用于命名实体识别任务的新范式

    原创作者 | 王翔 论文名称: Template-free Prompt Tuning for Few-shot NER 文献链接: https://arxiv.org/abs/2109.13532 ...

  6. 命名实体识别,使用pyltp提取文本中的地址

    首先安装pyltp pytlp项目首页 单例类(第一次调用时加载模型) class Singleton(object): def __new__(cls, *args, **kwargs): if n ...

  7. 使用哈工大LTP进行文本命名实体识别并保存到txt

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/broccoli2/article/det ...

  8. DL4NLP —— 序列标注:BiLSTM-CRF模型做基于字的中文命名实体识别

    三个月之前 NLP 课程结课,我们做的是命名实体识别的实验.在MSRA的简体中文NER语料(我是从这里下载的,非官方出品,可能不是SIGHAN 2006 Bakeoff-3评测所使用的原版语料)上训练 ...

  9. 零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码)

    自己也是一个初学者,主要是总结一下最近的学习,大佬见笑. 中文分词说到命名实体抽取,先要了解一下基于字标注的中文分词.比如一句话 "我爱北京天安门”. 分词的结果可以是 “我/爱/北京/天安 ...

  10. HMM(隐马尔科夫模型)与分词、词性标注、命名实体识别

    转载自 http://www.cnblogs.com/skyme/p/4651331.html HMM(隐马尔可夫模型)是用来描述隐含未知参数的统计模型,举一个经典的例子:一个东京的朋友每天根据天气{ ...

随机推荐

  1. 【Shiro】01 概述 & 快速上手

    什么是Shiro? Apache Shiro 是Java的一个权限安全框架 一些功能:认证.授权.加密.会话管理.与Web 集成.缓存等   Shiro官网地址:[ 点击访问 ] http://shi ...

  2. 【OracleDB】 08 子查询

    什么是子查询? 子查询是一种常用计算机语言SELECT-SQL语言中嵌套查询下层的程序模块. 当一个查询是另一个查询的条件时,称之为子查询. Oracle的子查询语法公式: SELECT select ...

  3. 如何在无窗口模式下为git的tag和commit操作加GPG私钥——如何在命令行模式下使用gpg秘钥为git操作签名

    相关: 如何在无窗口模式下运行GPG--如何在命令行模式下使用gpg生成秘钥:How to make gpg prompt for passphrase on CLI--GPG prompt for ...

  4. C语言编写Linux终端环境下无缓冲键盘输入 ,并识别上下左右光标键

    自己重构了游戏<2048>并且重构了它的最好启发式AI解法,并上传到了Gitee中的 鬼&泣 / 2048-heuristic的devilmaycry分支,在这个过程中编写了一个C ...

  5. devtools工具遇到的坑

    下载devtools一定要下载5.1.1版本,其他版本要么就是下载依赖不行,要么就是打包不行,不清楚的同学会下载最新版,最新版的不能用,切记 地址放这里了: https://github.com/vu ...

  6. Digest Auth 摘要认证

    1.该代码展示了使用Apache HttpClient库进行HTTP请求,并处理基于MD5的HTTP Digest认证的过程. Digests类实现了MD5加密算法,HttpUtils类处理了GET. ...

  7. Unity编辑器批量设置图片格式

    在游戏开发中,经常需要批量设置图片的格式为Sprite类型,手动设置太麻烦,下面的编辑器脚本实现选中文件夹右键/Texture/SetAllImagesToSpriteType实现批量设置图片格式,具 ...

  8. springboot代码自动生成

    在项目开始阶段经常需要自动生成一批代码,如果使用了mybatis则可以使用mybatis plus就可以生成mybatis相关代码.不过经常项目中还有一些mvc代码需要生成,比如说前端代码.相关sql ...

  9. Kolmogorov-Smirnov 检验 + k 样本 Anderson-Darling 检验 + 贝叶斯估计 + 期望方差

    KS 检验是基于 Kolmogorov distribution,指的是 \[K=\sup_{t\in[0,1]}\left\lvert B(t)\right\rvert \] 式中 \(B(t)\) ...

  10. 平衡树 -- Splay & Treap

    Treap & Splay学习笔记 前置知识 -- BST 二叉搜索树,一种比较好玩的数据结构,其实现原理是运用每个点的权值构建,其中满足这样的构造方式: 若 \(value > t[x ...