Filter by دسته‌ها
chatGTP
ابزارهای هوش مصنوعی
اخبار
گزارش
تیتر یک
چندرسانه ای
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
دانش روز
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
رویدادها
کاربردهای هوش مصنوعی
کتابخانه
اشخاص
شرکت‌های هوش مصنوعی
محصولات و مدل‌های هوش مصنوعی
مفاهیم
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
مقاله
 آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ‌فیس؛جمع‌بندی فصل دوم (قسمت‌ششم فصل‌دوم)

آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ‌فیس؛جمع‌بندی فصل دوم (قسمت‌ششم فصل‌دوم)

زمان مطالعه: 3 دقیقه

در این قسمت از آموزش پردازش زبان طبیعی با اکوسیستم هاگینگ فیس به جمع‌بندی فصل دوم خواهیم پرداخت. در چند بخش گذشته، بخش اعظم کارها به صورت دستی انجام شد. نحوه کارکرد توکن‌کننده‌ها، فرایند توکن‌سازی 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://hooshio.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]

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]