n-gram و کاربرد آن در متن‌کاوی

مقدمه

سبه عنوان مقدمه جهت ورود به مدل های موجود برای زبان های طبیعی، ابتدا باید گفت که در هر شبیه سازی و حل مسئله، یک مدل سازی اولیه لازم است. بسیاری از این مدل ها، از یک پس زمینه ریاضی برخوردار هستند؛ مانند گراف، احتمالات و … . مدل N-Gram یکی از این مدل هاست. در این مدل، از آمار کلاسیک و احتمال بهره گرفته شده است. فرض کنید هر کدام از Nodeها را به صورت یک رأس در گراف هستند که می تواند به رأس دیگری یال جهت دار داشته باشد. این یال جهت دار، نشان دهنده یک نوع رابطه است که با توجه به مورد دلخواه ما می تواند معانی متفاوتی داشته باشد. مثلاً می تواند توالی دو کلمه باشد (اگر کلمه ای بعد از کلمه دیگری بیاید، یک یال از اولی به دومی وجود دارد). به یک توالی n تایی از این رأس ها، N-Gram می گوییم (توالی های 3gram، 2gram و … نیز از مدل های دیگر پیشنهادی می باشند).

مدل N-Gram در سطح کلماتمدل N-Gram در سطح کلمات

در این مدل، یک مجموعه داده های آماری بسیار بزرگ نیاز داریم که هر کدام مجموعه ای از این نشانه ها به همراه روابط بین آن ها است. برای مثال، در مورد یک زبان خاص، یک سری متن به آن زبان می باشد. حال روابطی در این مدل تعریف می شود که می توان با استفاده از آن، درستی یک توالی خواص از این نشانه ها را بررسی کرد.

مدل N-Gram در سطح کاراکترمدل N-Gram در سطح کاراکتر

فرض کنید می خواهیم درستی عبارت a1→a2→a3→a4 را مورد ارزیابی قرار دهیم. در این مدل، احتمال درستی به صورت یک عدد تعیین می شود که هرچه داده های آماری ما بیشتر باشد، نتیجه مطلوب تر است. عبارت بالا را به اجزای زیر تقسیم می کنیم و تعداد تکرار هر کدام را در داده های آماری پیدا می کنیم.

همانطور که در شکل زیر مشاهده می نمایید، یک مثال از نحوه محاسبه Maximum Likelihood که بر اساس Chain Rule می آید، آورده شده است.

در انتها، یک مساله باز می ماند که اگر تنها یکی از این احتمال ها صفر باشد، کل رابطه فوق و در نتیجه احتمال کل صفر خواهد شد؛ یکی از روش های روبرویی با این چالش، افزودن مقداری ثابت در احتمال کل می باشد که در روش های ریاضیاتی و محاسباتی بیشتر به آن اشاره می شود. اما در این جا، طبق سیلابس ارایه شده در دوره NLP دانشگاه Stanford، جهت افزایش سرعت محاسبه (جمع سریعتر از ضرب می باشد) و نیز جلوگیری از Underflow در فضای لگاریتمی با مقادیر احتمالات برخورد می کنیم. منظور از Underflow این است که در صورت ضرب چندین عدد کمتر از یک، عدد نهایی بسیار کوچک خواهد شد و در گام های بعدی کار ما را سخت خواهد کرد.

در مدل زبانی N-Gram در فضای لگاریتمی با احتمالات برخورد می کنیم.
در مدل زبانی N-Gram در فضای لگاریتمی با احتمالات برخورد می کنیم.

مدلسازی زبان

مدلسازی زبان بخش اصلی بسیاری از وظایف مرتبط با پردازش زبان طبیعی است.در این نوشتار ما بطور خلاصه با این مبحث آشنا خواهیم شد.

