赛尔原创 | N-LTP:基于预训练模型的中文自然语言处理平台

论文名称:N-LTP: A Open-source Neural Chinese Language Technology Platform with Pretrained Models

论文作者:车万翔,冯云龙,覃立波,刘挺

原创作者:冯云龙

论文链接:https://arxiv.org/abs/2009.11616

转载须标注出处:哈工大SCIR

背景

现有种类繁多的自然语言处理(NLP)工具包,例如CoreNLP [1],UDPipe [2],FLAIR [3],spaCy 和Stanza [4]的英文版,这使用户可以更轻松地构建具有复杂语言处理能力的工具。最近,在许多下游应用中对中文NLP的需求急剧增加。中文NLP平台通常包括词法分析(中文分词(CWS),词性(POS)标记和命名实体识别(NER)),语法分析(依赖项解析(DEP))和语义分析(语义依赖解析(SDP)和语义角色标记(SRL))。不过用于中文NLP任务的高性能和高效率工具包相对较少。

介绍

基于以上背景,我们搭建了N-LTP,这是一个基于PyTorch的中文自然语言处理的神经自然语言处理工具包,它是基于SOTA预训练模型构建的。

如图1所示,在输入中文语料库的情况下,N-LTP产生了相对丰富和快速的分析结果,包括词法分析,句法分析和语义分析等。此外,N-LTP还提供了易于使用的API和可视化工具。

图1  N-LTP模型概览

与现有的广泛使用的NLP工具包相比,N-LTP具有以下优点:

  • 丰富的中文基础NLP任务:N-LTP支持丰富的中文基础NLP任务,包括词法分析(分词,词性标记,命名实体识别和语义角色标记),语法解析和语义解析(语义依赖解析)。

  • 多任务学习:现有的中文NLP工具包均针对每个任务采用独立的模型,从而忽略了各个任务之间的共享知识。为了缓解这个问题,我们建议使用多任务框架 [8] 来利用所有任务之间的共享知识。同时,针对所有六个任务使用共享编码器进行的多任务学习可以大大减少占用的内存并提高速度,从而使N-LTP更加高效,从而减少了对硬件的需求。

  • 可扩展性:N-LTP与用户的自定义模块一起使用。用户可以轻松地通过配置文件添加新的预训练模型,通过更改配置,用户可以轻松地将预训练模型更改为变压器支持的任何类似BERT的模型 [9]。我们已经使所有任务训练配置文件开源。

  • 易于使用的API和可视化工具:N-LTP提供了基本API的集合,这使用户无需任何知识即可方便地使用该工具包。我们还提供了可视化工具,使用户可以直接查看处理结果。此外,N-LTP具有许多编程语言可用的绑定,比如C++,Python,Java和Rust等。

  • 最先进的性能:我们对一共六项中文NLP任务进行了评估,发现它在每项任务上均达到了最先进的水平或具有竞争力的表现。

使用方法

安装方法

$ pip install ltp

快速使用

Python

from ltp import LTPltp = LTP()  # 默认加载 Small 模型
seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
pos = ltp.pos(hidden)
ner = ltp.ner(hidden)
srl = ltp.srl(hidden)
dep = ltp.dep(hidden)
sdp = ltp.sdp(hidden)

其他语言绑定等

// RUST 语言
use ltp_rs::{LTPError, LTP};fn main() -> Result<(), LTPError> {let mut ltp = LTP::new("path/to/model", 16)?;let sentences = vec![String::from("他叫汤姆去拿外衣。")];let result = ltp.pipeline_batch(&sentences)?;println!("{:?}", result);Ok(())
}

多任务模型

共享编码器

为了提取所有中文相关任务的共享知识,我们采用了多任务框架,其中六个中文任务共享一个编码器。在我们的框架中,我们采用SOTA预训练模型(ELECTRA [5])作为编码器。

给定输入序列 = (),我们首先通过添加特定标记 = ()构造输入序列),其中是表示整个序列的特殊符号,是用于分隔非连续令牌序列的特殊符号(Devlin et al。,2019)。ELECTRA接受构造的输入,并输出序列 = (, , )的相应隐藏表示。

分词

中文分词(CWS)是中文自然语言处理(NLP)的首要任务。在N-LTP中,CWS被视为基于字符的序列标记问题。具体来说,给定隐层的表示形式 = (, , ),我们采用线性解码器对每个字符进行分类:

其中,表示标签概率分布每个字符;是可训练的参数。

词性标注

词性(POS)标记是另一个基本的NLP任务,它可以简化诸如语法分析之类的下游任务。和分词任务一样,我们这里也是使用一个简单地MLP来对每个词语进行分类。

命名实体识别

