HuggingFace 'BertTokenizerFast.from_pretrained (' बर्ट-बेस-अनजेड ') काम में अधिकतम_लाग, पेडिंग और ट्रंकेशन तर्क कैसे काम करता है ??
मैं टेक्स्ट वर्गीकरण समस्या के साथ काम कर रहा हूं जहां मैं 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
तीसरे वाक्य में 1 का पैडिंग जोड़ देगाtruncate=True
पहले और दूसरे वाक्य को काट देगा ताकि उनकी लंबाई सख्ती से 5 हो जाए।
यदि मैं गलत हूं तो मुझे बताएं।
नीचे मेरा कोड है जो मैंने उपयोग किया है।
! 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 वर्ड-पीस टोकनेशन करता है। उदाहरण के लिए "प्लेइंग" शब्द को "प्ले" और "## आईएनजी" में विभाजित किया जा सकता है (यह बहुत सटीक नहीं हो सकता है, लेकिन सिर्फ शब्द-टुकड़े [CLS]
टोकन के बारे में समझने में आपकी मदद करने के लिए), इसके बाद शुरुआत में टोकन जोड़कर वाक्य, और वाक्य [SEP]
के अंत में टोकन। इस प्रकार, यह पहले वाक्य को टोकन करता है, इसे max_length-2
(यदि truncation=True
) को काट देता है , तो [CLS]
शुरुआत में और [SEP]
अंत में टोकन को छोड़ दें। (तो कुल लंबाई max_length
)
padding='max_length'
, इस उदाहरण में यह बहुत स्पष्ट नहीं है कि 3 उदाहरण को गद्देदार किया जाएगा, क्योंकि लंबाई 5
जोड़ [CLS]
और [SEP]
टोकन के बाद अधिक हो जाती है । हालाँकि, यदि आपके पास max_length
10. का है तो टोकन टेक्स्ट से मेल खाता है [101, 2026, 2171, 2003, 11754, 102, 0, 0, 0, 0]
, जहाँ 101 की आईडी है [CLS]
और 102 [SEP]
टोकन की आईडी है । इस प्रकार, सभी पाठ को लंबाई तक बनाने के लिए शून्य द्वारा गद्देदारmax_length
इसी तरह, truncate=True
यह सुनिश्चित करेगा कि max_length का कड़ाई से पालन किया जाता है, अर्थात, लंबे वाक्यों को max_length
केवल यदिtruncate=True