مدلسازی زبان بصورت ساده به عمل پیش بینی کلمه بعدی در یک دنباله داده شده گفته میشود. بعنوان مثال جمله “من در حال نوشتن یک …” را در نظر بگیرید . کلمه بعدی که میتواند در ادامه بیایید میتواند  “نامه”، “جمله” یا “پست وبلاگ” و… باشد. بعبارت دیگر به ازای کلمات ارائه شده x(1) و x(2) و… x(t) مدلهای زبانی توزیع احتمالاتی کلمه بعدی (t+1)x را محاسبه میکنند.

پایه ای ترین مدل زبانی مدل n-gram است.n-gram یکی از رایج ترین شیوه های مدلسازی زبانی آماری است. یک n-gram مجموعه ای از n کلمه پشت سر هم است. بعنوان مثال به ازای جمله “من در حال نوشتن یک …” ما با n-gram های زیر مواجه هستیم :

  • unigram : “من”, “در”,”حال”, “نوشتن”, “یک”
  • bigram : “من در”, “در حال”, “حال نوشتن” ,” نوشتن یک”
  • trigram : “من در حال”, “در حال نوشتن” , “حال نوشتن یک”
  • ۴-gram : “من در حال نوشتن” ,  “در حال نوشتن یک”
  • ۵-gram : ” من در حال نوشتن یک”

ایده اصلی پشت مدلسازی زبان n-gram جمع اوری اطلاعات آماری در رابطه با میزان فرکانس n-gram های مختلف است(اینکه هر ngram چقدر تکرار میشود) تا از این اطلاعات جهت پیش بینی کلمه بعدی استفاده شود. اما مدلهای زبانی n-gram با مشکل پراکندگی (sparsity) مواجه هستند که در آن ما داده کافی در یک مجموعه متن(corpus) را مشاهده نمیکنیم تا بتوانیم زبان را بدرستی (با دقت) مدل کنیم(بخصوص زمانی که n افزایش میابد).

مدلسازی زبان تنها در شیوه های آماریهمانند n-gram خلاصه نمیشود. گروه دیگری که امروزه از آنها بشدت در حوزه پردازش زبان طبیعی استفاده میشود مدلهای زبانی عصبی اند. در ادامه ما با این مفاهیم بیشتر آشنا خواهیم شد.

این مطلب به سه بخش تقسیم شده است
  1. مشکلات مدلسازی زبان
  2. مدلسازی زبانی آماری (Statistical Language Modeling)
  3. مدلهای زبانی عصبی (Neural Language Models)

مشکل مدلسازی زبان

زبان های رسمی مثل زبان های برنامه نویسی را میتوان بصورت کامل تعریف کرد. تمامی لغات رزرو شده را میتوان تعریف کرد و راه های معتبری که میتوانند استفاده شوند را بطور دقیق مشخص نمود.  این مساله اما در مورد زبان طبیعی صادق نیست. زبان های طبیعی طراحی نشده اند بلکه بوجود آمده اند و بنابر این مشخصات رسمی ندارند.
ممکن است قوانین رسمی یا برخی الگوریتم های فراابتکاری برای بخشهایی از زبان وجود داشته باشد اما زبان طبیعی ای که عموما با این قوانین مطابقت ندارد اغلب مورد استفاده قرار میگیرد. زبان های طبیعی از تعداد بی شماری لغات و عبارات که میتوانند به شیوه های مختلفی استفاده شوند تا ابهامات بسیار زیادی را موجب شوند اما در عین حال توسط انسانها قابل فهم باشند تشکیل شده است.  علاوه بر این، زبان ها تغییر میکنند، استعمال لغات و عبارات تغییر میکند و بنابر این زبان یک ماهیت زنده دارد. (از یک ماهیت زنده برخوردار است).
از اینها گذشته، زبان شناسان تلاش میکنند تا زبان را با قواعد زبان و ساختارهای رسمی تعریف کنند. این کار شدنی اما بسیار سخت است و نتایج میتوانند خیلی ضعیف باشند!
یک روش جایگزین برای تعریف یک مدل زبانی فراگرفتن آن از طریق مثالهای مختلف است.

مدلسازی زبانی آماری (Statistical Language Modeling):

