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

Stemming و Lemmatization

Stemming و Lemmatization تکنیک های عادی سازی متن در حوزه پردازش زبان طبیعی هستند که برای آماده سازی متن، کلمات و اسناد برای پردازش بیشتر استفاده می شوند.

در پردازش زبان طبیعی، ممکن است بخواهید برنامه شما متوجه شود که کلمات “kick” و “kicked” فقط زمان های مختلف یک فعل هستند. این می تواند مفهوم کاهش انواع مختلف یک کلمه به یک ریشه اصلی باشد.

Stemming(ریشه‌یاب)

Stemming(ریشه‌یاب) فرآیند تولید انواع مورفولوژیکی یک کلمه ریشه/پایه است. برنامه‌های بنیادی معمولاً به عنوان الگوریتم‌های بنیادی یا استمرها شناخته می‌شوند.

در جستجوی متن برای یک کلمه کلیدی خاص، جستجو می تواند با برگرداندن تغییراتی از کلمه کمک کند. به عنوان مثال، جستجوی “boat” ممکن است “boats” و “boating” را نیز بازگرداند. در اینجا، “boat” ساقه [boat, boater, boating, boats] خواهد بود.

استمینگ روشی تا حدی خام برای فهرست نویسی کلمات مرتبط است. اساسا حروف را از انتها تا رسیدن به ساقه قطع می کند که در اکثر موارد نسبتاً خوب عمل می کند، اما متأسفانه انگلیسی استثناهای بسیاری دارد که در آن فرآیند پیچیده تری مورد نیاز است. مثلا ، spaCy شامل یک stemmer نمی شود، در عوض ترجیح می دهد که کاملاً بر روی lemmatization تکیه کند.

Porter Stemmer

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

Snowball Stemmer

Snowball نام زبانی است که توسط مارتین پورتر توسعه یافته است. الگوریتم مورد استفاده در اینجا با دقت بیشتری “English Stemmer” یا “Porter2 Stemmer” نامیده می شود. که یک بهبود جزئی نسبت به پایه اصلی پورتر، هم از نظر منطق و هم در سرعت، ارائه می دهد. جالب است بدانید که nltk از SnowballStemmer استفاده می کند.

Stemming معایبی دارد. اگر علامت saw به آن داده شود، ریشه ممکن است همیشه saw را برگرداند، در حالی که lemmatization(بن‌واژه‌ساز) احتمالاً بسته به اینکه استفاده از نشانه به عنوان فعل یا اسم باشد، یا see یا saw را برمی گرداند.

Lemmatization(بن‌واژه‌ساز)

بر خلاف ریشه‌یابی، واژه‌سازی فراتر از کاهش کلمه است و واژگان کامل یک زبان را برای اعمال یک تحلیل صرفی برای کلمات در نظر می‌گیرد. واژه ساز «was» «be» و واژه ساز «mice» «mouse» است.

Lemmatization(بن‌واژه‌ساز) معمولاً بسیار مفید تر از stemming ساده است، به همین دلیل است که Spacy ترجیح داده است به جای Stemming فقط Lemmatization را در دسترس داشته باشد.

Lemmatization به متن اطراف نگاه می کند تا بخشی از گفتار یک کلمه را مشخص کند، عبارات را دسته بندی نمی کند.

نتیجه

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

Stemming از یک الگوریتم با مراحلی برای اجرای کلمات پیروی می کند که آن را سریعتر می کند. در حالی که، در بن‌واژه‌ساز ، شما از یک پیکره نیز برای ارائه Lemmatization استفاده می کنید که آن را کندتر از ریشه‌یابی می کند. علاوه بر این، ممکن است مجبور شوید یک بخش از گفتار را برای به دست آوردن Lemmatization مناسب تعریف کنید.

نکات بالا نشان می دهد که اگر سرعت مهم باشد، باید از stemming استفاده شود زیرا لماتایزرها یک پیکره را اسکن می کنند که زمان و پردازش را مصرف می کند. بستگی به مشکلی دارد که روی آن کار می‌کنید و تصمیم می‌گیرد که آیا باید از Stemming استفاده کرد یا Lemmatization .

امیرحسین باقری

امیرحسین باقری هستم عاشق برنامه نویسی مخصوصا با python و همینطور طراح قالب و متخصص فرانت اند؛ از دانشی که تو این مدت بدست آوردم میشه به HTML, CSS, Bootstrap, Flexbox, SASS, Python, Django, DRF و هوش مصنوعی اشاره کرد.

دیدگاهتان را بنویسید

دکمه بازگشت به بالا