輕量級NLP工具開源,中文處理更精準,超越斯坦福Stanza
本文經AI新媒體量子位(公眾號ID: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 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這種“即插即用”的適配器方法表現最好。
團隊表示,未來計劃通過研究不同的預訓練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
































