Transformers documentation
HerBERT
このモデルは2020年5月1日にHF papersで公開され、2020年11月16日にHugging Face Transformersに貢献されました。
HerBERT
概要
HerBERTモデルは、Piotr Rybak、Robert Mroczkowski、Janusz Tracz、Ireneusz Gawlik によって提案された KLEJ: Comprehensive Benchmark for Polish Language Understanding に記載されています。これは、BERTベースの言語モデルであり、ポーランド語コーパスを用いて、単語全体を動的にマスクする MLM 目的関数のみで学習されています。
論文の抄録は以下の通りです。
近年、Transformerベースのモデル群が、汎用自然言語理解(NLU)タスクにおいて大幅な性能向上を実現しました。こうした急速な研究の進展は、提案手法の公平な比較を可能にする汎用NLUベンチマークがあってこそ実現したものです。しかしながら、こうしたベンチマークはごく少数の言語に対してのみ利用可能です。この問題を緩和するため、ポーランド語理解のための包括的なマルチタスクベンチマークと、オンラインリーダーボードを併せて紹介します。本ベンチマークは、名前実体認識、質問応答、テキストエンタイルメントなど、既存のデータセットから採用した多様なタスクで構成されています。また、ECドメイン向けの新しい感情分析タスクであるAllegro Reviews(AR)も紹介します。共通の評価スキームを確保し、異なるNLUタスクに汎化できるモデルを奨励するため、本ベンチマークは異なるドメインやアプリケーションからのデータセットを含んでいます。さらに、ポーランド語に特化して訓練されたTransformerベースのモデルHerBERTを公開します。HerBERTは平均性能が最も高く、9つのタスクのうち3つで最良の結果を達成しています。最後に、いくつかの標準的なベースラインや、最近提案された多言語Transformerベースのモデルを含む、広範な評価を提供します。
このモデルは rmroczkowski によって提供されました。元のコードは こちら で確認できます。
使用例
from transformers import HerbertTokenizer, RobertaModel
tokenizer = HerbertTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
model = RobertaModel.from_pretrained("allegro/herbert-klej-cased-v1", device_map="auto")
encoded_input = tokenizer.encode("Kto ma lepszą sztukę, ma lepszy rząd – to jasne.", return_tensors="pt").to(model.device)
outputs = model(encoded_input)
# HerBERT can also be loaded using AutoTokenizer and AutoModel:
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
model = AutoModel.from_pretrained("allegro/herbert-klej-cased-v1", device_map="auto")Herbertの実装は、トークン化手法を除いて
BERTと同じです。APIの参照と例については、BERTのドキュメントを参照してください。
HerbertTokenizer
クラス transformers.HerbertTokenizer
< source >( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Nonecls_token: str = '<s>'unk_token: str = '<unk>'pad_token: str = '<pad>'mask_token: str = '<mask>'sep_token: str = '</s>'vocab_file: str | None = Nonemerges_file: str | None = None**kwargs )
パラメータ
- vocab_file (
str) — 語彙ファイルへのパス。 - merges_file (
str) — マージファイルへのパス。 - cls_token (
str、任意、デフォルトは"<s>") — 分類用のトークンです。 - unk_token (
str、任意、デフォルトは"<unk>") — 不明トークンです。 - pad_token (
str、任意、デフォルトは"<pad>") — パディングトークンです。 - mask_token (
str、任意、デフォルトは"<mask>") — マスクトークンです。 - sep_token (
str、任意、デフォルトは"</s>") — セパレータートークンです。 - vocab (
str、dictまたはlist、任意) — カスタム語彙辞書。 - merges (
strまたはlist[str]、省略可) — カスタムマージリスト。
HerBERT用のBPEトークナイザーを構築します(HuggingFaceのtokenizersライブラリをバックエンドとして使用)。
特記事項:
- BERTのプリトークナイザーを使用します。BertPreTokenizerはスペースと句読点でトークンを分割します。句読点の各出現箇所は個別に扱われます。
このトークナイザーは、ほとんどのメソッドを含む TokenizersBackend を継承しています。メソッドに関する詳細については、スーパークラスを参照してください。