پردازش زبان طبیعی در زبان فارسی چگونه است؟ در این مطلب به سراغ این پرسش اساسی رفته‌ایم. در ابتدا به‌صورت کلی توضیح می‌دهیم که پردازش زبان طبیعی چیست و چطور کار می‌کند؛ شرح کار و هدف‌های آن را شرح می‌دهیم، مرحله‌های مختلف آن را توضیح می‌دهیم و سپس به‌صورت عملیاتی‌تر به سراغ این فرایند در زبان فارسی می‌رویم و از چالش‌های آن می‌گوییم.

فهرست مطالب پنهان‌کردن فهرست
  1. 1. پردازش زبان طبیعی یا NLP را بیشتر بشناسیم
  2. 2. وظایف پردازش زبان طبیعی (NLP)
    1. 2.1. تشخیص گفتار (Speech Recognition)
    2. 2.2. برچسب‌گذاری اجزای گفتار (Part of Speech Tagging)
    3. 2.3. شناسایی موجودیت نام‌گذاری‌شده (Named Entity Recognition)
    4. 2.4. تقسیم‌بندی جمله‌ها (Sentence Segmentation)
    5. 2.5. توکن‌سازی (Tokenization)
    6. 2.6. Stemming
    7. 2.7. Lemmatization
    8. 2.8. شناسایی کلمه‌های توقف (Identifying StopWords)
    9. 2.9. طبقه‌بندی متن (Text classification)
    10. 2.10. تجزیه‌وتحلیل احساسات (Sentiment Analysis)
    11. 2.11. تولید زبان طبیعی (Natural Language Generation)
  3. 3. مجموعه متون (Corpora)
    1. 3.1. Persian Wikipedia Corpus
    2. 3.2. MirasText
    3. 3.3. Farsi News Datasets
    4. 3.4. VOA Corpus
    5. 3.5. A large collection of Persian raw text
    6. 3.6. W2C – Web to Corpus – Corpora
    7. 3.7. dotIR Collection
    8. 3.8. irBlogs
    9. 3.9. Persian Poems Corpus
    10. 3.10. HmBlogs: A big general Persian corpus
    11. 3.11. ganjoor-tex
    12. 3.12. Corpus of Conversational Persian Transcripts
  4. 4. چالش‌های ایجاد مجموعه متون (Copora) فارسی در منابع آنلاین
    1. 4.1. مرز کلمه‌ها
    2. 4.2. کاراکترهای عربی
    3. 4.3. املای مختلف کلمه‌ها
    4. 4.4. حروف غیرواصل
    5. 4.5. حروف صدادار کوتاه
    6. 4.6. شکسته‌‌نویسی
  5. 5. جمع‌بندی مطالب درباره پردازش زبان طبیعی در زبان فارسی
  6. 6. هفت‌خوان: مطالعه کن، نظر بده، جایزه بگیر!
    1. 6.1. جوایز هفت‌خوان
    2. 6.2. پرسش‌های مسابقه
  7. 7. هفت‌خوان‌پلاس

پردازش زبان طبیعی یا NLP را بیشتر بشناسیم

پردازش زبان طبیعی (NLP) به شاخه‌ای از علوم کامپیوتر و به‌طور خاص‌تر، شاخه هوش مصنوعی یا AI اشاره می‌کند. این شاخه به رایانه‌ها توانایی درک متن و گفتار را به‌همان روشی می‌دهد که انسان قادر به انجام‌دادن آن است. NLP قوانین زبان‌شناسی محاسباتی (Computational Linguistics) را با مدل‌های آماری، یادگیری ماشین و یادگیری عمیق ترکیب می‌کند. این فناوری‌ها، در کنار هم، رایانه‌ها را قادر می‌کنند تا زبان انسان را به‌صورت متن یا داده‌های صوتی پردازش کنند و معنای آن «درک» کنند.

