HuggingFace 'BertTokenizerFast.from_pretrained (' बर्ट-बेस-अनजेड ') काम में अधिकतम_लाग, पेडिंग और ट्रंकेशन तर्क कैसे काम करता है ??

Dec 11 2020

मैं टेक्स्ट वर्गीकरण समस्या के साथ काम कर रहा हूं जहां मैं 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 तीसरे वाक्य में 1 का पैडिंग जोड़ देगा
  3. 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'])

जवाब

1 AshwinGeetD'Sa Dec 11 2020 at 23:58

आपने जो ग्रहण किया है वह लगभग सही है, हालांकि, कुछ अंतर हैं।

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_length10. का है तो टोकन टेक्स्ट से मेल खाता है [101, 2026, 2171, 2003, 11754, 102, 0, 0, 0, 0], जहाँ 101 की आईडी है [CLS]और 102 [SEP]टोकन की आईडी है । इस प्रकार, सभी पाठ को लंबाई तक बनाने के लिए शून्य द्वारा गद्देदारmax_length

इसी तरह, truncate=Trueयह सुनिश्चित करेगा कि max_length का कड़ाई से पालन किया जाता है, अर्थात, लंबे वाक्यों को max_lengthकेवल यदिtruncate=True