Transformers documentation
PhoBERT
このモデルは2020年3月2日にHF papersで公開され、2020年11月16日にHugging Face Transformersに貢献されました。
PhoBERT
概要
PhoBERTモデルは、Dat Quoc NguyenとAnh Tuan NguyenによるPhoBERT: Pre-trained language models for Vietnameseで提案されました。
論文の抄録は以下の通りです。
ベトナム語向けの最初の公開大規模単一言語モデルである PhoBERT-base と PhoBERT-large の2つのバージョンを提示します。実験結果により、PhoBERT は最近の最良の事前学習多言語モデルである XLM-R (Conneau et al., 2020) を一貫して上回り、品詞付与、依存構文解析、固有表現認識、自然言語推論を含む複数のベトナム語固有の NLP タスクにおいて、最先端の性能を向上させることが示されました。
このモデルはdqnguyenによって提供されました。元のコードはこちらで確認できます。
使用例
import torch
from transformers import AutoModel, AutoTokenizer
phobert = AutoModel.from_pretrained("vinai/phobert-base", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base")
# INPUT TEXT MUST BE ALREADY WORD-SEGMENTED!
line = "Tôi là sinh_viên trường đại_học Công_nghệ ."
input_ids = torch.tensor([tokenizer.encode(line)])
with torch.no_grad():
features = phobert(input_ids) # Models outputs are now tuplesPhoBERTの実装はトークナイゼーションを除きBERTと同一です。設定クラスとそのパラメータに関する情報は、BERTのドキュメントを参照してください。PhoBERT固有のトークナイザーについては以下に説明します。
PhobertTokenizer
クラス transformers.PhobertTokenizer
< source >( vocab_filemerges_filebos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'**kwargs )
パラメータ
- vocab_file (
str) — 語彙ファイルへのパス。 - merges_file (
str) — マージファイルへのパス。 - bos_token (
str, 省略可, デフォルトは"<s>") — 事前学習時に使用されたシーケンス開始トークン。シーケンス分類器のトークンとしても使用できます。特殊トークンを用いてシーケンスを構築する場合、シーケンスの先頭に使用されるのはこのトークンではありません。使用されるのは
cls_tokenです。 - eos_token (
str, 省略可, デフォルトは"</s>") — シーケンスの終了トークンです。特殊トークンを用いてシーケンスを構築する場合、シーケンスの終了に使用されるのはこのトークンではありません。 使用されるのは
sep_tokenです。 - sep_token (
str、任意、デフォルトは"</s>") — 区切りトークンです。複数のシーケンスからシーケンスを構築する際に使用されます。例えば、シーケンス分類では2つのシーケンス、質問応答ではテキストと質問です。また、特殊トークンを用いて構築されたシーケンスの最後のトークンとしても使用されます。 - cls_token (
str、任意、デフォルトは"<s>") — シーケンス分類(トークンごとの分類ではなく、シーケンス全体の分類)を行う際に使用される分類トークンです。特殊トークンを用いて構築された場合、シーケンスの最初のトークンになります。 - unk_token (
str、任意、デフォルトは"<unk>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。 - pad_token (
str、任意、デフォルトは"<pad>") — パディングに使用されるトークンです。例えば、長さが異なるシーケンスをバッチ処理する際に使用します。 - mask_token (
str、任意、デフォルトは"<mask>") — 値をマスクするために使用されるトークンです。これは、マスク言語モデリングでこのモデルを学習する際に使用されるトークンです。モデルが予測しようとするトークンです。
Byte-Pair-Encoding に基づく PhoBERT トークナイザーを構築します。
このトークナイザーは、PreTrainedTokenizer を継承しており、主要なメソッドのほとんどが含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。
テキストファイルから既存の辞書を読み込み、そのシンボルをこのインスタンスに追加します。
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
パラメータ
- token_ids_0 (
list[int]) — 特殊トークンが追加されるIDのリストです。 - token_ids_1 (
list[int]、省略可) — シーケンスペア用の第2のIDリスト(任意)。
戻り値
list[int]
適切な特殊トークンを含む入力 IDのリスト。
シーケンス分類タスクにおいて、シーケンスまたはシーケンスのペアからモデルの入力を構築するには、連結して特殊トークンを追加します。PhoBERTのシーケンスは、次の形式を持ちます:
- 単一シーケンス:
<s> X </s> - シーケンスのペア:
<s> A </s></s> B </s>
単一の文字列内のトークン(文字列)のシーケンスに変換します。
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
シーケンスペア分類タスクで使用するために、渡された2つのシーケンスからマスクを作成します。PhoBERTはトークンタイプIDを使用しないため、ゼロのリストが返されます。
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]
特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。このメソッドは、トークナイザーのprepare_for_modelメソッドを使用して特殊トークンを追加する際に呼び出されます。