NLP در پشت پرده برنامه‌های کامپیوتری قرار دارد که متن را از یک زبان به زبان دیگر ترجمه می‌کنند، به دستورهای گفتاری پاسخ می‌دهند و حجم زیادی از متن را به‌سرعت و حتی به‌شکل بی‌درنگ خلاصه می‌کنند. احتمالاً با نرم‌افزارها و دستیارهای مجازی مانند سیری اپل (Apple Siri)، گرمرلی (Grammarly) یا Google Translate کار کرده‌اید. این‌ها نمونه‌هایی از کاربردهای پردازش زبان طبیعی است.

NLP همچنین نقش روبه‌رشدی در راه‌حل‌های سازمانی ایفا می‌کند که به ساده‌سازی عملیات تجاری، افزایش بهره‌وری کارکنان و ساده‌سازی فرایندهای کسب‌وکار کمک می‌کند.

برای مطالعه بیشتر دربارهٔ پردازش زبان طبیعی و کاربردهای آن پیشنهاد می‌کنیم مطالعه این مطلب را از دست ندهید:

درک زبان طبیعی (NLU) چیست و چگونه انجام می‌شود؟

وظایف پردازش زبان طبیعی (NLP)

زبان انسان مملو از ابهام‌هایی است که نوشتن نرم‌افزاری را که دقیقاً معنای متن یا داده‌های صوتی را درک کند بسیار دشوار می‌کند. هم‌معنی‌ها، هم‌آواها، کنایه‌ها، اصطلاحات، استعاره‌ها، گرامر و استثناهای کاربردی فقط تعداد کمی از بی‌نظمی‌های زبان انسانی هستند که کاری می‌کنند یادگیری آن سال‌ها طول بکشد. این در حالی است که برنامه‌نویسان باید برنامه‌های کاربردی مبتنی بر زبان طبیعی‌ای را آموزش دهند که از همان ابتدا معنای متن و صوت را به‌درستی تشخیص دهند؛ بنابراین می‌توان گفت آموزش کامپیوتر برای درک زبان طبیعی انسان کار آسانی نیست.

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

برخی از این وظایف از این قرار است:

تشخیص گفتار (Speech Recognition)

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

در این مطلب درمورد تشخیص گفتار به‌صورت کامل توضیح داده‌ایم:

تشخیص گفتار (Speech Recognition) چیست و چگونه کار می‌کند؟

برچسب‌گذاری اجزای گفتار (Part of Speech Tagging)

برچسب‌گذاری اجزای گفتارکه برچسب‌گذاری گرامری نیز نامیده می‌شود فرایند تعیین نقش یک کلمه یا عبارت خاص براساس کاربرد و مفهوم آن است؛ برای مثال، اینکه کلمه به‌عنوان فعل، اسم یا قید در جمله قرار گرفته است ازجمله کارهای برچسب‌گذاری اجزای گفتار یا Part of Speech Tagging است.

شناسایی موجودیت نام‌گذاری‌شده (Named Entity Recognition)

این عملکرد کلمه‌ها یا عبارت‌ها را به‌عنوان موجودیت‌های خاص شناسایی می‌کند؛ برای مثال، کلمه «تهران» را به‌عنوان یک شهر یا کلمه‌ «سارا» را به‌عنوان نام یک زن شناسایی می‌کند.

تقسیم‌بندی جمله‌ها (Sentence Segmentation)

در این تسک کل Corpus که به کل مجموعه متن اشاره می‌کند به جمله‌های جداگانه تقسیم می‌شود.

توکن‌سازی (Tokenization)

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

Stemming

Stemming به فرایند تقلیل کلمه‌ها به ریشه آن‌ها اشاره می‌کند. این کار با حذف ابتدا یا انتهای کلمه‌ها انجام می‌شود؛ برای مثال، در زبان انگلیسی oppressor ،oppression ،oppressed ،oppressive، همه، به oppress تغییر پیدا می‌کنند. این کار با حذف «or» ،«ion» ،«ed» ،«ive» به‌ترتیب از هر کلمه به oppress که ریشه است انجام می‌شود.

Lemmatization

Lemmatization به‌معنای تبدیل کلمه به کلمه ریشه آن است که به‌عنوان Lemma شناخته می‌شود، در این حالت معنای کلمه در نظر گرفته می‌شود و فقط آخرین بخش کلمه‌ها را حذف نمی‌کند.

