پردازش زبان طبیعی (NLP) یه حوزه عالی در یادگیری ماشین هست که برای کار با زبانهای مختلف مورداستفاده قرار میگیره. بااینحال، مطمئناً دیدید که همه تسک های مختلف NLP رو فقط با زبان انگلیسی پیادهسازی میکنن. پس، با توجه به اینکه علاوه بر انگلیسی، زبانهای زیاد دیگری هم در دنیا وجود دارند، پس در مورد اونها باید چیکار کنیم؟ تو این مقاله، راهنماییهای لازم در مورد NLP با زبانهای دیگه رو در اختیار شما عزیزان قرار میدیم.
تقریباً همه میدونن که هند یه کشور بسیار متنوعه و زبانهای زیادی بین هندیها رواج داره. آیا میدونستید که مردم هند به ۷۸۰ زبان مختلف صحبت میکنن؟ وقتی صحبت از NLP هست دیگ زمان اون رسیده که فراتر از زبان انگلیسی بریم. این مقاله برای افرادیه که اطلاعات پایهای در مورد NLP دارن و میخوان از NLP برای پیادهسازی تسک هایی با زبانهای دیگه استفاده کنن.
NLP برای زبانهای دیگر
قبل از اینکه وارد مرحله پیادهسازی NLP برای زبانهای دیگه بشیم، بهتره یه نگاهی بندازیم به برخی از مفاهیم اساسی و دستاوردها در حوزه NLP.
NLP به کامپیوترها کمک میکنه که زبان انسان رو درک کنند. طبقه بندی متون، استخراج اطلاعات، تحلیل معنایی، پاسخ به سؤالات، ترکیب متن، ترجمه ماشینی و چت بات ها از جمله اپلیکیشن های مهم NLP هستن.
برای اینکه کامپیوتر بتونه زبان انسان رو درک کنه، اول باید کلمات رو بهصورت دیجیتال نشون بدیم. بعداً میتونیم توسط مدلهای یادگیری ماشین از همین کلمات دیجیتالی برای انجام تسک های مختلف در NLP استفاده کنیم. متدهای سنتی مثل One Hot Encoding و TF-IDF Representation برای توصیف متن به عنوان دادههای عددی استفاده میشدن ولی این روشهای سنتی به خاطر عدم درک معنی کلمات به یه نتیجه با نمایش پراکنده منجر میشدن.
بعداً، Neural Word Embedding با حل یه سری از مشکلات مربوط به متدهای سنتی به کمک اونها اومد. Word2Vec و GloVe دو عنصر پرکاربرد word embedding هستند. این متدها، منجر به این میشن که بازنمایی یا representation کلمات حالت متراکمتری داشته باشه و مفهوم و معنی کلمات مشابه، representation مشابهی هم داشته باشه.
نکته ضعف مهم این متد اینه که کلمات فقط دارای یه معنی و مفهوم هستن؛ ولی همه ما میدونیم که یک کلمه میتونه در داخل جملهها و زمینههای مختلف معنی متفاوتی داشته باشه و صرفاً اگه بیاییم برای هر کلمه یه معنی رو در نظر بگیریم، بعداً دچار مشکل میشیم. NLP در خانواده مدلهای زبان دچار پیشرفتهای زیادی شده. پیوستگی کلمات از زمینه مستقل نیست. یک کلمه بسته به زمینهای که در اون استفاده شده، میتونه چندین بازنمایی دیجیتالی داشته باشه. در حال حاضر BERT، Elmo، ULMFit و GPT-2 محبوبترین مدلهای زبان هستن. نتایج اخیر مربوط به این مدلها بسیار خوبه و حتی باعث شده که بعضیا اونها رو خطرناک بدونن. حتی خوانندگان، اطلاعات نوشته شده توسط این مدلهای زبانی رو به عنوان نیویورک تایمز معتبر در نظر گرفتن.
مرحله پیادهسازی NLP برای زبانهای دیگر
حالا وقتشه که وارد مرحله عملیاتی بشیم و تو این مرحله تسک NLP برای زبانهای دیگه رو با ادغام کلمات مربوط به زبانهای هندی پیش میبریم. بازنمایی دیجیتالی کلمات در هر تسک از NLP نقش داره. ما قصد داریم که تو این تسک از کتابخونه iNLTK (Natural Language Toolkit for Indic Languages) استفاده کنیم. شما بهراحتی میتونین دستور زیر روز در CMD وارد و این کتابخونه رو بهراحتی نصب کنین:
pip install inltk
زبانهای ارائهشده توسط این کتابخونه در تصویر زیر نشون داده شدن:
با استفاده از کتابخونه iNLTK خیلی سریع میتونیم بردارهای embedding رو برای جملههای نوشته شده به زبان هندی نشون بدیم. در ادامه مثالی وجود داره که نحوه به دست آوردن بردارهای ادغام رو برای جملههای نوشته شده به زبان هندی نشون میده.
نحوه کار به این صورته که جمله داده شده به توکن ها تقسیم میشه و هر توکن با استفاده از یه بردار نشون داده میشه. یه توکن میتونه یه کلمه باشه یا یه بخشی از کلمه مثل پسوند و پیشوند. همچنین، میتونیم برای کلمات نادر و کمیاب، بردار بازنمایی یا representation معناداری به دست بیاریم.
حالا بیایید ببینیم که چجوری میتونیم از این کتابخونه برای NLP زبانهای دیگه استفاده کنیم:
from inltk.inltk import setup
from inltk.inltk import tokenize
from inltk.inltk import get_embedding_vectors
setup('hi')
example_sent = "बहुत समय से मिले नहीं"
# Tokenize the sentence
example_sent_tokens = tokenize(example_sent,'hi')
# Get the embedding vector for each token
example_sent_vectors = get_embedding_vectors(example_sent, 'hi')
print("Tokens:", example_sent_tokens)
print("Number of vectors:", len(example_sent_vectors))
print("Shape of each vector:", len(example_sent_vectors[0]))
خروجی مربوط به این کد، word embedding های مربوط به یه جمله هندی هست.
تسک های NLP چندگانه برای زبانهای هندی
مدلهای یادگیری ماشین میتونن از زبان طبیعی نمایش عددی برای انجام بسیاری از تسک های NLP استفاده کنن. حالا جدا از این، ما میتونیم از کتابخونه iNLTK برای تکمیل تسک های NLP زیادی استفاده کنیم.
در مثال زیر، از iNLTK برای پیشبینی n کلمه بعدی و دستیابی به جملههای مشابه استفاده میکنیم. برای جمله “It’s been a while since we last met” به زبان تمیل، “And, because of this” رو به عنوان پیشبینی n کلمه بعدی به دست میاریم و نتایج حاصل برای جمله مشابه هم جالبه:
from inltk.inltk import setup
from inltk.inltk import predict_next_words
from inltk.inltk import get_similar_sentences
setup('ta')
example_sent = "உங்களைப் பார்த்து நிறைய நாட்கள் ஆகிவிட்டது"
# Predict next 'n' tokens
n = 5
pred_sent = predict_next_words(example_sent, n, 'ta')
# Get 'n' similar sentence
n = 2
simi_sent = get_similar_sentences(example_sent, n, 'ta')
print("Predicted Words:", pred_sent)
print("Similar Sentences:", simi_sent)
خروجی و ورودی این کد به زبان تمیل هست ولی ترجمه این جملهها و کلمهها به فارسی میتونه درک میزان درستی نتیجه رو راحتتر کنه:
متن ورودی:
உங்களைப் பார்த்து நிறைய நாட்கள் ஆகிவிட்டது
روزهای زیادی است که از شما مراقبت میکنم.
خروجی مربوط به پیشبینی n کلمه بعدی که در این کد n=5 هست:
உங்களைப் பார்த்து நிறைய நாட்கள் ஆகிவிட்டது. மேலும், இதற்கு காரணமாக
روزهای زیادی است که از شما مراقبت میکنم. و، به همین خاطر
خروجی مربوط به n جمله مشابه که در این کد n=2 هست:
உங்களைத் பார்த்து நாட்கள் ஆகிவிட்டது
(۱) چند روزی است که از شما مراقبت میکنم.
உங்களைப் பார்த்து ஏராளமான நாட்கள் ஆகிவிட்டது
(۲) مدت زیادی است که مراقب شما هستم.
حالت وقت این رسیده که محدود به زبان انگلیسی نباشیم و از قدرت واقعی NLP برای پیادهسازی تسک های مختلف با زبانهای دیگر استفاده کنیم. بسیاری از تحقیقات مبتنی بر NLP اخیر روی ویژگی چند زبانه بودن تمرکز داشتن.
پس بهاینترتیب می تونیم از NLP برای پردازش طبیعی زبانهای دیگه هم استفاده کنیم. امیدواریم که از این مقاله لذت برده باشین و آشنایی با نحوه استفاده از زبانهای دیگ برای پیادهسازی تسک های NLP مختلف براتون مفید واقع بشه.
برای هرگونه سوال در زمینه آموزش ها فقط کافیه روی لینک واتساپ یا تلگرام (در زیر همین پست) کلیک کنید. یا با شماره تماس بالای صفحه سایت تماس بگیرید.