HuggingFaceのBertTokenizerFast.from_pretrained( 'bert-base-uncased')でmax_length、padding、およびtruncation引数はどのように機能しますか?

デッシュウォール

私はテキスト分類の問題に取り組んでおり、BERTモデルをベースとして使用し、その後に高密度レイヤーを使用します。3つの引数がどのように機能するのか知りたいですか?たとえば、次のように3つの文がある場合:

'My name is slim shade and I am an aspiring AI Engineer',
'I am an aspiring AI Engineer',
'My name is Slim'

では、これらの3つの引数は何をするのでしょうか?私が思うのは次のとおりです。

  1. max_length=5 長さ5のすべての文を厳密に保持します
  2. padding=max_length 3番目の文に1のパディングを追加します
  3. truncate=True 長さが厳密に5になるように、最初と2番目の文を切り捨てます。

私が間違っている場合は私を訂正してください。

以下は私が使用した私のコードです。

! pip install transformers==3.5.1

from transformers import BertTokenizerFast

tokenizer = BertTokenizerFast.from_pretrained('bert-base-uncased')

tokens = tokenizer.batch_encode_plus(text,max_length=5,padding='max_length', truncation=True)
  
text_seq = torch.tensor(tokens['input_ids'])
text_mask = torch.tensor(tokens['attention_mask'])
Ashwin Geet D'Sa

あなたが仮定したことはほぼ正しいですが、いくつかの違いがあります。

max_length=5、はトークン化されたテキストの長さをmax_length 指定ますデフォルトでは、BERTはワードピーストークン化を実行します。たとえば、「playing」という単語は「play」と「## ing」に分割でき(これはあまり正確ではないかもしれませんが、単語の断片化について理解するのに役立ちます)、その後に[CLS]トークンを追加します。文、および文末の[SEP]トークン。したがって、最初に文をトークン化し、max_length-2(if truncation=True)に切り捨ててから[CLS]、最初に先頭に[SEP]追加し、最後にトークンを追加ます(したがって、全長はmax_length

padding='max_length'、この例では5、追加[CLS][SEP]トークンの後に長さが超過するため、3番目の例がパディングされることはあまり明白ではありませんただし、max_lengthが10の場合、トークン化されたテキストはに対応します。ここ[101, 2026, 2171, 2003, 11754, 102, 0, 0, 0, 0]で、101はのID [CLS]、102は[SEP]トークンのIDですしたがって、すべてのテキストを次の長さにするためにゼロが埋め込まれますmax_length

同様に、truncate=Truemax_lengthが厳密に守られていることを確認します。つまり、長い文は次のmax_length場合のみ切り捨てられます。truncate=True

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