هوش مصنوعی شاخه ای از علوم کامپیوتر است که در آن به ساخت ماشین هایی هوشمند پرداخته می شود که مانند انسان ها عمل می کنند و واکنش نشان می دهند. یک عامل هوشمند، سیستمی است که با شناخت محیط اطراف خود، شانس موفقیت خود را پس از تحلیل و بررسی افزایش میدهد. هوش مصنوعی در آینده ای نه چندان دور زندگی بیشتر انسان ها را تحت تأثیر قرار خواهد داد، یکی از زیر شاخه های این علم ، پردازش زبان طبیعی می باشد که در این مقاله به آن خواهیم پرداخت.
پردازش زبان طبیعی یا Natural Language Processing که به اختصار NLP نیز نامیده می شود، روشی است برای درک زبان انسانی برای رایانه. این علم یکی از شاخه های دانش هوش مصنوعی محسوب میشود و به رایانه ها کمک می کند تا با آگاهی از چگونگی استفاده بشر از زبان، زبان انسانی را درک کند. پردازش زبان طبیعی یک دانش پیچیده و دشوار است. با این حال تاکنون پیشرفت های بسیاری در این زمینه حاصل شده است که نتیجه کار و زحمات بسیاری از دانشمندان هوش مصنوعی، زبان شناسان و کارشناسان علوم رایانه است. کامپیوترها در کار با داده های ساختاریافته، مانند صفحات گسترده یا Spreadsheets و جداول پایگاه داده، عالی عمل می کنند، اما ما انسان ها معمولاً ازطریق کلمه ها با هم ارتباط برقرار می کنیم، نه با جدول ها. این برای رایانه ها چالش بزرگی است. بسیاری از اطلاعات در جهان بدون ساختار است. پردازش زبان طبیعی به ماشین ها کمک می کند که زبان انسان را پردازش و درک کنند تا بتوانند به طور خودکار کارهایی تکراری را انجام دهند، برای مثال می توان به ترجمه ی ماشینی، خلاصه نویسی، طبقه بندی متون و بررسی املای کلمات Spell Check اشاره کرد.
شاخه ای از علوم رایانه یا Computer Science و به طور خاص، شاخه ای از هوش مصنوعی مربوط میشود. این شاخه به کامپیوترها این امکان را می دهد تا متن و کلمه های گفتاری را به همان شیوه ای درک کنند که انسان می تواند بفهمد. پردازش زبان طبیعی ، زبان شناسی محاسباتی را با مدل های، یادگیری ماشین و یادگیری عمیق ترکیب می کند که همان زیرشاخه یادگیری ماشین است. در کنار هم این فناوری ها کامپیوترها را قادر می کنند تا زبان انسان را در قالب متن یا داده های صوتی پردازش و معنای کامل آن را درک کنند. یکی از دلایل اهمیت پردازش زبان طبیعی برای مشاغل این است که می توان از آن برای تجزیه و تحلیل حجم زیادی از داده های متنی، مانند نظرات کاربران رسانه های اجتماعی، نقدهای آنلاین، گزارش های خبری و غیره، استفاده کرد. همه ی این داده های تجاری حاوی تعداد زیادی اطلاعات ارزشمند هستند و NLP می تواند به مشاغل کمک کند به سرعت به این اطلاعات دست یابند. پردازش زبان طبیعی با کمک به ماشین ها امکان درک زبان انسان به شیوه ای سریع تر، دقیق تر و سازگارتر از انسان را فراهم می کند. ابزارهای پردازش زبان طبیعی، داده ها را به صورت بلادرنگ یا Real-time، 24 ساعته و برای هفت روز هفته پردازش می کنند و معیارهای یکسانی را برای همه داده ها اعمال می کنند، بنابراین می توان به دقت نتایج خروجی اعتماد کرد.
هدف از ارائه سرویسی به نام NLB بالا بردن دسترسی پذیری و مقیاس پذیری یا scalability سرویس هایی است که روی Node های یک NLB Cluster قرار گرفته اند. توجه کنید که راه اندازی هر کدام از سرویس هایی که در ویندوز سرور وجود دارد به تنهایی کار ساده ای است اما قرار دادن آنها در NLB Cluster کمی سخت تر است. به هر حال در ادامه این مطلب انتظار داریم شما مفاهیم کلی NLB را یاد بگیرید، قرار نیست همه موارد پیشرفته NLB در این مطالب پوشش داده شود و به امید خدا در مباحث پیشرفته تری مانند priority یا اولویت ها و port rule ها بهتر است خودتان مطالعه بیشتری داشته باشید. سرویس NLB با دریافت کردن درخواست های کلاینت ها و توزیع کردن این درخواست ها در بین دو یا بیش از دو سروری که در یک NLB cluster قرار دارند هم دسترسی پذیری و هم مقیاس پذیری سرویس ما را بالا می برد.
تاریخچه پردازش زبان طبیعی از دهه ۱۹۵۰ میلادی شروع می شود، گرچه از دوره های پیشین نیز میتوان کارهایی مشاهده نمود. در ۱۹۵۰ آلن تورینگ مقاله ای با عنوان هوش و ماشین محاسبه گر منتشر ساخت که آنچه را که امروزه به عنوان آزمایش تورینگ شناخته میشود، به عنوان معیار هوشمندی مطرح کرد. آزمایش جورج تاون در 1954 شامل ترجمه تمام خودکار بیش از شصت جمله از روسی به انگلیسی بود. نویسندگان ادعا میکردند که در طول سه تا پنج سال، ترجمه ماشینی یک مسئله حل شده خواهد بود. با این حال، پیشرفت واقعی بسیار کندتر بود، و پس از گزارش ALPAC در 1966، که مشخص کرد پژوهش ده ساله در برآوردن توقعات ناکام بوده، تأمین بودجه ترجمه ماشینی کاهش چشمگیری داشت. تا دهه 1980 تحقیقات اندکی در زمینه ترجمه ماشینی انجام شد، اما در این زمان اولین سیستم های ترجمه ماشینی آماری توسعه پیدا کردند.
دومین گامی که NLB برای بالا بردن مقیاس پذیری یا scalability ارائه می دهد این است که گروهی از سرورها هستند که درخواست های کاربران را مدیریت و پاسخگویی می کنند و طبیعتاً تعداد درخواست هایی که می توان در لحظه پاسخگو بود بیشتر از یک سرور تنها خواهد بود. همچنین با گسترش پیدا کردن سرویس مورد نظر، برای مثال یک وب سرور و بالا رفتن تعداد درخواست های کاربران شما می توانید یک سرور جدید را به مجموعه NLB Cluster خود اضافه کنید و Load کاری را بین سرورهای بیشتری تقسیم کنید.
برخی سیستم های پردازش زبان طبیعیِ نسبتاً موفق ساخته شده در دهه 1960 عبارت بودند از SHRDLU، که سیستم زبان طبیعی عمل کننده در جهان های بلوکی محدود با لغت نامه های محدود بود، و ELIZA، که یک شبیه سازی از روان درمانی فرد محور بود و توسط جوزف ویزنباوم بین 1964 و 1966 نوشته شد. ELIZA تقریباً بدون استفاده از اطلاعاتی در مورد احساسات یا تفکر انسانی، گاهی اوقات تعاملات انسان گونه خیره کننده ای ایجاد میکرد. هنگامی که بیمار از مبنای دانشی بسیار اندک، فراتر میرفت، الیزا ممکن بود پاسخی کلی بدهد، طی دهه 1970، برنامه نویسان بسیاری شروع به نوشتن آنتولوژی های مفهومی کردند، که اطلاعات جهان واقعی را وارد ساختار داده های قابل درک توسط رایانه میکرد.
تا دهه 1980، بیشتر سیستم های پردازش زبان طبیعی، مبتنی بر مجموعه های پیچیده ای از قواعد دست نویس بودند. اما از اواخر دهه 1980، با معرفی الگوریتم های یادگیری ماشین برای پردازش زبان، تحولی در پردازش زبان طبیعی ایجاد شد. این اتفاق، هم مرهون افزایشِ با ثبات قدرت محاسباتی بود، و هم به واسطه کاهش تدریجی سلطه نظریه های زبان شناختی چامسکی بود که پایه های نظری آن، زبان شناسیِ پیکره ای را که زیربنای روش یادگیری ماشین در پردازش زبان است، نفی میکرد. برخی از الگوریتم های مورد استفاده اولیه یادگیری ماشین، از جمله درخت های تصمیم، سیستم های سخت اگر-آنگاهی مشابه قواعد دست نویس موجود ایجاد میکردند. با این حال، برچسب گذاری اجزای کلام، استفاده از مدل های مارکوف پنهان را در پردازش زبان طبیعی معرفی کرد، و پژوهش ها بطور فزاینده ای بر مدل های آماری تمرکز داشتند، که تصمیماتی نرم و احتمالاتی برمبنای الصاق وزن های حقیقی-مقدار به ویژگی های سازنده داده های ورودی، اتخاذ میکردند. مدل های زبانی نهانگاهی که اکنون بسیاری از سیستم های شناسایی گفتار بر آن تکیه دارند، نمونه هایی از چنین مدل های آماری هستند. چنین مدل هایی هنگام دریافت ورودی ناآشنا عموماً استوارتر هستند، به ویژه ورودی هایی که شامل خطا باشند که در داده های جهان واقعی بسیار معمول است، و هنگام ادغام با سیستمی بزرگتر متشکل از چندین زیرتکلیف، نتایج قابل اعتمادتری تولید میکنند.
در سال های 2010 روش های یادگیری ماشین به سبک یادگیری نمایش و شبکه های عصبی عمیق در پردازش زبان طبیعی فراگیر شدند، که تا حدی مرهون سیلی از تحقیقات بود که نشان میدادند چنین روش هایی می توانند نتایجی برتر در بسیاری از فعالیت های زبان طبیعی بدست آورند، برای مثال در مدلسازی زبانی، تجزیه یا parsing و موارد بسیار دیگر. برخی تکنیک های محبوب عبارت اند از استفاده از تعبیه لغات یا word embedding جهت دریافت معنای مفهومی لغات، و افزایش یادگیری end-to-end یک عمل سطح بالا به جای تکیه بر سِیری از فعالیت های میانجی. در برخی زمینه ها، این جابه جایی، در نحوه طراحی سیستم های NLP چنان تغییراتی اساسی در پی داشته است که روش های مبتنی بر شبکه های عصبی عمیق را میتوان به عنوان پارادایمی جدید و متمایز از پردازش زبان طبیعی در نظر گرفت. برای مثال، عبارت ترجمه ماشین عصبی یا NMT بر این حقیقت تأکید میکند که روش های یادگیری عمیق در ترجمه ماشینی، مستقیماً انتقالات رشته به رشته را یادگیری میکند و نیاز به گام های میانجی مثل ترازسازی لغات و مدلسازی زبانی را که در ترجمه ماشینی آماری یا SMT استفاده میشوند، رفع میکند.
پردازش زبان طبیعی یک روند با چند مرحله است، این مراحل به ترتیب عبارتند از:
• یک انسان با یک دستگاه دیجیتالی صحبت می کند.
• یک دستگاه صوتی، صدای انسان را ضبط می کند.
• دستگاه دیجیتالی، صدای انسان را به متن تبدیل می کند.
• متن ها پردازش می شوند و پاسخ متنی مناسب در نظر گرفته می شود.
• پاسخ متنی به شکل صوتی در می آید.
• دستگاه فایل صوتی پاسخ را پخش می کند.
NLP کامپیوترها را قادر می سازد تا زبان طبیعی را مانند انسان درک کنند. چه زبان گفتاری باشد و چه نوشتاری، پردازش زبان طبیعی از هوش مصنوعی برای دریافت ورودی از دنیای واقعی استفاده می کند و با پردازش آن ها، به شکلی که برای کامپیوترها قابل درک باشد ارائه می نماید. همان طور که انسانها حسگرهای مختلفی دارند مانند گوش برای شنیدن و چشم برای دیدن، کامپیوترها برنامه هایی برای خواندن و میکروفن هایی برای جمع آوری صدا دارند. در مرحله ای از پردازش، ورودی به کدی تبدیل می شود که کامپیوتر می تواند آن را درک کند. دو مرحله ی اصلی برای پردازش زبان طبیعی وجود دارد، پیش پردازش داده ها و توسعه ی الگوریتم. پیش پردازش داده ها، شامل آماده کردن و تمیز کردن متون برای ماشین ها می باشد تا قابل تحلیل باشند. پیش پردازش داده ها آن ها را آماده ساخته و ویژگی هایی که یک الگوریتم بتواند با آنها کار کند را در متن برجسته می کند. چند راه مختلف برای این کار وجود دارد :
Tokenization : این مرحله زمانی انجام می شود که متن به واحدهای کوچکتری که بتوان بر روی آنها کار کرد تقسیم می شود.
Stop Word Removal : این مرحله زمانی اتفاق می افتد که کلمات معمول از متن حذف می شوند و کلمات منحصر به فردی که بیشترین اطلاعات را در مورد متن می دهند باقی می مانند.
Lemmatization and Stemming : این امر زمانی اتفاق می افتد که کلمات به ریشه ی خود باز میگردند تا پردازش شوند.
Part of speech tagging : برچسب گذاری زمانی انجام می شود که کلمات براساس بخشی از گفتار برای مثال اسم، فعل و صفت علامت گذاری می شوند.
الگوریتم های اصلی NLP
برای حل مسائل NLP میتوانیم از دو نوع الگوریتم اصلی استفاده کنیم:
• رویکردی مبتنی بر قانون یا Rule-based approach : سیستم های مبتنی بر قانون متکی بر قوانین دستوری هستند که باید متخصصان آنها را زبان شناسی کنند. این روش اولین رویکرد برای ایجاد الگوریتم های NLP بوده است که امروزه نیز از آن استفاده می شود.
• الگوریتم های یادگیری ماشین یا Machine Learning Algorithms : مدل های یادگیری ماشین مبتنی بر روش های آماری هستند و پس از اینکه داده های آموزشی را دریافت می کنند، یاد می گیرند وظایف مدنظر را انجام دهند.
الگوریتم های یادگیری ماشین با دریافت داده های آموزشی و خروجی های مورد انتظار برای آنها ، ارتباط میان ورودی و خروجی ها را یاد می گیرند، سپس ماشین ها از روش های تجزیه و تحلیل آماری برای استخراج ویژگی های مهم متن استفاده می کنند. درنهایت از این ویژگی ها برای پیش بینی خروجی داده های دیده نشده استفاده می کنند. بزرگترین مزیت الگوریتم های یادگیری ماشین توانایی آنها در یادگیری خودکار است. در این روش به تعریف قوانین دستی نیازی نداریم، درعوض ماشین ها از داده های قبلی یاد می گیرند تا خودشان به تنهایی خروجی را پیش بینی کنند.
NLP یا پردازش زبان طبیعی یکی از ترندهای اصلی تکنولوژی است چرا که بیشترین اطلاعاتی که در سرتاسر دنیا تولید می شود به زبان طبیعی انسان می باشد. در واقع تمامی این اطلاعات در قالبهایی مانند ایمیل، پیام های واتس آپ، به روز رسانی های توئیتر، مقالات جدید، کتاب ها و زبان های محاوره ای و غیره تولید می شوند. این پردازش ، ماشین ها را قادر می سازد تا تمامی این اطلاعات را رمزگشایی کرده و معنا را از آنها استخراج نمایند. به طور سنتی، استخراج معنا از زبان، برای ماشین ها بسیار مشکل می باشد. زبان انسان ها نامنظم، پیچیده و ساختارنیافته است و با داده های ساختار یافته ای که معمولاً ماشین ها با آنها سر و کار دارند بسیار متفاوت است. هوش مصنوعی به نوعی این روند را تغییر داده است. به لطف فناوریهای هوش مصنوعی نظیر یادگیری ماشین به همراه ظهور علم کلان داده، کامپیوترها یاد گرفتند تا متن ها را پردازش و از آنها معنا استخراج کنند.
بسیاری از ابزارهایی که امروزه زندگی ما را آسان می کنند به لطف پردازش زبان طبیعی امکان پذیر هستند. پردازش زبان طبیعی کاربردهای بسیار متنوعی دارد که برخی از آنها عبارت اند از:
• تحلیل احساسات Sentiment Analysis
• طبقه بندی متن Text Classification
• چت بات ها و دستیاران مجازی Chatbots & Virtual Assistants
• استخراج متن Text Extraction
• ترجمه ی ماشینی Machine Translation
• خلاصه سازی متن Text Summarization
• هوش اقتصادی Market Intelligence
• تصحیح خودکار Auto-Correct
• طبقه بندی قصد یا نیت Intent Classification
• تشخیص شرایط اضطراری Urgency Detection
• تشخیص گفتار Speech Recognition
برخی چالش ها در پردازش زبان طبیعی وجود دارد که بیشتر آنها در این واقعیت خلاصه می شود که زبان طبیعی همواره در حال تکامل است و همیشه تا حدی هم مبهم می باشد. این چالش ها عبارتند از :
1. دقت :
کامپیوترها نیاز دارند تا انسان با آنها به زبان برنامه نویسی که دقیق ، صحیح و بدون ابهام است و یا از طریق دستورات صوتی صحبت کند. با این حال گفتار انسان همیشه دقیق نیست. اغلب مبهم است و بسته به بافت اجتماعی و منطقه می تواند با گویش خاص یا به طور عامیانه بیان شود.
2. لحن صدا :
پردازش زبان طبیعی هم چنان در حال تکامل است . برای مثال تحلیل معنایی می تواند هم چنان چالش برانگیز باشد. هم چنین استفاده ی انتزاعی از زبان می تواند برای برنامه ها دشوار باشد. برای مثال NLP معنای طعنه را نمی داند یا بسته به تأکید بر روی هجای خاصی توسط گوینده معنا می تواند متفاوت باشد. الگوریتم های NLP ممکن است چنین نکات ظریفی را تشخیص ندهند و همین موضوع استفاده از آنها را در چنین زمینه هایی چالش برانگیز ساخته است.
3. تغییرات زبانی :
زبان و نحوه ی استفاده افراد از آن به سرعت در حال تغییر است. اگر چه قواعد زبانی مشخصی بر هر زبان حاکم است اما تغییرات زبان ها اجتناب ناپذیر است و همین موضوع سبب شده برخی ویژگی های منسوخ یا جدید زبان ها استفاده از الگوریتم های پردازش زبان طبیعی را با چالش مواجه سازد.
در انتها میتوان گفت پردازش زبان طبیعی مجموعه روش هایی است که به کمک آنها می توانیم روابط خودمان را با رایانه و سیستم های هوشمند توسعه بخشیم. این روش ها ماشین های هوشمند را قادر می سازند سخنان افراد بشر را بشنوند و بخوانند و پس از درک آنها پاسخ هایی متناسب با آنها بدهند یا واکنشی مطلوب داشته باشند. به لطف پردازش زبان طبیعی، مشاغل برخی از فرایندهای روزانه ی خود را به صورت خودکار انجام می دهند و از داده های بدون ساختار خود حداکثر استفاده را می کنند. آنها از این داده ها بینش های عملی را به دست می آورند که می توانند برای بهبود رضایت مشتری و ارائه ی تجربه های مشتری بهتر از آن ها استفاده کنند.