HuggingFace 'BertTokenizerFast.from_pretrained (' bert-base-uncased ') içinde max_length, padding ve truncation argümanları nasıl çalışır?
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:
max_length=5uzunluğu 5 olan tüm cümleleri kesinlikle saklayacaktırpadding=max_lengthüçüncü cümleye 1 dolgu ekleyecektirtruncate=Trueuzunlukları 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
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