当前位置:网站首页>论文阅读_中文NLP_LTP
论文阅读_中文NLP_LTP
2022-07-05 17:16:00 【xieyan0811】
英文题目:N-LTP: An Open-source Neural Language Technology Platform for Chinese
中文题目:开源中文神经网络语言技术平台N-LTP
论文地址:https://arxiv.org/pdf/2009.11616v4.pdf
领域:自然语言处理
发表时间:2021
作者:Wanxiang Che等,哈工大
出处:EMNLP
被引量:18+
代码和数据:https://github.com/HIT-SCIR/ltp
阅读时间:22.06.20
读后感
它是一个基于Pytorch的针对中文的离线工具,带训练好的模型,最小模型仅164M。直接支持分词,命名实体识别等六种任务,六种任务基本都围绕分词、确定词的成份、关系。
实测:比想象中好用,如果用于识别人名,效果还可以,直接用于垂直领域,效果一般,可能还需要进一步精调。
文章贡献
- 支持六项中文自然语言任务。
- 基于多任务框架,共享知识,减少内存用量,加快速度。
- 高扩展性:支持用户引入的BERT类模型。
- 容易使用:支持多语言接口 C++, Python, Java, Rust
- 达到比之前模型更好的效果
设计和架构
图-2展示了软件架构,由一个多任务共享的编码层和各任务别实现的解码层组成。
共享编码层
使用预训练的模型 ELECTRA,输入序列是s=(s1,s2,…,sn),加入符号将其变成 s = ([CLS], s1, s2, . . . , sn, [SEP]),请见BERT原理,输出为对应的隐藏层编码
H = (h[CLS],h1, h2, . . . , hn, h[SEP])。
中文分词 CWS
将编码后的H代入线性解码器,对每个字符分类:
y是每个字符类别为各标签的概率。
位置标注 POS
位置标注也是NLP中的一个重要任务,用于进一步的语法解析。目前的主流方法是将其视为序列标注问题。也是将编码后的H作为输入,输出位置的标签:
y是该位置字符属于某一标签的概率,其中i是位置信息。
命名实体识别 NER
命名实体识别的目标是寻找实体的开始位置和结束位置,以及该实体的类别。工具中使用Adapted-Transformer方法,加入方向和距离特征:
最后一步也使用线性分类器计算每个词的类别:
其中y是NER属于某一标签的概率。
依赖性解析 DEP
依赖性解析主要是分析句子的语义结构(详见网上示例),寻找词与词之间的关系。软件中具体使用了双仿射神经网络和einser算法。
语义依解析 SDP
与依赖性分析相似,语义依赖分析也是捕捉句子的语义结构。它将句子分析成一棵依存句法树,描述出各个词语之间的依存关系。也即指出了词语之间在句法上的搭配关系,这种搭配关系是和语义相关联的。具体包括:主谓关系SBV,动宾关系VOB,定中关系ATT等,详见:
从0到1,手把手教你如何使用哈工大NLP工具——PyLTP
具方法是查找语义上相互关联的词对,并找到预定义的语义关系。实现也使用了双仿射模型。
当p>0.5时,则认为词 i 与 j 之间存在关联。
语义角色标注 SRL
语义角色标注主要目标是识别句子以谓语为中心的结构,具体方法是使用端到端的SRL模型,它结合了双仿射神经网络和条件随机场作为编码器,条件随机场公式如下:
其中f用于计算从yi,j-1到yi,j的转移概率。
知识蒸馏
为了比较单独训练任务和多任务训练,引入了BAM方法:
用法
安装
$ pip install ltp
在线demo
http://ltp.ai/demo.html
示例代码
from ltp import LTP
ltp = LTP()
seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
pos = ltp.pos(hidden)
ner = ltp.ner(hidden)
srl = ltp.srl(hidden)
dep = ltp.dep(hidden)
sdp = ltp.sdp(hidden)
其中seg函数实现了分词,并输出了切分结果,及各词的向量表示。
精调模型
下载源码
$ git clone https://github.com/HIT-SCIR/ltp
在其 ltp 目录中有 task_xx.py,可训练及调优模型,用法详见py内部的示例。形如:
python ltp/task_segmention.py --data_dir=data/seg --num_labels=2 --max_epochs=10 --batch_size=16 --gpus=1 --precision=16 --auto_lr_find=lr
实验
Stanza是支持一个多语言的NLP工具,中文建模效果比较如下:
另外,实验也证明,使用联合模型速度更快,占用内存更少。
参考
边栏推荐
- Mysql5.6 parsing JSON strings (supporting complex nested formats)
- ICML 2022 | meta proposes a robust multi-objective Bayesian optimization method to effectively deal with input noise
- SQL删除重复数据的实例教程
- SQL Server(2)
- Winedt common shortcut key modify shortcut key latex compile button
- Server configuration jupyter environment
- What are the precautions for MySQL group by
- Kafaka技术第一课
- Cartoon: a bloody case caused by a math problem
- Is it safe for China Galaxy Securities to open an account? How long can I buy stocks after opening an account
猜你喜欢
Machine learning 01: Introduction
Redis+caffeine two-level cache enables smooth access speed
Oracle Recovery Tools ----oracle数据库恢复利器
33: Chapter 3: develop pass service: 16: use redis to cache user information; (to reduce the pressure on the database)
Complete solution instance of Oracle shrink table space
解决“双击pdf文件,弹出”请安装evernote程序
提高應用程序性能的7個DevOps實踐
To solve the problem of "double click PDF file, pop up", please install Evernote program
Use of ThinkPHP template
7. Scala class
随机推荐
統計php程序運行時間及設置PHP最長運行時間
使用QT设计师界面类创建2个界面,通过按键从界面1切换到界面2
如何保存训练好的神经网络模型(pytorch版本)
Cartoon: interesting pirate problem (full version)
How to save the trained neural network model (pytorch version)
stirring! 2022 open atom global open source summit registration is hot!
VBA驱动SAP GUI实现办公自动化(二):判断元素是否存在
C#(Winform) 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
Design of electronic clock based on 51 single chip microcomputer
Alpha conversion from gamma space to linner space under URP (II) -- multi alpha map superposition
机器学习01:绪论
Tips for extracting JSON fields from MySQL
得知女儿被猥亵,35岁男子将对方打至轻伤二级,法院作出不起诉决定
Mongodb (quick start) (I)
Flask solves the problem of CORS err
MySql 查询符合条件的最新数据行
漫画:寻找股票买入卖出的最佳时机
为什么阳历中平年二月是28天
WebApp开发-Google官方教程
漫画:有趣的【海盗】问题