مدلسازی زبانی آماری ، یا مدلساز زبانی، و به اختصار ML به توسعه مدلهای احتمالاتی گفته میشود که قادر به پیش بینی کلمه بعدی در یک دنباله به ازای دریافت لغات قبلی هستند.

مدلسازی زبان به عملیات انتساب یک احتمال به جملات ،در یک زبان اطلاق میگردد . […] علاوه بر انتساب احتمال به هر دنباله ای از کلمات، مدلهای زبانی همچنین به احتمال(likelihood) رخداد یک کلمه ( یا دنباله ای از کلمات) داده شده بعد از دنباله ای از لغات نیز احتمالی را منتسب میکنند.

از صفحه ۱۰۵ کتاب Neural Network Methods in Natural Language Processing

مدل زبانی آماری (Statistical Language Model) یک توزیع احتمالاتی بر روی دنباله ای از لغات است. به ازای یک دنباله داده شده (مثلا با طول m ) این مدل، احتمال  P(w_1,..w_m) را به تمام دنباله منتسب میکند. مدل زبانی محتوایی/زمینه ای برای تشخیص بین کلمات و عباراتی که صدای مشابه ای دارند فراهم میکند. بعنوان مثال در زبان انگلیسی عبارت های “recognize speech” و “wreck a nice beach” آواهایی یکسان (صدایی شبیه هم دارند) اما معنایی کاملا متفاوت دارند.

پراکندگی داده در ساخت مدلهای زبانی مشکلی اساسی است. اکثر دنباله های متشکل از کلمات در آموزش مشاهده نمیشوند. یک راه حل این است که فرض کنیم احتمال هر لغت تنها وابسته به n کلمه قبلی است. این روش به مدل n-gram و یا اگر n=1 باشد به unigram معروف است. مدل unigram همچنین بعنوان مدل bag of words نیز شناخته میشود.

برآورد احتمال نسبی عبارات مختلف در بسیاری از کاربردهای وابسته به پردازش زبان طبیعی سودمند است بخصوص آن دسته هایی که متنی بعنوان خروجی خود تولید میکنند. مدلسازی زبان در تشخیص گفتار، ترجمه ماشینی، برچسب گذاری بخشی از گفتار، فراکافت(parsing)، تشخیص حروف نوری، تشخیص دستخط، بازیابی اطلاعات(information retrieval) و کاربردهای بسیار دیگر مورد استفاده قرار میگیرد.

در تشخیص گفتار، آواها با دنباله ای از کلمات جفت (match) میشوند.در زمانی که اطلاعات مرتبط را بتوان از مدل زبانی با مدل دستور زبان(نقطه گذاری و…) و یک مدل صوتی ترکیب کرد ابهامات را میتوان راحت تر برطرف کرد.

مدلهای زبانی در بازیابی اطلاعات در مدل احتمال جستار (query likelihood model) مورد استفاده قرار میگیرند. در اینجا یک مدل زبانی جدا با یک سند در داخل یک مجموعه مرتبط میشود. اسناد بر اساس احتمال جستار Q در مدل زبانی سند رتبه بندی میشوند (P(Q|M_d)) . عموما مدل زبانی unigram برای این مهم مورد استفاده قرار میگیرد.

یک مدل زبانی احتمال رخداد کلمات را بر اساس نمونه های متنی فرا میگیرد. مدلهای ساده تر ممکن است به محتوای حاصل از یک دنباله کوتاه متشکل از چند لغت نگاه کنند در حالی که مدلهای بزرگتر ممکن است در سطح جملات یا پاراگراف ها عمل کنند. عموما مدلهای زبانی در سطح لغات فعالیت(کار؛عمل) میکنند.

ماهیت یک مدل زبانی احتمالاتی است. یک مدل زبانی تابعی است که میزان احتمالی را بر روی رشته های استخراج شده از یک لغت نامه در نظر میگیرد.

ازصفحه ۲۳۸ کتاب An Introduction to Information Retrieval,

