در این مطلب، روش حذف کلمات توقف متن در پایتون با استفاده از جعبه «ابزار زبان طبیعی» (Natural Language Toolkit | NLTK) و بسته پایتون stop-words بیان شده است. همچنین، فهرست کلمات توقف فارسی نیز به منظور انجام پردازش زبان طبیعی، ارائه شده است.

مقدمه‌ای بر حذف کلمات توقف متن در پایتون

فرایند تبدیل داده‌ها (داده‌های خام) به داده‌هایی که توسط کامپیوتر قابل درک باشند را «پیش‌پردازش» (Pre-Processing) می‌گویند. یکی از اشکال اصلی پیش‌پردازش، فیلتر کردن داده‌های بدون استفاده (غیر مفید و بیهوده) است. در «پردازش زبان طبیعی» (Natural Language Processing)، کلمات بدون استفاده (غیر مفید در حین پردازش) را «کلمات توقف» (Stop words) می‌گویند. از دیگر معادل‌هایی که در زبان فارسی برای کلمات توقف استفاده می‌شود، می‌توان به کلمات بازدارنده، کلمات ممنوعه و یا Stop Word اشاره کرد.

کلمات توقف چه هستند؟

کلمات توقف، در واقع کلماتی هستند که به طور متداول استفاده می‌شوند و موتورهای جستجو از جمله گوگل، به گونه‌ای برنامه‌نویسی شده‌اند که این کلمات را هم در هنگام ایندکس کردن صفحات وب و هم در هنگام بازیابی آن‌ها در نتیجه یک کوئری جستجو، نادیده بگیرد. از جمله این کلمات متداول می‌توان به «از، به، و، را» و چنین مواردی در زبان فارسی و «the, a, an, in» در زبان انگلیسی اشاره کرد.

در هنگام پردازش زبان طبیعی، تمایلی به این وجود ندارد که کلمات توقف در «پایگاه داده» (Data Base) فضا اشغال کنند و یا از زمان ارزشمند پردازش چیزی را به خود اختصاص دهند. به همین دلیل، می‌توان این کلمات را به راحتی و با ذخیره‌سازی لیست کلمات توقف، حذف کرد.

جعبه ابزار پردازش زبان طبیعی (NLTK) در پایتون

جعبه ابزار پردازش زبان طبیعی در پایتون (Natural Language Toolkit | NLTK) در زمان نگارش این مطلب، دارای لیستی از کلمات توقف برای ۲۳ زبان مختلف است. این لیست‌ها را می‌توان از پوشه nltk_data پیدا کرد. home/pratima/nltk_data/corpora/stopwords آدرس پوشه مذکور است (مخاطبان گرامی باید در نظر داشته باشند که در مسیر ارائه شده، باید نام پوشه خانگی یا در واقع همان Home Directory خود را جایگزین کنند).

البته، در ادامه روش مناسب‌تری نیز برای مشاهده لیست کامل زبان‌هایی که کلمات توقف آن‌ها در NLTK وجود دارد، ارائه شده است. شایان ذکر است که برای استفاده از این روش، حتما باید NLTK دانلود و نصب شده باشد. در این صورت، با استفاده از قطعه کد زیر، می‌توان لیست زبان‌ها را مشاهده کرد.

خروجی این مورد در زمان نگارش این مطلب (و برای نسخه ۳.۴.۵ که روی سیستم کاربر نصب است، با در نظر داشتن این موضوع که stopwords به صورت جدا و بعدا نصب شده است) به صورت زیر است:

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

متن نمونه با کلمات توقف متن نمونه بدون کلمات توقف
FaradarsMag – A Science Portal for Nerds FaradarsMag, Science, Portal, Nerds
Can listening be exhausting? Listening, Exhausting
I like reading, so I rad. Like, Reading, Read

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

خروجی دستور بالا، به صورت زیر است.

