HuggingFace 'BertTokenizerFast.from_pretrained (' bert-base-uncased ') içinde max_length, padding ve truncation argümanları nasıl çalışır?

Dec 11 2020

BERT modelini temel ve ardından Yoğun katmanlar olarak kullanmak istediğim yerde Metin Sınıflandırma problemi ile çalışıyorum. 3 argümanın nasıl çalıştığını bilmek istiyorum. Örneğin, şu şekilde 3 cümle varsa:

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

Öyleyse bu 3 argüman ne yapacak? Düşündüğüm şey şu:

  1. max_length=5 uzunluğu 5 olan tüm cümleleri kesinlikle saklayacaktır
  2. padding=max_length üçüncü cümleye 1 dolgu ekleyecektir
  3. truncate=True uzunlukları kesinlikle 5 olacak şekilde birinci ve ikinci cümleyi kısaltacaktır.

Yanılıyorsam beni duzelt lutfen.

Aşağıda kullandığım kodum var.

! 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'])

Yanıtlar

1 AshwinGeetD'Sa Dec 11 2020 at 23:58

Varsaydığın şey neredeyse doğru, ancak çok az fark var.

max_length=5, max_length belirteçli metnin uzunluğunu belirtir . Varsayılan olarak, BERT sözcük parçası belirteçleme gerçekleştirir. Örneğin, "oynama" kelimesi "oyun" ve "## ing" olarak ikiye ayrılabilir (Bu çok kesin olmayabilir, ancak yalnızca kelime parçasının jetonlaştırmayı anlamanıza yardımcı olması için) ve ardından [CLS], cümlenin [SEP]sonunda cümle ve belirteç. Böylece, önce cümleyi simge haline getirir , max_length-2(eğer truncation=True) şeklinde kısaltır , sonra [CLS]başlangıca ve [SEP]sonuna jeton ekler . (Yani toplam uzunluk max_length)

padding='max_length'Bu örnekte, uzunluk aşıyor olarak 3, örneğin, doldurulacaktır çok belirgin değildir 5ekleme sonra [CLS]ve [SEP]belirteçleri. Bununla birlikte, max_length10'a sahipseniz , simge haline getirilmiş metin karşılık gelir [101, 2026, 2171, 2003, 11754, 102, 0, 0, 0, 0]; burada 101 kimliği [CLS]ve 102 [SEP]simge kimliği'dir. Böylelikle, tüm metni şu uzunlukta yapmak için sıfırlarla doldurulmuşturmax_length

Aynı şekilde, truncate=Truemaks_uzunluğa kesinlikle bağlı kalmasını sağlar, yani daha uzun cümlelerin max_lengthyalnızca aşağıdaki durumlarda kısaltılmasını sağlar:truncate=True