یک مدل زبانی را میتوان بصورت جداگانه توسعه داد و برای تولید دنباله های جدید متنی مشابه مجموعه داده آموزشی از آن استفاده کرد. مدلسازی زبانی یک مساله ریشه ای برای گستره زیادی از عملیات های مرتبط با پردازش زبان طبیعی است. بطور ویژه، از مدلهای زبانی در فرانت اند و بک اند سیستم های پیچیده تری که نیازمند فهم زبان هستند استفاده میشود.

مدلسازی زبانی یک مولفه حیاتی در کاربردهای واقعی/صنعتی همانند ترجمه ماشینی و تشخیص گفتار و…هستند. […] به دلایل اشاره شده، مدلسازی زبانی نقش اساسی در تحقیقات مرتبط با پردازش زبان طبیعی، یادگیری ماشین و هوش مصنوعی ایفا میکند.

از صفحه ۱۰۵ کتاب Neural Network Methods in Natural Language Processing,

نمونه خوب دیگر تشخیص گفتار است که در آن داده صوتی بعنوان ورودی به مدل استفاده شده و خروجی نیازمند یک مدل زبانی است تا سیگنال ورودی را تفسیر کرده و هر کلمه را با توجه به محتوای حاصل از کلمات قبلی تشخیص دهد.

تشخیص گفتار اساسا یک مساله تبدیل سیگنال گفتاری در قالب دنباله ای از لغات است.[…] با توجه به این نقطه نظر، گفتار را میتوان خروجی تولید شده توسط یک مدل زبانی فرض کرد که برآوردهای Pr(w)  را برای تمامی لعات w مستقل از سیگنال مشاهده شده فراهم میکند[…] هدف تشخیص گفتار یافتن نزدیک ترین دنباله از لغات به ازای سیگنال صوتی مشاهده شده است.

صفحات ۲۰۵-۲۰۶, The Oxford Handbook of Computational Linguistics

به همین شکل مدلهای زبانی برای تولید متن در بسیاری از کارهای مشابه مرتبط با پردازش زبان طبیعی ، همانند موارد زیر مورد استفاده قرار میگیرند:

  • تشخیص حروف نوری (Optical Character Recognition)
  • تشخیص دستخط (Handwriting Recognition)
  • ترجمه ماشینی (Machine Translation)
  • تصحیح املاء (Spelling Correction)
  • شرح نویسی تصویر (Image Captioning)
  • خلاصه سازی متن (Text Summarization)
  • و…

توسعه مدلهای زبانی بهتر اغلب باعث مدلهایی میشود که بر روی وظیفه پردازش زبان طبیعی مورد نظر بهتر عمل میکند. این انگیزه ای برای توسعه بهتر و با دقت تر مدلهای زبانی است.

۳٫مدل های زبانی عصبی :

اخیرا استفاده از شبکه های عصبی در توسعه مدلهای زبانی بسیار رایج شده است تا حدی که ممکن است در حال حاضر قابل ترجیح ترین روش برای این مهم باشد.

استفاده از شبکه های عصبی در مدلسازی زبان اغلب به مدلسازی زبانی عصبی یا به اختصار NLM معروف است.

روشهای مبتنی بر شبکه عصبی نتایج بهتری نسبت به روش های سنتی در حالات مختلف بدست می آورند. این نوع مدلها هم بصورت منفرد و هم در قالب بخشی از خط لوله پردازشی مدلهای بزرگتر در عملیاتهای چالش برانگیزی نظیر تشخیص گفتار و ترجمه ماشینی بهتر از هماورد سنتی خود عمل میکنند.

یک دلیل کلیدی برای جهش در کارایی بهبود یافته این نوع مدلها ممکن است قدرت تعمیم پذیری این روش باشد

مدلهای شبکه عصبی غیرخطی برخی از کاستی های مدلهای زبانی سنتی را مرتفع میکنند : این نوع مدلها شرطی سازی(conditioning) بر روی محتواهای بسیار بزرگ را تنها با افزایش خطی در تعداد پارامترها ممکن میسازند، آنها نیاز به طراحی دستی نظم های عقب گردی(backoff orders) ر اکاهش داده و از تعمیم در بین محتواهای مختلف پشتیبانی میکنند.

صفه ۱۰۹, Neural Network Methods in Natural Language Processing .

بطور خاص یک روش تعبیه سازی کلمه (word embedding) انتخاب میشود که از بردار حاوی مقادیر حقیقی برای نمایش هر کلمه در فضای برداری یک پروژه بهره میبرد. این بازنمایی فراگرفته شده از کلمات مبتنی بر استفاده آنها اجازه میدهد کلمات با معنای مشابه بازنمایی مشابه ای داشته باشند.

مدلهای شبکه عصبی از طریق پارامتری کردن کلمات در قالب بردارها (word embedding) و استفاده ازآنها بعنوان ورودی به یک شبکه عصبی با مشکل پراکندگی داده در n-gram مقابله میکنند. پارامترها در حین فرایند آموزش فراگرفته میشوند. word embedding های بدست امده از طریق NLM ها شاهد خصائصی اند که در آنها کلمات نزدیک بهم از نظر معنایی در فضای برداری نیز به یکدیگر نزدیک اند.

Character-Aware Neural Language Model, 2015.

این تعمیم همان قابلیتی است که بازنمایی استفاده شده در مدلهای زبانی آماری سنتی براحتی قادر به رسیدن به آن نیستند.

دست یافتن به تعمیم واقعی در یک فضای گسسته مبتنی بر اندیس کلمات کار سختی است چرا که هیچ رابطه مشخصی بین اندیس کلمات وجود ندارد.

— Connectionist language modeling for large vocabulary continuous speech recognition, 2002.

علاوه بر آن، شیوه بازنمایی توزیع شده بازنمایی تعبیه ای (embedding representation) را قادر میسازد تا با توجه به اندازه لغت نامه بهتر تطبیق بپذیرد. روش های سنتی که به ازای هر کلمه از یک بازنمایی بهره میبرند در زمان مواجه با لغت نامه های هر چه بزرگتر محکوم به مواجه با نفرین ابعاد  هستند که باعث نتیجه دادن بازنمایی های طولانی تر و پراکنده تر میشود.

شیوه شبکه عصبی برای مدلسازی زبان را میتوان با سه خصوصیت مدل زیر توصیف کرد : (از کتاب A Neural Probabilistic Language Mode ) :

۱٫هر کلمه در لغت نامه با یک بردار ویژگی کلمه توزیع شده (distributed word feature vector) مرتبط شود
۲٫تابع احتمال مشترک دنباله کلمات در قالب بردارهای ویژگی این کلمات بیان شود
۳٫ بردار ویژگی و پارامترهای تابع احتمال همزمان فراگرفته شوند.

این نمایانگر مدل نسبتا ساده ای است که هم بازنمایی و هم مدل احتمالاتی با هم بصورت مستقیم از داده خام متنی  فراگرفته میشوند.اخیرا روشهای مبتنی بر شبکه عصبی روشهای آماری سنتی را از نظر کارایی پشت سر گذاشتند.

ما دلایل عملی مفصلی را ارائه میکنیم که نشان میدهد مدلهای زبانی اتصالگرا بجز پیچیدگی محاسباتی بالا در زمان آموزش نسبت به تکنیک های مبتنی بر n-gram استاندارد برتری دارند.

— Recurrent neural network based language model, 2010.

ابتداعا این مدلهای شبکه عصبی پیش خور بودند که برای معرفی این شیوه معرفی شدند اما اخیرا این شبکه های عصبی بازگشتی و بعد شبکه های با حافظه بلند مدت همانند شبکه عصبی بازگشتی حافظه طولانی کوتاه مدت یا به اختصار LSTM هستند که بواسطه اینکه به مدلها اجازه فراگیری محتوای مرتبط در دنباله های ورودی بسیار طولانی تر نسبت به شبکه های پیش خورد ساده تر را میدهند، مورد استفاده قرار گرفته اند.