شایان توجه است که کاربر می‌تواند این لیست را با کلمات توقف مورد نظر خود نیز ویرایش کند. در این راستا، باید کلمات انگلیسی مورد نظر خود را در فایل txt. موجود در پوشه کلمات توقف یا همان stopwords، ویرایش کند. برای مشاهده لیست کلمات توقف در زبان عربی، کافی است در دستور ارائه شده در بالا، به جای english، از arabic استفاده شود. برای سایر زبان‌ها نیز به همین صورت عمل می‌شود.

خروجی دستور بالا، کلمات توقف زیر هستند.

حذف کلمات توقف موجود در یک متن با استفاده از NLTK

در ادامه، برنامه‌ای ارائه شده است که کاربر می‌توان با استفاده از آن، کلمات توقف (زبان انگلیسی) را از یک تکه متن انگلیسی حذف کند.

خروجی قطعه کد بالا به صورت زیر است.

در مثال ارائه شده در این بخش، متنی که حذف کلمات توقف در آن اتفاق می‌افتاد،‌ به صورت یک «رشته» (String) در کد ارائه شده است. منظور بخش زیر از قطعه کد بالا است.

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

حذف کلمات توقف موجود در یک فایل متنی با استفاده از NLTK

در کد زیر، فایل text.txt، فایل ورودی اصلی به برنامه محسوب می‌شود که چنانکه از پسوند آن (یعنی txt.) مشخص است، یک فایل متنی است. هدف حذف کلمات توقف در این متن است. فایل خروجی، filteredtext.txt است. این کار را می‌توان با استفاده از قطعه کد زیر انجام داد.

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

حذف کلمات توقف متن با استفاده از بسته پایتون stop-words

stop-words یک بسته پایتون برای کلمات توقف است. این بسته که در PyPi موجود و قابل دانلود است [+]، از زبان‌های زیر پشتیبانی می‌کند.

  • عربی
  • بلغاری
  • کاتالان
  • چکی
  • دانمارکی
  • انگلیسی
  • فنلاندی
  • فرانسوی
  • آلمانی
  • مجارستانی
  • اندونزیایی
  • ایتالیایی
  • نروژی
  • لهستانی
  • پرتغالی
  • رومانیایی
  • روسی
  • اسپانیایی
  • سوئدی
  • ترکی
  • اوکراینی

برخی از زبان‌های پشتیبانی شده در بسته stop-words، مشابه با NLTK هستند. هرچند که تفاوت‌هایی نیز در زبان‌های پشتیبانی شده توسط این دو وجود دارد و بنابراین، به پژوهشگران توصیه می‌شود که هر دو این موارد را بررسی کنند. شایان توجه است که بسته stop-words در اصل برای پایتون نسخه ۲ نوشته شده و سپس، به پایتون ۳ پورت و تست شده است.

روش نصب بسته stop-words در پایتون

برای نصب بسته stop-words در پایتون، با استفاده از pip، می‌توان از دستور زیر استفاده کرد.

برای نصب با استفاده از easy_install می‌توان از دستور زیر استفاده کرد.

راه دیگر نصب این بسته، کلون کردن مخزن «گیت» (Git) آن [+] است.

سپس، باید آن را نصب کرد.

روش کار با بسته stop-words در پایتون

برای فراخوانی بسته stop-words و کار با آن، می‌توان به صورت زیر عمل کرد.

سپس، با استفاده از دستورهای زیر می‌توان کلمات کلیدی زبان مورد نظر کاربر را (از میان زبان‌های پشتیبانی شده توسط این بسته) استفاده کرد.

یا

کلمات توقف در زبان فارسی برای پردازش زبان فارسی

متأسفانه در حال حاضر، در NLTK به طور پیش‌فرض، فهرست کلمات توقف زبان فارسی وجود ندارد. ولیکن پژوهشگرانی اقدام به تهیه لیستی از کلمات توقف در زبان فارسی کرده‌اند. برای دانلود این فهرست‌ها می‌توان از لینک‌های زیر استفاده کرد.

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

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

بر اساس رای 1 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *