Trankitのテクニカルペーパーは、EACL 2021で優れたデモペーパー賞を受賞しました。研究でTrankitを使用している場合は、論文を引用してください。
@inproceedings { nguyen2021trankit ,
title = { Trankit: A Light-Weight Transformer-based Toolkit for Multilingual Natural Language Processing } ,
author = { Nguyen, Minh Van and Lai, Viet Dac and Veyseh, Amir Pouran Ben and Nguyen, Thien Huu } ,
booktitle = " Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: System Demonstrations " ,
year = { 2021 }
}56言語用の90の新しい前提型変圧器ベースのパイプライン。新しいパイプラインはXLM-Roberta Largeでトレーニングされており、これにより、Universal Condecies V2.5コーパスの90のツリーバンクを大幅に上回るパフォーマンスがさらに向上します。ここで新しいパフォーマンスをご覧ください。このページには、新しいパイプラインの使用方法が示されています。
多言語パイプライン用の自動モード。自動モードでは、入力の言語が自動的に検出され、多言語パイプラインが言語を指定せずに入力を処理できるようになります。こちらで自動モードをオンにする方法をご覧ください。 Loretoparisiこれについての提案をありがとうございます。
コマンドラインインターフェイスを使用できるようになりました。これにより、Pythonプログラミング言語に慣れていないユーザーがTrankitを簡単に使用できます。このページのチュートリアルをご覧ください。
Trankitは、多言語自然言語処理(NLP)用の軽量変圧器ベースのPythonツールキットです。 100言語を超える基本的なNLPタスク用のトレーニング可能なパイプラインと、56言語用の90のダウンロード可能な前提条件のパイプラインを提供します。
Trankitは、90のユニバーサル依存関係を超える多くのタスクで、56の異なる言語の多くのタスクで、現在の最先端の多言語ツールキットStanza(Stanfordnlp)を上回り、メモリの使用と速度が効率的であり、一般ユーザーに使用可能になります。
特に、英語の場合、Trankitは、文のセグメンテーション( +9.36% )および依存関係の解析でスタンザよりも大幅に優れています(UASで+5.07% 、LASで+5.81% )。アラビア語の場合、当社のツールキットは文のセグメンテーションパフォーマンスを16.36%大幅に改善しますが、中国は依存関係解析のためにUASとLAの14.50%と15.00%の改善を観察します。他の言語のTrankit、Stanza、およびその他の人気のあるNLPツールキット(つまり、Spacy、UDPipe)の詳細な比較は、ドキュメントページにあります。
また、Trankit用のデモWebサイトを作成しました。これは、http://nlp.uoregon.edu/trankitでホストされています
Trankitは、次の方法のいずれかを使用して簡単にインストールできます。
pip install trankit
コマンドはTrankitとすべての従属パッケージを自動的にインストールします。
git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .
これにより、最初にGitHubリポジトリをクローンし、Trankitをインストールします。
Trankitの以前のバージョンは、最近のバージョンの変圧器を使用する際に互換性の問題に遭遇しました。この問題を修正するには、次のようにTrankitの新しいバージョンをインストールしてください。
pip install trankit==1.1.0
インストールで他の問題が発生した場合は、ここで問題を提起してお知らせください。ありがとう。
Trankitは、文とドキュメントの両方のレベルで、okenized(raw)または事前に説明された文字列の入力を処理できます。現在、Trankitは次のタスクをサポートしています。
次のコードは、英語の前提条件のパイプラインを初期化する方法を示しています。 GPUで実行し、前処理されたモデルを自動的にダウンロードし、指定されたキャッシュディレクトリに保存するように指示されます。 Trankitは、既に存在している場合、事前処理されたモデルをダウンロードしません。
from trankit import Pipeline
# initialize a multilingual pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' )前処理されたパイプラインを初期化した後、以下に示すようにすべてのタスクの入力を処理するために使用できます。入力が文の場合、タグis_sent trueに設定する必要があります。
from trankit import Pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' )
######## document-level processing ########
untokenized_doc = '''Hello! This is Trankit.'''
pretokenized_doc = [[ 'Hello' , '!' ], [ 'This' , 'is' , 'Trankit' , '.' ]]
# perform all tasks on the input
processed_doc1 = p ( untokenized_doc )
processed_doc2 = p ( pretokenized_doc )
######## sentence-level processing #######
untokenized_sent = '''This is Trankit.'''
pretokenized_sent = [ 'This' , 'is' , 'Trankit' , '.' ]
# perform all tasks on the input
processed_sent1 = p ( untokenized_sent , is_sent = True )
processed_sent2 = p ( pretokenized_sent , is_sent = True )事後と説明された入力はいつでも処理できますが、アラビア語やフランス語などの複数語のトークン拡張を必要とする言語に事後とされた入力を使用することは正しい方法ではないかもしれません。 Requires MWT expansion?このテーブルでは、特定の言語がマルチワードトークンの拡張を必要とするかどうかを確認します。
より詳細な例については、ドキュメントページをご覧ください。
バージョンv1.0.0から始めて、Trankitは、入力を処理する前にユーザーがアクティブな言語を設定する必要がない便利な自動モードをサポートします。自動モードでは、Trankitは入力の言語を自動的に検出し、対応する言語固有のモデルを使用して、多言語パイプラインの言語間の切り替えを回避します。
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".''' )
# NER tagging a Vietnamese input
vi_output = p . ner ( '''Cuộc tiêm thử nghiệm tiến hành tại Học viện Quân y, Hà Nội''' )この例では、コード名'auto'を使用して、自動モードの多言語パイプラインを初期化します。詳細については、このページをご覧ください。新しいオートモードに加えて、マニュアルモードは以前と同じように使用できることに注意してください。
トレーニングカスタマイズされたパイプラインは、クラスのTPipelineを介してTrankitで簡単です。以下に、カスタマイズされたデータでトークンと文のスプリッターを訓練する方法を示します。
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 ()カスタマイズされたパイプラインをトレーニングとロードするための詳細なガイドラインは、こちらをご覧ください
カスタマイズされたパイプラインを他のユーザーと共有したい場合。ここで問題を作成して、次の情報を提供してください。
このプロジェクトは、IARPA契約No. 2019-19051600006を介して、テキストから強化された検索(より良い)プログラムへのより良い抽出の下で、IARPA契約番号2019-19051600006を介して、Intelligence Intelligence Advanced Research Projects Activity(IARPA)の国家情報部長(ODNI)のオフィスによってサポートされています。
さまざまなタスクや言語の共有多言語エンコーダーとしてXLM-Robertaとアダプターを使用します。 Adapterhubは、アダプターを使用したプラグアンドプレイメカニズムを実装するために使用されます。開発プロセスをスピードアップするために、MWTエキスパンダーとlemmatizerの実装はスタンザから適応します。言語検出モジュールを実装するために、Langidライブラリを活用します。