امبدینگ برداری، شامل امبدینگهای کلمات، یک تکنیک قدرتمند پردازش زبان طبیعی (NLP) هستند که به ماشینها کمک میکند متن را به طور مؤثرتری درک و تفسیر کنند. معرفی نمایشهای کدگذار دوطرفه از ترانسفورمر (BERT) این وظیفه NLP را بیشتر بهبود بخشیده است. توانایی BERT در تفسیر متن به صورت دوطرفه به آن اجازه میدهد تا زمینه کامل یک جمله را درک کند. بنابراین، میتواند حتی تفاوتهای ظریف در معنا را ثبت کند و درک عمیقتری از زبان ارائه دهد. ایجاد امبدینگهای BERT سیستمهای هوش مصنوعی را قادر میسازد تا جنبههای پیچیده زبان را با دقت بالا مدیریت کنند. این آموزش جامع به شما کمک میکند تا درباره امبدینگهای کلمات، BERT و معماری آن، مراحل ایجاد امبدینگهای BERT، و موارد استفاده عملی یاد بگیرید.
کلمه Embedding به چه معناست و چرا اهمیت دارد؟
جاسازی کلمه یک تکنیک NLP است که برای مدلسازی زبان و یادگیری ویژگی استفاده میشود. میتواند بدون نظارت، با نظارت، یا خودنظارتی باشد، بسته به کاربرد خاص. قبل از ایجاد امبدینگهای کلمات، ابتدا باید متن را با شکستن آن به کلمات فردی توکنیزه کنید. هر کلمه سپس به یک مقدار شاخص در یک واژگان از پیش تعریفشده نگاشت میشود. پس از توکنیزه شدن، میتوانید به فرآیند جاسازی کلمه وارد شوید، جایی که باید این کلمات را به بردارهای متراکم، پیوسته از اعداد واقعی تبدیل کنید. در فضای جاسازی کلمه، کلماتی با معانی مشابه نزدیکتر به هم قرار میگیرند. برای مثال، کلمات “king” و “queen” در فضای برداری مشابه خواهند بود و معانی مرتبط خود را منعکس میکنند. این توانایی به مدلهای هوش مصنوعی کمک میکند تا معانی معنایی کلمات را بر اساس زمینه و روابط آنها در یک پیکره بزرگ متن ثبت کنند. جاسازیها چندبعدی هستند، که نشان میدهد آنها ابعاد متفاوتی بسته به پیچیدگی مدل دارند. یک جاسازی ۸ بعدی برای مجموعههای داده کوچک کافی است، در حالی که مجموعههای داده بزرگ ممکن است از امبدینگهایی تا ۱۰۲۴ بعد بهره ببرند. یک جاسازی با بعد بالا روابط دقیقتر بین کلمات را استخراج میکند اما به داده بیشتری برای یادگیری نیاز دارد. یک تصویر ساده از جاسازی کلمه، که هر کلمه را به عنوان یک بردار ۴ بعدی نشان می حاضر:
محبوبترین تکنیکها برای ایجاد Embedding کدامند؟
Word2Vec
Word2Vec یک مدل NLP مبتنی بر شبکه عصبی است که توسط پژوهشگران Google در سال ۲۰۱۳ معرفی شد تا تعبیهسازیهای کلمه ایجاد کند. این مدل یک پیکرهی بزرگ متنی را به عنوان ورودی میگیرد و یک فضای برداری تولید میکند که در آن هر کلمهی منحصربهفرد به یک بردار متناظر اختصاص داده میشود.
مدل Word2Vec از دو نوع معماری استفاده میکند:
Continuous Bag-Of-Words (CBOW)
این معماری شبیه به یک تمرین جایخالی عمل میکند. مدل یاد میگیرد که چگونه یک کلمه بر احتمال ظهور سایر کلمات در یک پنجرهی زمینهی خاص تأثیر میگذارد.
در تصویر زیر، لایهی ورودی شامل کلمات زمینه است و لایهی خروجی کلمهی فعلی را در بر دارد. لایهی پنهان شامل ابعادی است که برای نمایش کلمات در لایهی خروجی مورد استفاده قرار میگیرد.
Continuous Sliding Skip-Gram
در این مدل، کلمهی فعلی برای پیشبینی پنجرهای از کلمات زمینه به کار میرود. معماری Skip-Gram به کلمات زمینهی نزدیکتر نسبت به کلمات دورتر اهمیت بیشتری میدهد.
در تصویر زیر، لایهی ورودی شامل کلمهی فعلی است در حالی که لایهی خروجی شامل کلمات زمینه میباشد. لایهی پنهان شامل ابعادی است که در آن میخواهید کلمهی فعلی در لایهی ورودی نمایش داده شود.
TF-IDF
TF-IDF (Term Frequency–Inverse Document Frequency) یک معیار آماری است که برای محاسبهی اهمیت ریاضی کلمات در اسناد متنی به کار میرود. مقدار TF-IDF به عنوان حاصلضرب دو مؤلفهی TF (فراوانی واژه) و IDF (فراوانی معکوس سند) محاسبه میشود.
- TF: به عنوان نسبت تعداد واژهی هدف در سند به کل تعداد واژههای موجود در آن سند محاسبه میشود.
- IDF: با گرفتن لگاریتم نسبت تعداد کل اسناد به تعداد اسنادی که شامل واژهی هدف هستند محاسبه میشود.
مقدار TF-IDF زمانی افزایش مییابد که یک کلمه در یک سند خاص بیشتر ظاهر شود اما کاهش مییابد وقتی که همان کلمه در اسناد متعدد تکرار شود.
TF-IDF اغلب به عنوان یک عامل وزندهی در بازیابی اطلاعات، کاوش متن و مدلسازی کاربر استفاده میشود.
با وجود سادگی و کارایی، TF-IDF شباهتهای معنایی بین کلمات را در نظر نمیگیرد.
Bag-of-Words
Bag-of-Words (BoW) یک روش نمایش متن است که اسناد متنی را بر اساس فراوانی وقوع کلمات توصیف میکند. این مدل هر کلمه را به طور مستقل در نظر میگیرد و ترتیب کلمات را نادیده میگیرد.
پس از ایجاد واژگان از تمام کلمات موجود در اسناد، میتوان سند را با شمارش تعداد دفعاتی که هر کلمه از واژگان در آن ظاهر شده نمایش داد.
برای مثال، اگر دو جمله داشته باشیم:
“The cat sat on the mat” و “The dog sat on the log”،
واژگان به این صورت خواهند بود:
[“the”, “cat”, “sat”, “on”, “mat”, “dog”, “log”].
هر جمله سپس به صورت یک بردار بر اساس فراوانی کلمات نمایش داده میشود.
در حالی که BoW پیادهسازی سادهای دارد و قابل درک است، اما اطلاعات مربوط به ترتیب و زمینهی کلمات را از دست میدهد، و به همین دلیل در درک روابط معنایی پیچیده مؤثر نیست.
BERT چیست و چگونه کار میکند؟
BERT یکی از مدلهای زبان بزرگ مدرن است که توسط گوگل در سال ۲۰۱۸ توسعه یافته است. BERT از مدل ترانسفورمر به عنوان معماری اصلی خود استفاده میکند و روی مجموعههای داده در مقیاس بزرگ آموزش دیده است. مزیت اصلی BERT نسبت به مدلهای NLP سنتی توانایی آن در درک زمینه با پردازش کلمات در رابطه با تمام کلمات دیگر در یک جمله، به جای یکی یکی به ترتیب است. فرآیند آموزش BERT شامل دو مرحله است: پیشآموزش و تنظیم دقیق. در طول پیشآموزش، BERT از یک پیکره بزرگ متن با پیشبینی کلمات ماسکشده و تعیین اینکه آیا دو جمله یکدیگر را دنبال میکنند، یاد میگیرد. این پیشآموزش به BERT کمک میکند تا درک عمومی از زبان توسعه دهد. در طول تنظیم دقیق، BERT به وظایف خاص مانند تحلیل احساسات یا پاسخ به سؤالات با استفاده از مجموعههای داده خاص وظیفه سازگار میشود. معماری ترانسفورمر به BERT اجازه میدهد تا تمام کلمات در یک جمله را همزمان پردازش کند، که به آن اجازه میدهد روابط بین کلمات را بدون توجه به موقعیت آنها درک کند. این قابلیت پردازش دوطرفه BERT را به ویژه برای ثبت زمینه و تولید امبدینگهای معنادار مؤثر میکند.
معماری BERT
BERT از اجزای کلیدی زیر تشکیل شده است:
۱. Word-piece Tokenization BERT
از توکنیزهسازی WordPiece استفاده میکند، که کلمات را به واحدهای زیرکلمه کوچکتر میشکند. این رویکرد کلمات خارج از واژگان را به طور مؤثر با نشان دادن آنها به عنوان ترکیبهای قطعات زیرکلمه شناختهشده مدیریت میکند. برای مثال، کلمه “unhappiness” ممکن است به [“un”, “##happi”, “##ness”] توکنیزه شود، جایی که “##” ادامه توکن قبلی را نشان میدهد.
۲. Bidirectional Encoder
برخلاف مدلهای سنتی که متن را از چپ به راست یا راست به چپ میخوانند، BERT متن را به صورت دوطرفه پردازش میکند. این به معنای آن است که زمینه چپ و راست هر کلمه را همزمان در نظر میگیرد، که درک جامعتری از معنای کلمه در زمینه ارائه میدهد.
۳. Transformers BERT
با استفاده از کدگذارهای ترانسفورمر ساخته شده است، که از مکانیسمهای خودتوجه برای وزندهی اهمیت کلمات مختلف در یک جمله استفاده میکنند. مکانیسم خودتوجه به BERT اجازه میدهد تا روی کلمات مرتبط هنگام پردازش یک توکن خاص تمرکز کند، که درک زمینه بهتر را امکانپذیر میسازد.
۴. Masked Language Modeling (MLM)
در طول پیشآموزش، BERT برخی کلمات در ورودی را به طور تصادفی ماسک میکند و سعی میکند آنها را بر اساس زمینه اطراف پیشبینی کند. این مدل را مجبور میکند تا درک عمیقی از روابط زبان و زمینه توسعه دهد.
۵. Fine-tuning
پس از پیشآموزش، BERT میتواند برای وظایف پاییندستی خاص با افزودن لایههای خاص وظیفه و آموزش روی دادههای خاص دامنه تنظیم دقیق شود. این رویکرد به BERT اجازه میدهد تا درک عمومی زبان خود را به کاربردهای تخصصی سازگار کند.
چه چیزی باعث میشود BERT برای ایجاد تعبیهسازیهای برداری عالی باشد؟
تعبیهسازی در واقع یک نمایش عددی از ویژگیهای کیفی یا دستهای است — مثلاً گونهی حیوان، ژانر فیلم، یا سمت شغلی کارمند.
تعبیهسازیهای BERT کلمات، عبارات یا حتی جملات کامل را به صورت بردارهای چگال عددی نمایش میدهند که روابط معنایی و زمینهای را در خود دارند.
BERT تعبیهسازیها را از طریق سه نوع نمایش اصلی ایجاد میکند که با هم ترکیب میشوند تا تعبیهی نهایی را شکل دهند:
تعبیهسازیهای توکن (Token Embeddings)
در این بخش، هر توکن در دنبالهی ورودی به یک بردار نمایش نگاشت میشود.
هر توکن (کلمه یا زیرکلمه) دارای بردار تعبیهی منحصربهفرد است که ویژگیهای معنایی پایهی آن را در خود دارد.
این تعبیهسازیها در طی فرآیند پیشآموزش یاد گرفته میشوند و پایهای برای درک هر توکن فراهم میکنند.
تعبیهسازیهای موقعیت (Position Embeddings)
از آنجا که ترنسفورمرها به طور ذاتی ترتیب کلمات را نمیفهمند، تعبیههای موقعیت برای ارائهی اطلاعات مربوط به جایگاه هر توکن در جمله استفاده میشوند.
BERT میتواند دنبالههایی تا ۵۱۲ توکن را پردازش کند، و برای هر موقعیت یک بردار تعبیهی یادگرفتهشده دارد.
این به BERT کمک میکند تا تفاوت میان جملاتی مانند
“Apple eats John” و “John eats Apple”
را درک کند، هرچند هر دو شامل همان کلمات هستند.
تعبیهسازیهای نوع توکن (Token-Type Embeddings)
این تعبیهها برای تفکیک بخشهای مختلف ورودی استفاده میشوند.
وقتی BERT جفت جملهها (مانند پرسش و پاسخ) را پردازش میکند، از تعبیههای نوع توکن استفاده میکند تا بین جملهی اول (بخش A) و جملهی دوم (بخش B) تمایز قائل شود.
این ویژگی برای وظایفی که نیازمند درک روابط میان چند بخش از متن هستند حیاتی است.
لایهی تعبیهی BERT تعبیهی نهایی هر توکن را با جمع سه نوع تعبیه و سپس نرمالسازی مجموع آنها محاسبه میکند.
یک مثال ساده از نحوهی محاسبهی تعبیهها برای عبارت
“hello, world”
در BERT در زیر نشان داده شده است:
تولید تعبیهسازیهای باکیفیت BERT با استفاده از Hugging Face
Hugging Face، یک جامعهی هوش مصنوعی، راهی ساده برای کار با مدلهای BERT مانند Roberta، DistilBERT، BERT-Tiny و غیره فراهم میکند تا بتوانید تعبیههای کلمه ایجاد کنید.
این پلتفرم مدلهای از پیش آموزشدیده و APIهای سادهای ارائه میدهد که فرآیند تولید تعبیههای BERT را بسیار آسان میکنند.
در زیر، یک مثال ساده آورده شده است که تعبیههای BERT را بر اساس جملهی ورودی دادهشده با استفاده از مدل bert-base-cased در Hugging Face ایجاد میکند:
چگونه تعبیهسازی BERT را گام به گام پیادهسازی کنید؟
اینجا مراحل دقیق برای پیادهسازی مدل BERT برای ایجاد جاسازیها هستند:
۱. Google Colab را راهاندازی کنید و روی File > New notebook in Drive کلیک کنید.
۲. ماژول transformers را با استفاده از دستور pip نصب کنید:
!pip install transformers
۳. کتابخانههای پایتون زیر را وارد کنید.
import random
import torch
from transformers import BertTokenizer, BertModel
from sklearn.metrics.pairwise import cosine_similarity
۴. کد زیر را وارد کنید تا seed تصادفی برای PyTorch را برای دستیابی به تکرارپذیری بالا و مدیریت تصادفی GPU اولیهسازی کنید.
RandomSeed = 52
random.seed(RandomSeed)
torch.manual_seed(RandomSeed)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(RandomSeed)
۵. سپس، مدل پیشآموزشدیده BERT و توکنایزر را بارگیری کنید. اینجا، از مدل “bert-base-uncased” استفاده کنیم، که تمام کاراکترهای بزرگ در متن را به حروف کوچک تبدیل میکند.
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')
۶. حالا، یک دنباله ورودی در نظر بگیرید و آن را با استفاده از توکنایزر BERT توکنیزه کنید. این توکنهای کلمه یا زیرکلمه را به شناسههای منحصر به فرد با استفاده از batch_encode_plus() کدگذاری میکند. همچنین میتوانید توکنهای ویژه مانند CLS و SEP را با تنظیم پارامتر add_special_tokens به True اضافه کنید.
text = "This is a computer science portal"
encoding = tokenizer.batch_encode_plus(
[text],
padding=True,
truncation=True,
return_tensors='pt',
add_special_tokens=True
)
token_ids = encoding['input_ids']
print(f"Token IDs: {token_ids}")
attention_mask = encoding['attention_mask']
print(f"Attention Mask: {attention_mask}")
پس از اجرای کد بالا، خروجی زیر را دریافت خواهید کرد: برای هر توکن، مقدار توجه ۱ است، که نشان میدهد مدل BERT کل دنباله ورودی را هنگام تولید جاسازیها در نظر میگیرد. دستیابی به امتیاز توجه ۱ خوب است زیرا تضمین میکند که مدل تمام اطلاعات زمینهای را ثبت کند. با این حال، امتیاز توجه ممکن است اگر متن ورودی بسیار طولانی باشد کاهش یابد. در این مورد، تمام توکنها توجه کامل دریافت میکنند،
۷. در این گام، باید توکنها و ورودی کدگذاریشده را از طریق مدل BERT به جلو بفرستید تا جاسازیها برای هر توکن تولید شود.
with torch.no_grad():
outputs = model(input_ids, attention_mask=attention_mask)
word_embeddings = outputs.last_hidden_state
print(f"Word Embeddings Shape: {word_embeddings.shape}")
پس از اجرای کد بالا، میتوانید شکل فضای جاسازی تولیدشده را به صورت زیر ببینید: شکل امبدینگهای کلمات [۱, ۱۲, ۷۶۸] است، جایی که ۷۶۸ بعد یا اندازه مخفی امبدینگهای تولیدشده توسط مدل BERT را نشان میدهد. اینجا، هر توکن به عنوان یک بردار ۷۶۸ بعدی کدگذاری میشود. عدد ۱۲ با کل تعداد توکنها در متن ورودی پس از توکنیزهسازی مطابقت دارد. ۱ بعد batch را نشان میدهد، که تعداد جملات پردازششده را نشان میدهد.
۸. میتوانید جاسازیها را با دیکد کردن شناسههای توکن به متن با استفاده از قطعه کد زیر تأیید کنید:
decodedText = tokenizer.decode(token_ids[0], skip_special_tokens=True)
print(f"Decoded Text: {decodedText}")
tokenizedText = tokenizer.tokenize(decodedText)
print(f"Tokenized Text: {tokenizedText}")
encodedText = tokenizer.encode(text, return_tensors='pt')
print(f"Encoded Text: {encodedText}")
اینجا متن دیکدشده است:
۹. در نهایت میتوانید امبدینگهای کلمات تولیدشده توسط BERT را استخراج و چاپ کنید با استفاده از این کد پایتون:
for token, embedding in zip(tokenized_text, word_embeddings[0]):
print(f"Word Embeddings are: {embedding}")
print("\n")
موارد استفاده از عملیترین تعبیهسازی BERT چیست؟
طبقهبندی متن امبدینگهای BERT در وظایف طبقهبندی متن برتر هستند با ثبت ظرایف معنایی که روشهای سنتی از دست میدهند. درک زمینهای به مدلها اجازه میدهد بین تفاوتهای ظریف در معنا تمایز قائل شوند، که BERT را به ویژه برای تحلیل احساسات، طبقهبندی موضوع، و دستهبندی محتوا مؤثر میکند. سازمانها از امبدینگهای BERT برای طبقهبندی خودکار بازخورد مشتریان، دستهبندی تیکتهای پشتیبانی، و تحلیل احساسات رسانههای اجتماعی با دقت بالا استفاده میکنند.
تشخیص موجودیتهای نامدار (NER) تشخیص موجودیتهای نامدار به طور قابل توجهی از امبدینگهای زمینهای BERT بهره میبرد زیرا مدل میتواند بین استفادههای مختلف از یک کلمه یکسان بر اساس زمینه تمایز قائل شود. برای مثال، “Apple” شرکت در مقابل “apple” میوه میتواند بر اساس کلمات اطراف به درستی شناسایی شود. امبدینگهای BERT اطلاعات زمینهای غنی ارائه میدهند که به مدلهای NER کمک میکند عملکرد برتر در شناسایی افراد، سازمانها، مکانها، و موجودیتهای دیگر در متن دستیابی کند.
سیستمهای پاسخ به سؤالات امبدینگهای BERT سیستمهای پاسخ به سؤالات پیچیده را قدرت میبخشند با درک رابطه معنایی بین سؤالات و پاسخهای بالقوه. زمینه دوطرفه به BERT اجازه میدهد سؤالات پیچیده را درک کند و اطلاعات مرتبط را در گذرهای متنی بزرگ شناسایی کند. بسیاری از چتباتهای مدرن و دستیاران مجازی از امبدینگهای BERT برای ارائه پاسخهای دقیقتر و مناسب زمینهای استفاده میکنند.
سیستمهای توصیه سیستمهای توصیه مدرن از امبدینگهای BERT برای درک ترجیحات کاربر و شباهت محتوا در سطح معنایی عمیقتر استفاده میکنند. با جاسازی بررسیهای کاربر، توصیفات محصول، و رفتار مرور، موتورهای توصیه میتوانند الگوهای ترجیح ظریف را شناسایی کنند و اقلام مرتبط را حتی زمانی که کلمات کلیدی صریح مطابقت ندارند پیشنهاد دهند. این رویکرد فیلترینگ مبتنی بر محتوا پیچیدهتر و استراتژیهای توصیه ترکیبی را امکانپذیر میسازد.
نتیجهگیری
امبدینگهای BERT یک تکنیک قدرتمند هستند که به ماشینها اجازه میدهند زبان طبیعی را درک، تفسیر، و پردازش کنند. امبدینگهای زمینهای BERT معانی پیچیده و روابط بین کلمات را با طبیعت دوطرفه آموزش مدل استخراج میکنند. با بهرهبرداری از مدلهای پیشآموزشدیده BERT و تنظیم دقیق آنها روی وظایف خاص، میتوانید بهبودهای قابل توجهی در کاربردهای مبتنی بر هوش مصنوعی دستیابی کنید. Hugging Face مدلهای پایه BERT و چندزبانه مختلف برای تولید جاسازیها ارائه میدهد. برای امتحان خودتان با برنامهنویسی پایتون، راهنمای گام به گام outlined در این مقاله را دنبال کنید.
سؤالات متداول
آیا میتوان از BERT برای جاسازی استفاده کرد؟
بله، BERT میتواند برای ایجاد جاسازیها استفاده شود. BERT امبدینگهای کلمات زمینهای تولید میکند که معنای کلمات را بر اساس زمینه اطراف آنها ثبت میکنند. برخلاف امبدینگهای استاتیک مانند Word2Vec، امبدینگهای BERT بر اساس زمینهای که کلمات در آن ظاهر میشوند تغییر میکنند، که آنها را برای درک ظرایف زبان دقیقتر میکند.
اندازه بردار جاسازی BERT چیست؟
اندازه امبدینگهای BERT بسته به واریانت مدل متفاوت است. BERT-Base امبدینگهای ۷۶۸ بعدی تولید میکند، در حالی که BERT-Large امبدینگهای ۱۰۲۴ بعدی تولید میکند. واریانتهای کوچکتر مانند DistilBERT معمولاً امبدینگهای ۷۶۸ بعدی تولید میکنند اما با نیازهای محاسباتی کاهشیافته.
تفاوت بین BERT و word-to-vector چیست؟
BERT امبدینگهای زمینهای با استفاده از معماری ترانسفورمر عمیق تولید میکند، به معنای آن که کلمه یکسان امبدینگ متفاوتی بر اساس زمینهاش دریافت میکند. Word2Vec امبدینگهای استاتیک ایجاد میکند که در آن هر کلمه یک نمایندگی برداری ثابت بدون توجه به زمینه دارد. BERT زمینه دوطرفه را ثبت میکند، در حالی که Word2Vec زمینه را در یک پنجره ثابت اطراف هر کلمه پردازش میکند.
مزایای امبدینگهای BERT چیست؟
- برخلاف مدلهای سنتی که متن را یکطرفه میخوانند، BERT در هر دو جهت میخواند، که درک زمینه کامل ارائه میدهد.
- امبدینگهای BERT میتوانند برای انواع وظایف NLP تنظیم دقیق شوند، که آنها را برای نیازها و دامنههای خاص سازگار میکند.
- امبدینگهای کلمات BERT به ماشینها کمک میکنند ظرایف و معانی مختلف کلمات را بسته به زمینهشان ثبت کنند.
آیا میتوان از BERT برای مدلسازی موضوع استفاده کرد؟
بله، BERTopic یک تکنیک مدلسازی موضوع است که از امبدینگهای BERT برای ایجاد نمایندگیهای موضوع معنایی معنادارتر استفاده میکند. BERTopic امبدینگهای BERT را با الگوریتمهای خوشهبندی و TF-IDF مبتنی بر کلاس ترکیب میکند تا موضوعات منسجم و قابل تفسیر از مجموعههای اسناد تولید کند.
لایه جاسازی BERT چیست؟
لایه جاسازی BERT به لایههای اولیه مدل BERT اشاره دارد که مسئول تبدیل توکنهای ورودی به نمایندگیهای برداری پیوسته هستند. این لایه امبدینگهای توکن، امبدینگهای موقعیت، و امبدینگهای نوع توکن را ترکیب میکند تا نمایندگیهای ورودی ایجاد کند که توسط لایههای ترانسفورمر پردازش میشوند.




