梦晨 只想说 凹非寺量子位 报导 | 微信公众号 QbitAI
全新轻量多语言NLP工具箱Trankit公布1.0版本号,来源于俄勒冈大学。
根据Transformer,性能已超过以前的受欢迎类似新项目斯坦福大学Stanza。
Trankit适用高达56种语言,除开简体字和繁体版之外,还适用古文。
先看来一组Trankit与Stanza对古文开展相互依赖句法分析的結果。
能够见到,Stanza不正确的将“有朋至远方来”中的“有”和“来”2个形容词分辨成并列结构。
在简体中文版的词性标注每日任务上,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 Pipeline
p = 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 TPipeline
tp = 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这类“1394连接”的适配器方式主要表现最好是。
精英团队表明,未来计划根据科学研究不一样的预训练Transformer(如mBERT和XLM-Robertalarge)来改善Trankit。
还考虑到为大量语言出示实体识别,及其适用大量的NLP每日任务。
Github库房:
https://github.com/nlp-uoregon/trankit
http://nlp.uoregon.edu/trankit