2021-04-02 12:51:35

梦晨 发自 凹非寺
量子位 报道 | 公众号 QbitAI

最新轻量级多语言NLP工具集Trankit发布1.0版本,来自俄勒冈大学。

基于Transformer,性能已超越之前的热门同类项目斯坦福Stanza

Trankit支持多达56种语言,除了简体和繁体中文以外,还支持文言文

先来看一组Trankit与Stanza对文言文进行依存句法分析的结果。

可以看到,Stanza错误的将“有朋自远方来”中的“有”和“来”两个动词判断成并列关系

在简体中文的词性标注任务上,Trankit对“自从”一词处理也更好。

与Stanza一样,Trankit也是基于Pytorch用原生Python实现,对广大Python用户非常友好。

Trankit在多语言NLP多项任务上的性能超越Stanza。

在英语分词上的得分比Stanza高9.36%。在中文依存句法分析的UAS和LAS指标上分别高出14.50%和15.0%

Trankit在GPU加持下加速更多,且占用内存更小,作为一个轻量级NLP工具集更适合普通人使用。

简单易用

Trankit的使用也非常简单,安装只要pip install就完事了。

pip install trankit

不过需要注意的是,Trankit使用了Tokenizer库,需要先安装Rust。

初始化一个预训练Pipeline:

from trankit import Pipeline# initialize a multilingual pipeline
p = Pipeline(lang='english', gpu=True, cache_dir='./cache')

开启auto模式,可以自动检测语言:

from trankit import Pipelinep = Pipeline('auto')# Tokenizing an English input
en_output = p.tokenize('''I figured I would put it out there anyways.''') # POS, Morphological tagging and Dependency parsing a French input
fr_output = p.posdep('''On pourra toujours parler à propos d'Averroès de "décentrement du Sujet".''')

使用自定义标注数据自己训练Pipeline也很方便:

from trankit import TPipelinetp = TPipeline(training_config={'task': 'tokenize','save_dir': './saved_model','train_txt_fpath': './train.txt','train_conllu_fpath': './train.conllu','dev_txt_fpath': './dev.txt','dev_conllu_fpath': './dev.conllu'}
)trainer.train()

统一的多语言Transformer

Trankit将各种语言分别训练的Pipelines整合到一起共享一个多语言预训练Transformer。

然后为每种语言创建了一组适配器(Adapters)作为传统的预训练模型“微调(Fine-tuning)”方法的替代,并对不同的NLP任务设置权重。

在训练中,共享的预训练Transformer是固定的,只有适配器和任务特定权重被更新。

在推理时,根据输入文本的语言和当前的活动组件,寻找相应的适配器和特定任务权重。

这种机制不仅解决了内存问题,还大大缩短了训练时间

Trankit团队在实验中对比了另外两种实现方法。

一种是把所有语言的数据集中到一起训练一个巨大的Pipeline。另一种是使用Trankit的方法但把适配器去掉。

在各项NLP任务中,Trankit这种“即插即用”的适配器方法表现最好。

团队表示,未来计划通过研究不同的预训练Transformer(如mBERT和XLM-Robertalarge)来改进Trankit。

还考虑为更多语言提供实体识别,以及支持更多的NLP任务。

Github仓库:
https://github.com/nlp-uoregon/trankit

在线Demo:
http://nlp.uoregon.edu/trankit

相关论文:
https://arxiv.org/pdf/2101.03289.pdf

— 完 —

