私はテキスト分類の問題に取り組んでおり、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つの引数は何をするのでしょうか?私が思うのは次のとおりです。
max_length=5
長さ5のすべての文を厳密に保持しますpadding=max_length
3番目の文に1のパディングを追加します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'])
あなたが仮定したことはほぼ正しいですが、いくつかの違いがあります。
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=True
max_lengthが厳密に守られていることを確認します。つまり、長い文は次のmax_length
場合にのみ切り捨てられます。truncate=True
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加