…باعث تعمیم بیشتر میشود: بجای در نظر گرفتن تنها لغات قبلی، [در یک مدل زبانی شبکه عصبی بازگشتی]، نورونها یی که ورودی را از اتصالات بازگشتی دریافت میکنند اینطور فرض میشوند که حافظه کوتاه مدت را ارائه میکنند. مدل خودش از داده فرا میگیرد چگونه حافظه را ارائه کند. در حالی که شبکه های عصبی پیش خور (آنهایی که تنها یک لایه مخفی دارند) تنها میتوانند لغات مشابه را دسته بندی کنند، شبکه عصبی بازگشتی (که باید بعنوان یک معماری عمیق درنظر گرفته شود) میتواند دسته بندی تاریخچه های مشابه را انجام دهد. این بعنوان مثال قابلیت بازنمایی بهینه ای از الگوها با طول متغییر را موجب میشود.

Extensions of recurrent neural network language model, 2011.

اخیرا محققان در حال جستجو محدودیت های این مدلهای زبانی بوده اند. در مقاله “Exploring the Limits of Language Modeling“ ، بررسی مدلهای زبانی بر روی دیتاست های بزرگ همانند مجموعه آموزشی یک میلیون کلمه ای، انجام گردید و نویسندگان دریافتند که مدلهای زبانی عصبی مبتنی بر LSTM بسیار بهتر از روشهای سنتی عمل میکنند.

ما نشان داده ایم که مدلهای زبانی مبتنی بر شبکه های عصبی بازگشتی را میتوان بر روی مقادیر عظیم داده آموزش داد و مدلهای رقیب همانند N-gram های بدقت تنظیم شده را پشت سر بگذارد.

— Exploring the Limits of Language Modeling, 2016.

علاوه بر آن، آنها برخی الگوریتم های فراابتکاری را جهت توسعه مدلهای زبانی عصبی با کارایی بالا پیشنهاد میکنند :

  • اندازه مهم است . بهترین مدل بزرگترین مدل بود، بطور ویژه تعداد واحد های حافظه بسیار مهم است.
  • رگیولاریزیشن بسیار مهم است. استفاده از رگیولاریزیشن مثل dropout بر روی اتصالات ورودی نتایج را بهبود میدهد.
  • CNN یا Embeddings . مدل های مبتنی بر شبکه عصبی کانولوشن در سطح حرف ،را میتوان در اکثر فرانت اند ها بجای Word embedding مورد استفاده قرار داد و نتایج مشابه و در بعضی اوقات نتایج بهتری دریافت کرد.
  • استفاده از Ensemble مهم است. ترکیب پیش بینی از چند مدل میتواند باعث بهبود گسترده دی در کارایی مدل شود.

مطالعه بیشتر :

در این بخش منابع مورد نیاز برای کسانی که قصد مطالعه عمقی در این باره دارند  ارائه شده است .

کتاب ها :
مقالات
مطالب
خلاصه

در این نوشتار ما مدلهای زبانی برای کاربردهای پردازش زبان طبیعی را با هم دیدیم  و بطور ویژه یادگرفتیم :

  • زبان طبیعی بصورت رسمی تعریف نشده است و نیازمند استفاده از مدلهای آماری برای یادگیری از نمونه مثال است.
  • مدلهای زبانی آماری بخش اصلی بسیاری از عملیات های پردازش زبان طبیعی چالش بر انگیز هستند
  • جدیدترین/بهترین نتایج توسط مدلهای زبانی عصبی ، بطور خاص آن هایی که از word embedding و الگوریتم های شبکه عصبی بازگشتی استفاده کرده اند بدست آمده است.

منابع :

در نوشتار فوق از نوشتارهای زیر استفاده شده است :

Gentle Introduction to Statistical Language Modeling and Neural Language Models

https://en.wikipedia.org/wiki/Language_model

https://towardsdatascience.com/recurrent-neural-networks-the-powerhouse-of-language-modeling-d45acc50444f

اسکرول به بالا