轻量级NLP工具开源,中文处理更精准,超越斯坦福Stanza相关推荐

  1. 轻量级NLP工具Trankit开源,中文处理更精准,超越斯坦福Stanza,内存占用小45%

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 最新轻量 ...

  2. 开源中文切词工具介绍

    开源中文分词工具介绍 这里介绍常用的开源中文分词工具,大部分是java实现.如果是java生产环境,建议使用ansj.word或HanNlp. Bakeoff是一个国际中文处理比赛,有多个语料,所以每 ...

  3. 常用的开源中文分词工具

    转载自:  http://www.scholat.com/vpost.html?pid=4477 常用的开源中文分词工具 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及 ...

  4. 中文 NLP 工具总结

    文章目录 中文 NLP 工具总结 1. Jieba 分词 1.1 简介 1.2 模型原理 1.3 安装 1.4 使用 1.5 分词评测 2. pyltp--哈工大 2.1 简介 2.2 模型原理 2. ...

  5. CVPR2021(Oral) 商汤、港中文实现单目人脸重建新突破: 基于生成网络的渲染器!几何形状更精准!渲染效果更真实!...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 近日,商汤-港中文联合实验室提出基于风格化对抗生成器的人脸渲染器,用于取代传统图形学基于栅格化的渲染器 ...

  6. 推荐一套开源中文课:自然语言处理(NLP)专题

    没错,百度出NLP开源中文课了! 顶配师资.模型全开源.配V100算力那种 最实用NLP中文课来袭   自然语言处理(下文简称NLP)是人工智能的关键研究领域之一,旨在教会计算机理解和生成语言.    ...

  7. CVPR2021(Oral) 商汤、港中文实现单目人脸重建新突破: 基于生成网络的渲染器!几何形状更精准!渲染效果更真实!

    近日,商汤-港中文联合实验室提出基于风格化对抗生成器的人脸渲染器,用于取代传统图形学基于栅格化的渲染器来进行3D模型的重建.该方法构建了一种从输入3D模型到生成图像的平滑梯度,同时可以以低精度建模获得 ...

  8. EasyNLP 开源中文 NLP 算法框架

    1.背景 随着 BERT.Megatron.GPT-3 等预训练模型在 NLP 领域获得前瞻的成果,许多多团队也进入超大规模训练中,使得训练模型从亿级别发展到了千亿甚至万亿的规模.首先,模型参数量过大 ...

  9. 自然语言处理NLP常用开源/免费工具

    NLP常用开源/免费工具 (转载自水木社区NLP版) *Computational Linguistics Toolbox   CLT http://complingone.georgetown.ed ...

最新文章

  1. 2020 Kaggle年度报告发布:美国公司最容易「人均百万」,90%数据科学家坚持终生学习...
  2. 代码注入之远程线程篇
  3. C段渗透攻击必看的技术知识
  4. PCL库VTK显示点云法向时出错:no override found for vtkActor
  5. 记录一个JS异常Uncaught NotFoundError
  6. python之路_自定义属性、json及其他js补充
  7. Java数学工具类MathUtil
  8. 老男孩教育每日一题-124天:当我们使用ssh-keygen命令的时候,如何一键非交互生产密钥对呢?...
  9. 看完这道题,你敢在心里承认自己是高手么
  10. 十进制到二进制的转换
  11. abaqus更改计算机名,ABAQUS 2016 安装教程
  12. 计算机2.0培训心得,信息技术应用能力提升培训心得体会两篇
  13. here i am(歌手BryanAdams的歌曲)
  14. 计算机机水平,湖南省计算机水平等级题型知识点及评分机机制介绍.doc
  15. PDF文件旋转最好用的方法
  16. 【黑马程序员】20天学会Java-基础阶段笔记
  17. 计算机系统分析师6,系统分析师:计算机硬件基础知识二[6]
  18. html弹窗中遍历数组,有关js各种数组遍历
  19. 系统视频播放器——AVPlayerItem AVPlayer AVPlayerLayer
  20. App上传到应用宝的一些问题

热门文章

  1. AS3 Drawing API演讲稿
  2. 妙用“IP地址冲突”揪出害群之马
  3. Linux批量文件名大小写转换,Linux中批量把目录内文件名转换大小写用tr
  4. 数据结构与算法的八股文自述(持续更新)
  5. 计算机网络的八股文自述(持续更新)
  6. 随机森林采用多数表决的一种,最终表决结果不是树上的类别(class)频率,而是树上的各类别概率的平均值
  7. RandomForestClassifier参数min_samples_leaf和min_samples_split理解
  8. python numpy.array 与list类似,不同点:前者区分元素不用逗号,中间用空格,矩阵用[]代表行向量,两个行向量中间仍无逗号;  而list区分元素用逗号
  9. 人脸识别机器学习实战
  10. CMU 刘畅流:爱上人机交互源于科幻片,女性研究AI更感性、更哲学 | 妇女节特辑...