آموزش پردازش زبان طبیعی با اکوسیستم هاگینگفیس؛جمعبندی فصل دوم (قسمتششم فصلدوم)
در این قسمت از آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ فیس به جمعبندی فصل دوم خواهیم پرداخت. در چند بخش گذشته، بخش اعظم کارها به صورت دستی انجام شد. نحوه کارکرد توکنکنندهها، فرایند توکنسازی Tokenization تبدیل به شناسههای ورودی input IDs پَدینگ کوتاهسا…
خلاصه تحلیلی خبر
در این قسمت از آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ فیس به جمعبندی فصل دوم خواهیم پرداخت. در چند بخش گذشته، بخش اعظم کارها به صورت دستی انجام شد. نحوه کارکرد توکنکنندهها، فرایند توکنسازی Tokenization تبدیل به شناسههای ورودی input IDs پَدینگ کوتاهسا…
موضوعات اصلی: پشتیبانی شبکه، tokenizer، model_inputs، sequences، HuggingFace، waiting
در این قسمت از آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ فیس به جمعبندی فصل دوم خواهیم پرداخت. در چند بخش گذشته، بخش اعظم کارها به صورت دستی انجام شد. نحوه کارکرد توکنکنندهها، فرایندتوکنسازیTokenizationتبدیل بهشناسههای ورودیinput IDsپَدینگکوتاهسازیTruncationوماسکهای توجهAttention masksنیز به طور جامع توضیح داده شدند. آنطور که در بخش 2 ملاحظه کردید، API ترنسفورمر میتواند با تابع مناسبی کلیه این کارها را مدیریت کند. اگر توکنکننده را به طور مستقیم در جمله فراخوانی کنید، ورودیهایی به دست میآورید که آمادهی انتقال به مدل هستند
from transformers import AutoTokenizer checkpoint = "distilbert-base-uncased-finetuned-sst-2-english" tokenizer = AutoTokenizer.from_pretrained(checkpoint) sequence = "I've been waiting for a HuggingFace course my whole life." model_inputs = tokenizer(sequence)
در اینجا، متغیرmodel_inputsمحتوای لازم برای عملکرد مناسب مدل را دارای میباشد. DistilBERT نیز دربردارندهی شناسههای ورودی و ماسک توجه است. سایر مدلهایی که ورودیهای بیشتری میپذیرند، با شیء توکنکنندهtokenizerبه این خروجی دست خواهند یافت. در مثالهای زیر خواهید دید که این روش از توان بالایی برخوردار است. اول اینکه، امکان توکنسازی یک توالی با این روش وجود دارد
sequence = "I've been waiting for a HuggingFace course my whole life." model_inputs = tokenizer(sequence)
در این روش، چندین توالی به یکباره و بدون تغییرِ API مدیریت میشوند
sequences = [ "I've been waiting for a HuggingFace course my whole life.", "So have I!" ] model_inputs = tokenizer(sequences)
در این روش، عمل پَدینگ بر اساس چندین هدف انجام میگیرد
# توالی ها را به اندازه طولانی ترین توالی پدینگ میکند. model_inputs = tokenizer(sequences, padding="longest") # توالی را تا بالاترین طولی که مدل می تواند پدینگ میکند. # (512 for BERT or DistilBERT) model_inputs = tokenizer(sequences, padding="max_length") # Will pad the sequences up to the specified max length model_inputs = tokenizer(sequences, padding="max_length", max_length=8)
این روش نقش موثری در کوتاهسازی توالیها دارد
sequences = [ "I've been waiting for a HuggingFace course my whole life.", "So have I!" ] # توالی هایی که طول آن ها از طولی که مدل میتواند مدیریت کند بیشتر هست را برش میدهد. # (512 for BERT or DistilBERT) model_inputs = tokenizer(sequences, truncation=True) # توالی هایی که از مقدار مشخص شده طولانی تر باشند را برش میدهد. model_inputs = tokenizer(sequences, max_length=8, truncation=True)
شیء توکنکنندهTokenizer objectمیتواند نقش موثری در عمل تبدیل به تنسورهای چارچوب ویژه داشته باشد که بعدها میتواند به طور مستقیم به مدل ارسال شود. برای نمونه، در نمونه کد زیر، از توکنکننده خواسته میشود تا تنسورهایی را از چارچوبهای مختلف به دست آورد؛“pt”“tf”و“np”به ترتیب تنسورهای پایتورچ، تنسورهای تنسورفلو و آرایههای NumPy را به عنوان خروجی ارائه میدهند
sequences = [ "I've been waiting for a HuggingFace course my whole life.", "So have I!" ] # Returns PyTorch tensors model_inputs = tokenizer(sequences, padding=True, return_tensors="pt") # Returns TensorFlow tensors model_inputs = tokenizer(sequences, padding=True, return_tensors="tf") # Returns NumPy arrays model_inputs = tokenizer(sequences, padding=True, return_tensors="np")
توکنهای ویژه
اگر به شناسههای ورودی به دست آمده با توکنکننده نگاه کنید، میبینید که قدری با آنچه پیشتر به دست آمده بود، فرق دارند
sequence = "I've been waiting for a HuggingFace course my whole life." model_inputs = tokenizer(sequence) print(model_inputs["input_ids"]) tokens = tokenizer.tokenize(sequence) ids = tokenizer.convert_tokens_to_ids(tokens) print(ids) . [101, 1045, 1005, 2310, 2042, 3403, 2005, 1037, 17662, 12172, 2607, 2026, 2878, 2166, 1012, 102] [1045, 1005, 2310, 2042, 3403, 2005, 1037, 17662, 12172, 2607, 2026, 2878, 2166, 1012]
یکشناسه توکنToken IDدر آغاز و یک شناسه در پایان اضافه شده است. بیایید دو توالی شناسه فوق را رمزگشایی کنیم
print(tokenizer.decode(model_inputs["input_ids"])) print(tokenizer.decode(ids)) "[CLS] i've been waiting for a huggingface course my whole life. [SEP]" "i've been waiting for a huggingface course my whole life."
توکنکننده واژه خاص[CLS]را در آغاز و واژه خاص[SEP]را در انتها اضافه کرده استزیرا مدل با این دو مرحله پیشآموزش را پشت سر گذاشته است.بنابراین، برای اینکه نتایج یکسانی برای عملاستنباطinferenceبه دست آید، باید آنها را نیز اضافه کرد. توجه داشته باشید که برخی مدلها واژههای خاص یا متفاوتی اضافه نمیکنند. ممکن است مدلها این واژهها را فقط در آغاز یا پایان کار اضافه کنند. در هر صورت، توکنکننده میداند که کدام موارد مورد نیاز هستند. بنابراین، تدبیری برای این کار اندیشیده خواهد شد.
از توکنکننده به مدل
حال که تمامی مراحل توکنکننده در زمان کار بر روی متون بررسی شده است، بیایید برای آخرین بار به نحوهی مدیریت چندین توالی بسیار طویل و انواع مختلف تنسورها بپردازیم
import tensorflow as tf from transformers import AutoTokenizer, TFAutoModelForSequenceClassification checkpoint = "distilbert-base-uncased-finetuned-sst-2-english" tokenizer = AutoTokenizer.from_pretrained(checkpoint) model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint) sequences = [ "I've been waiting for a HuggingFace course my whole life.", "So have I!" ] tokens = tokenizer(sequences, padding=True, truncation=True, return_tensors="tf") output = model(**tokens)
این قسمت از آموزشپردازش زبان طبیعیبا محوریت جمعبندی فصل دوم به پایان رسید و شما میتوانید از طریق لینک زیر به دیگر قسمتهای این آموزش دسترسی داشته باشید
[button href=”https://XNET.com/%D8%B1%D8%B3%D8%A7%D9%86%D9%87-%D9%87%D8%A7/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B7%D8%A8%DB%8C%D8%B9%DB%8C/” type=”btn-default” size=”btn-lg”]آموزش پردازش زبان طبیعی[/button]
برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.