برای مثال، ریشه کلمه‌های «am» ،«is» ،«are» کلمه «be» است یا کلمه‌های «creation» ،«creating» ،«creative» به «create» تغییر خواهند کرد. اگر stemming انجام شود، آن‌ها به‌جای «create»، به «creati» تبدیل می‌شوند، یعنی لزوماً معنادار نخواهد بود.

شناسایی کلمه‌های توقف (Identifying StopWords)

Stopwordها کلمه‌های رایجی هستند که در زبان‌های مختلف یافت می‌شوند و معنی زیادی به جمله نمی‌دهند؛ مثلاً در زبان انگلیسی «and» ،«the» ،«is» ،«am» و غیره stopword هستند. این کلمه‌ها باید شناسایی و از مجموعه حذف شوند؛ زیرا مانند نویز در مجموعه داده هستند.

طبقه‌بندی متن (Text classification)

این مرحله از کار متن را براساس هدفی که در نظر داریم، به کلاس‌های مختلفی طبقه‌بندی می‌کند.

برای مطالعهٔ بیشتر دربارهٔ طبقه‌بندی متن و تکنیک‌های آن مطالعه این مطلب را پیشنهاد می‌کنیم:

طبقه‌بندی متن (Text Classification) چیست و چگونه انجام می‌شود؟

تجزیه‌وتحلیل احساسات (Sentiment Analysis)

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

تولید زبان طبیعی (Natural Language Generation)

همان‌طور که از نام آن پیداست در این تسک هدف تولید متن یا همان زبان طبیعی است.

علاوه بر این‌ها تسک‌های دیگری مانند شناسایی موضوع (Topic Detection)، خلاصه‌سازی متن (Text Summarization)، درک مطلب (Reading Comprehension)، پرسش‌وپاسخ (Question Answering)، تولید سؤال (Question Generation)، شرح تصویر (Image Captioning)، تشخیص اخبار جعلی (Fake News Detection) و تشخیص سخنان نفرت‌انگیز (Hate Speech Detection) نیز در این حوزه وجود دارند.

مجموعه متون (Corpora)

Corpora یا Corpus (مفرد) مجموعه‌ای از متن یا صداهای معتبر است که به‌شکل مجموعه داده سازمان‌دهی شده‌اند. معتبر در اینجا به‌معنای متن نوشته‌شده یا صوتی است که یک بومی با آن زبان صحبت می‌کند. یک Corpora می‌تواند از روزنامه‌ها، رمان‌ها، پخش‌های رادیویی گرفته تا نمایش‌های تلویزیونی، فیلم‌ها و توئیت‌ها تشکیل شود.

در ادامه برخی از مجموعه متون (Copora) موجود به زبان فارسی را معرفی کرده‌ایم.

Persian Wikipedia Corpus

یک کپی کامل از صفحات ویکی‌پدیای فارسی، به‌صورت متن ساده (بدون نشانه‌گذاری‌های ویکی) و متادیتای تعبیه‌شده در JSON. نسخه فعلی به‌صورت fawiki-20181001-dump است که ۱۱۶۰۶۷۶ مقاله مفید را شامل است.

برای دیدن این Corpora روی این لینک کلیک کنید:

Persian Wikipedia Corpus

MirasText

این مجموعه حاصل کاوش بیش از ۲۵۰میلیون وب‌سایت خبری فارسی است و بیش از ۲.۸میلیون مقاله دارد.

برای دسترسی به آن روی این لینک کلیک کنید:

MirasText

Farsi News Datasets

این دیتاست از RSS Feed دو وب‌سایت خبری همشهری و رادیوفردا استخراج شده است.

برای دسترسی به این دیتاست به این لینک سر بزنید:

Farsi News Datasets

VOA Corpus

این مجموعه فارسی ۷.۹ میلیون کلمه را دربردارد که از صدای امریکا استخرا شده است و محتوای تولیدی طی سال‌های ۲۰۰۳ تا ۲۰۰۸ را دربردارد.