命名实体识别(NER)是一项常见的自然语言处理任务,目的是在一个句子中查找一个实体(人员,位置,组织等)的起点和终点,并为此实体分配一个类别。

这里我们使用了 Adapted-Transformer[6] 来获取方向和距离敏感的词语表示,然后使用线性分类器对其进行分类:

其中 表示每个字符的NER标签概率分布。

依存句法分析

依存关系分析是分析句子的语义结构的任务。在N-LTP中,我们使用 deep biaffine parser [10](Dozat and Manning,2017)和einser算法 [7](Eisner,1996)以获取解析结果,其公式为:

上面的过程通过将1维向量 扩展为 维来对 进行评分,其中 为标签的总数。

语义依存分析

与依存关系分析相似,语义依存分析[11]是捕获句子语义结构的任务。具体来说,给定一个输入语句,SDP的目的是确定所有彼此语义相关的词对,并分配特定的预定义语义关系。

这里我们仍然使用 Biaffine 模型来对结果进行预测,不过之后我们使用

如果 我们则认为从 存在一个边。

语义角色标注

语义角色标记(SRL)是确定句子的潜在谓语-参数结构的任务,它可以提供表示形式来回答有关句子含义的基本问题,包括谁对谁做了什么等。

这里我们使用 Biaffine 和 CRF 的解码器相结合的方法构建了一个端到端的 SRL 模型。

其中 表示谓词为 时的任意标签序列,而 表示从 对于 的分数。

实验结果

主实验

表1展示了LTP和Stanza模型在LTP数据集上的结果。

表1  LTP 和 Stanza 在 LTP 数据集上的结果。

表2展示了LTP 和 Stanza 在 UD 和 Ontonotes 上的结果,这里报的是Stanza的官方结果,指标采用Stanza提供的评测脚本计算得出。

表2  LTP 和 Stanza 在 UD 和 Ontonotes 上的结果

由于Stanza并没有使用BERT等预训练模型,因此我们另外查找了一些使用预训练模型的SOTA模型进行比较,基本上都取得了相对不错的结果。

表3  LTP模型与不同任务上的SOTA预训练模型进行比较

速度

另外,我们也对模型的速度进行了比较,从表4可以看到LTP在与Stanza同样的任务量下 LTP/LTP速度是Stanza的4~6倍。另外,我们也制作了其他语言的 Binding。从表4可以看到,Rust版本相比较于Python版本快了大约两倍左右。

表4  模型速度的比较

总结

我们介绍了N-LTP,一个面向中文自然语言处理的工具包。我们在6个基本的中文NLP任务对N-LTP进行了评估,并获得了最先进的或具有竞争力的性能,希望它能够促进中文NLP的研究和应用。将来,我们将通过添加新的模型或者任务来继续扩展N-LTP。

参考文献

[1]. Christopher Manning, Mihai Surdeanu, John Bauer, Jenny Finkel, Steven Bethard, and David McClosky. 2014. The Stanford CoreNLP natural language pro- cessing toolkit. In Proceedings of 52nd Annual Meeting of the Association for Computational Lin- guistics: System Demonstrations, pages 55–60, Bal- timore, Maryland. Association for Computational Linguistics.

[2]. Straka, Milan, and Jana Straková. 2017. Tokenizing, POS tagging, lemmatizing and parsing UD 2.0 with UDPipe. In Proceedings of the CoNLL 2017 Shared Task: Multilingual Parsing from Raw Text to Univer- sal Dependencies, pages 88–99, Vancouver, Canada. Association for Computational Linguistics.

[3]. Alan Akbik, Tanja Bergmann, Duncan Blythe, Kashif Rasul, Stefan Schweter, and Roland Vollgraf. 2019. FLAIR: An easy-to-use framework for state-of-the- art NLP. In Proceedings of the 2019 Confer- ence of the North American Chapter of the Asso- ciation for Computational Linguistics (Demonstra- tions), pages 54–59, Minneapolis, Minnesota. Asso- ciation for Computational Linguistics.

[4]. Peng Qi, Yuhao Zhang, Yuhui Zhang, Jason Bolton, and Christopher D. Manning. 2020. Stanza: A python natural language processing toolkit for many human languages. In Proceedings of the 58th An- nual Meeting of the Association for Computational Linguistics: System Demonstrations, pages 101– 108, Online. Association for Computational Linguistics.

[5]. Kevin Clark, Minh-Thang Luong, Quoc V. Le, and Christopher D. Manning. 2020. ELECTRA: pre-training text encoders as discriminators rather than generators. In 8th International Confer- ence on Learning Representations, ICLR 2020, Ad- dis Ababa, Ethiopia, April 26-30, 2020. OpenRe- view.net.