این دیتاست را در اینجا پیدا کنید:
VOA Corpus

A large collection of Persian raw text

مجموعه‌ای عظیمی از متن خام فارسی که از منابع مختلفی ازجمله CommonCrawl استخراج شده است:

A large collection of Persian raw text

W2C – Web to Corpus – Corpora

مجموعه‌ای از متون ۱۲۰ زبان که به‌طور خودکار از ویکی‌پدیا و فضای وب جمع‌آوری شده است:

W2C – Web to Corpus – Corpora

dotIR Collection

dotIR یک مجموعه تست فارسی استاندارد است که برای ارزیابی الگوریتم‌های بازیابی اطلاعات وب در وب ایرانی مناسب است. dotIR بسیاری از صفحه‌های وب فارسی، ازجمله متن، لینک، متادیتا و غیره، را شامل است که در قالب XML ذخیره شده است:

dotIR Collection

irBlogs

irBlogs حاوی بیش از ۵ میلیون پست و یک گراف رابطه متعلق به بیش از ۶۰۰ هزار وبلاگ فارسی است. می‌توان از آن در کاربردهای مختلف، مانند بازیابی اطلاعات، مطالعه زبان فارسی در شبکه‌های اجتماعی آنلاین و حتی الگوریتم‌های تئوری گراف، استفاده کرد؛ همچنین ۴۵ پرس‌وجو و قضاوت مربوط به آن‌ها را کاربران مختلف با استفاده از سیستم ارزیابی UTIRE ایجاد کرده‌اند.

irBlogs

Persian Poems Corpus

این مجموعه اسناد متنی ۴۸ شاعر فارسی زبان را شامل است. مجموعه در ۳ قالب ارائه می‌شود؛ اورجینال، نرمالایزشده (فقط ۳۲ الفبای اصلی فارسی) و حذف کلمه‌های توقف. این مجموعه ۱۲۱۶۲۸۶ مصرع شعر فارسی و ۸۱۰۲۱۱۹ کلمه است که ۱۴۸۵۸۸ کلمه منحصربه‌فرد را دربرمی‌گیرد.

Persian Poems Corpus

HmBlogs: A big general Persian corpus

این مجموعه براساس مجموعه‌ای از حدود ۲۰ میلیون پست وبلاگ در یک بازه زمانی حدوداً ۱۵ ساله از وبلاگ‌های فارسی تهیه شده است و بیش از ۶.۸ میلیارد توکن را دربرمی‌گیرد. این پیکره به‌دو صورت خام و پیش‌پردازش‌شده ارائه می‌شود:

HmBlogs: A big general Persian corpus

ganjoor-tex

این مجوعه متونی از ۱۲ شاعر فارسی را دربرمی‌گیرد که از وب‌سایت ganjoor.net استخراج شده است:

ganjoor-tex

Corpus of Conversational Persian Transcripts

مجموعه‌ای شامل رونوشت‌هایی از حدود ۲۰ ساعت مکالمه‌های غیررسمی طبیعی در گویش تهرانی و زبان فارسی است. این مجموعه از ۱۲۰۱ دقیقه مکالمه میان ۲۲ شرکت‌کننده، ۱۲ مرد و ۱۰ زن استخراج شده است. شرکت‌کنندگان تماس‌های تلفنی روزانه و تعامل‌های چهره‌به‌چهره خود را ضبط کرده‌اند. گفت‌وگوها انواع مختلف تعامل، موقعیت‌ها، انواع روابط و هدف‌های ارتباطی را نشان می‌دهد. رونوشت‌ها از نظر جنسیت، سن و روش ضبط و موقعیت حاشیه‌نویسی شده‌اند.

Corpus of Conversational Persian Transcripts

چالش‌های ایجاد مجموعه متون (Copora) فارسی در منابع آنلاین

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

مرز کلمه‌ها

یکی از مشکلاتی که در پردازش متون فارسی وجود دارد گزینشی‌بودن نیم‌فاصله است. بسیاری از کلمه‌هایی که درواقع یک کلمه هستند با فاصله از هم تایپ می‌شوند. این امر به این می‌انجامد که کلمه‌هایی که باید یکی در نظر گرفته شوند به‌شکل جدا و به‌صورت ۲ کلمه در نظر گرفته شوند؛ برای مثال، کلمه «بین‌المللی» در اکثر مواقع با فاصله و به‌شکل «بین المللی» نوشته می‌شود.

کاراکترهای عربی

یکی دیگر مشکلاتی که در هنگام پردازش متون فارسی با آن مواجه هستیم استفاده‌نکردن از کاراکترهای عربی است؛ برای مثال، کلمه‌ای مانند «جداً» درصورتی‌که تنوین نداشته باشد «جدا» نوشته می‌شود و این در حالی است که این دو کلمه معانی متفاوتی دارند. این موضوع به‌خصوص در متونی که از منابع آنلاین گرفته می‌شود وجود دارد و نویسندگان تمایلی به استفاده از این کاراکترها ندارند.

املای مختلف کلمه‌ها

در متون فارسی کلمه‌ها می‌توانند با املای متفاوتی نوشته شوند؛ برای مثال، «آمریکایی»، «آمریکائی»، «امریکایی» و «امریکایی» از آن جمله است. این کلمه‌ها درواقع یکی هستند و معنای یکسانی دارند، اما به‌دلیل املای متفاوت، در پردازش متن به‌عنوان ۴ کلمه مختلف در نظر گرفته می‌شوند.

حروف غیرواصل

در فارسی حروفی مانند «ر»، «ز»، «ژ» و غیره وجود دارند که به حرف بعدی خود وصل نمی‌شوند؛ به‌همین دلیل، گاه نویسنده در مواردی که این حروف در آخر کلمه قرار می‌گیرند، از فاصله برای جداسازی کلمه از کلمهٔ بعدی استفاده نمی‌کند که این موضوع مشکلاتی را در هنگام پردازش متن به وجود می‌آورد.

حروف صدادار کوتاه

در هنگام نوشتن متن فارسی در بیشتر مواقع حروف صدادار کوتاه نوشته نمی‌شود و این موضوع در معنای کلمه ابهام ایجاد می‌کند؛ برای مثال، کلمه «کند» با نوشتن حروف صدادار کوتاه می‌تواند دو کلمه «کُند» و «کُنَد» باشد.

شکسته‌‌نویسی

چالش دیگری که ممکن است در هنگام پردازش متن فارسی با آن برخورد کنیم این است که متن‌هایی که معمولاً در پست‌های رسانه‌های اجتماعی وجود دارد به‌شکل محاوره نوشته می‌شوند. به این کال اصطلاحاً شکسته‌نویسی گفته می‌شود؛ برای مثال، حذف حرف «د» در آخر شناسه فعل یا تبدیل کلمه «خواهر» به «خاهر». این شکل از نوشتار تابع مطلقی از گفتار است.

جمع‌بندی مطالب درباره پردازش زبان طبیعی در زبان فارسی

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

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

هفت‌خوان: مطالعه کن، نظر بده، جایزه بگیر!

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

جوایز هفت‌خوان

  • ۱,۵۰۰,۰۰۰ تومان جایزه نقدی
  • ۳ کلاس رایگان ۵۰۰,۰۰۰ تومانی

پرسش‌های مسابقه

برای شرکت در هفت‌خوان کافه‌تدریس در کامنت همین مطلب به این پرسش‌ها پاسخ دهید:

  • پردازش زبان طبیعی (NLP) چه وظایفی را در زبان فارسی بر عهده دارد؟ لطفاً سه مورد را نام ببرید.
  • از چالش‌های ایجاد مجموعه متن به زبان فارسی سه مورد نام ببرید. 
  • دو مثال از مجموعه متون فارسی که در فهرست ذکر شده را نام ببرید و یک مورد را توضیح دهید.

هفت‌خوان‌پلاس

برای بالابردن شانس‌تان می‌توانید این مطلب را هم مطالعه کنید و به پرسش‌های آن پاسخ دهید:

۶ کاربرد پردازش زبان طبیعی در پزشکی