[6]. Hang Yan, Bocao Deng, Xiaonan Li, and Xipeng Qiu. 2019a. Tener: Adapting transformer encoder for named entity recognition.

[7]. Jason M. Eisner. 1996. Three new probabilistic models for dependency parsing: An exploration. In COL- ING 1996 Volume 1: The 16th International Confer- ence on Computational Linguistics.

[8]. Kevin Clark, Minh-Thang Luong, Urvashi Khandel- wal, Christopher D. Manning, and Quoc V. Le. 2019. BAM! born-again multi-task networks for natural language understanding. In Proceedings of the 57th Annual Meeting of the Association for Computa- tional Linguistics, pages 5931–5937, Florence, Italy. Association for Computational Linguistics.

[9]. Thomas Wolf, Lysandre Debut, Victor Sanh, Julien Chaumond, Clement Delangue, Anthony Moi, Pier- ric Cistac, Tim Rault, Re ́mi Louf, Morgan Funtow- icz, Joe Davison, Sam Shleifer, Patrick von Platen, Clara Ma, Yacine Jernite, Julien Plu, Canwen Xu, Teven Le Scao, Sylvain Gugger, Mariama Drame, Quentin Lhoest, and Alexander M. Rush. 2019. Huggingface’s transformers: State-of-the-art natural language processing. ArXiv, abs/1910.03771.

[10]. Timothy Dozat and Christopher D. Manning. 2017. Deep biaffine attention for neural dependency pars- ing. In 5th International Conference on Learning Representations, ICLR 2017, Toulon, France, April 24-26, 2017, Conference Track Proceedings. Open- Review.net.

[11]. Wanxiang Che, Meishan Zhang, Yanqiu Shao, and Ting Liu. 2012. SemEval-2012 task 5: Chinese semantic dependency parsing. In **SEM 2012: The First Joint Conference on Lexical and Computational Seman- tics – Volume 1: Proceedings of the main conference and the shared task, and Volume 2: Proceedings of the Sixth International Workshop on Semantic Eval- uation (SemEval 2012)*, pages 378–384, Montre ́al, Canada. Association for Computational Linguistics.

本期责任编辑:冯骁骋

本期编辑:钟蔚弘


哈工大SCIR』公众号

主编:张伟男

副主编:丁效,刘铭,冯骁骋,赵森栋

执行编辑:杜佳琪

编辑:钟蔚弘,彭湃,朱文轩,冯晨,牟虹霖,张馨,王若珂,高建男

长按下图即可关注哈尔滨工业大学社会计算与信息检索研究中心微信公众号『哈工大SCIR』。

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

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

相关文章

LeetCode 49. 字母异位词分组(哈希)

1. 题目 给定一个字符串数组&#xff0c;将字母异位词组合在一起。字母异位词指字母相同&#xff0c;但排列不同的字符串。 示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [["ate",…

【历史文档】小程序启动速度优化实践

这篇文章是2018年3月写的&#xff0c;本身只是做了简单的内部分享。近期被人问题这段经历&#xff0c;发现忘得一干二净&#xff0c;于是再拿出来回顾回顾。 前言&#xff1a;前端应用的启动速度一向是移动终端的优化重点&#xff0c;因为这是面向用户进入的大门。良好的启动速…

论文浅尝 - SWJ | 基于知识图谱和注意力图卷积神经网络的可解释零样本学习

论文题目&#xff1a;Explainable Zero-shot Learning via Attentive Graph Convolutional Network and Knowledge Graphs本文作者&#xff1a;耿玉霞&#xff0c;浙江大学在读博士&#xff0c;研究方向为知识图谱、零样本学习、可解释性发表期刊&#xff1a;Semantic Web Jour…

Android官方开发文档Training系列课程中文版:目录

原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后&#xff0c;我觉得应该做一件事情&#xff0c;就是把安卓的整篇训练课程全部翻译成英文&#xff0c;供国内的开发者使用&#xff0c;尤其是入门开发者&#xff0c;虽然现在…

LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)

1. 题目 给定一个字符串&#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重…

安装kenlm出现问题的解决方案gcc g++

安装kenlm出现问题的解决方案 apt-get install gcc apt-get install g参考文章&#xff1a;gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory

论文浅尝 - TACL2020 | 改进低资源跨语言实体链接的候选生成问题

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;TACL 2020链接&#xff1a;https://arxiv.org/ftp/arxiv/papers/2003/2003.01343.pdf1.背景介绍跨语言实体链接(Cross-lingual Entity Linking, XEL)旨在利用源语言文本中实体描述(提及)&#xff0c;…

「DLP-KDD 2021征文」及上届论文全集,包含深度学习推荐/广告系统、多目标、模型服务等

「DLP-KDD 2021征文」及上届论文全集&#xff0c;包含深度学习推荐/广告系统、多目标、模型服务等在DLP-KDD 2021征稿之际&#xff0c;为大家准备了DLP-KDD2020的全部文章和资源列表&#xff0c;内容涵盖了几乎所有深度学习的业界应用前沿&#xff0c;包括深度学习推荐系统应用…

卫星系统——酒店后端全链路日志收集工具介绍

背景 随着酒店业务的高速发展&#xff0c;我们为用户、商家提供的服务越来越精细&#xff0c;系统服务化程度、复杂度也逐渐上升。微服务化虽然能够很好地解决问题&#xff0c;但也有副作用&#xff0c;比如&#xff0c;问题定位。 每次问题定位都需要从源头开始找同事帮我人肉…

拖拽式Vue组件代码生成平台(LCG)新版详细介绍

拖拽式Vue组件代码生成平台是一款小猴自研的Vue代码生成工具&#xff0c;英文全称&#xff1a;Low Code Generator&#xff0c;简称LCG。它也是一种LowCode解决方案。通过它可以快速完成Vue组件的代码骨架搭建&#xff0c;通过减少不必要的重复工作从而带来开发效率的提升。 体…

ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

apt-get update apt-get install libglib2.0-dev系统&#xff1a;ubuntu16.04

LeetCode 454. 四数相加 II(哈希)

1. 题目 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) &#xff0c;使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化&#xff0c;所有的 A, B, C, D 具有相同的长度 N&#xff0c;且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间…

论文浅尝 - AAAI2020 | 多轮对话系统中的历史自适应知识融合机制

论文笔记整理&#xff1a;潘锐&#xff0c;天津大学硕士。链接&#xff1a;https://www.aaai.org/ojs/index.php/AAAI/article/view/6425来 源&#xff1a;AAAI 2020论文简介保持对话的一致性和避免内容重复是构建以知识为基础的多轮对话系统的两个关键因素。尽管一些工作倾…

高性能平台设计—美团旅行结算平台实践

本文根据第23期美团技术沙龙演讲内容整理而成。 背景 美团酒旅有很多条业务线&#xff0c;例如酒店、门票、火车票等等&#xff0c;每种业务都有结算诉求&#xff0c;而结算处于整个交易的最后一环不可缺少&#xff0c;因此我们将结算平台化&#xff0c;来满足业务的结算诉求。…

小程序调试技术导读

近期团队内在自研小程序&#xff0c;我负责开发者工具中的调试部分。调试作为面向开发者的基础能力&#xff0c;扮演了极为重要的角色。 本篇文章是导读文章。 调试能力从0到1一共经历了4个版本&#xff0c;接下来的文章将会以这4个版本为主线分别进行介绍。 初始版 上图为调试…

可交互的 Attention 可视化工具!我的Transformer可解释性有救了?

文 | Sherry视觉是人和动物最重要的感觉&#xff0c;至少有80%以上的外界信息是经过视觉获得的。我们看论文的时候&#xff0c;通过图表来确定文章的大致内容往往也是一个更高效的 说到深度神经网络的可视化&#xff0c;最经典的莫过于的CNN密恐图了&#xff1a;这种可视化方法…

ImportError: libSM.so.6: cannot open shared object file: No such file or dir

ImportError: libSM.so.6: cannot open shared object file: No such file or dir 出现错误&#xff1a; ImportError: libSM.so.6: cannot open shared object file: No such file or dir 解决方法&#xff1a; apt-get install libsm6如果你出现了上面的错误&#xff0c;那…

LeetCode 347. 前 K 个高频元素(哈希/优先队列)

文章目录1. 题目2. 解题2.1 哈希2.2 优先队列1. 题目 给定一个非空的整数数组&#xff0c;返回其中出现频率前 k 高的元素。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2: 输入: nums [1], k 1 输出: [1] 说明&#xff1a; 你可以假设给定的 k 总是合理的&…

Lego-美团接口自动化测试实践

一、概述 1.1 接口自动化概述 众所周知&#xff0c;接口自动化测试有着如下特点&#xff1a; 低投入&#xff0c;高产出。比较容易实现自动化。和UI自动化测试相比更加稳定。如何做好一个接口自动化测试项目呢&#xff1f; 我认为&#xff0c;一个“好的”自动化测试项目&#…

小程序调试技术详解(基于小猴小程序)

本篇文章主要围绕小猴小程序调试技术第三版进行展开。 在上一篇导读文章中提到&#xff0c;小猴小程序的调试部分从无到有一共经历了3个版本。本篇文章会详细描述面向开发者的调试功能是如何实现的。 文章将会描述以下部分&#xff1a; 调试实现的基本通信关系结构。如何实现…