Closed dehghani-mehdi closed 4 months ago
منظورتون نرمالایزر هضم هست؟ لطفاً کدی که تست کردید رو قرار بدید.
در صفحه دموی آنلاین هضم قابل تست است، مثلا متن این متن منسوخ شده است.
به این متن منسوخشده است.
تبدیل می شود، اما متن این متن هضم شده است.
بدون تغییر می ماند.
نرمالایزر هضم برای اصلاح برخی از اشکالات مثل سرهمنویسی یا جدانویسی کلمات وابسته به لیست کلمات هست. در نمونهای که مثال زدید، «منسوخشده» در لیست کلمات وجود داشته و به همین خاطر شکل صحیحِ آن برگردانده شده ولی «هضمشده» چون در لیست کلمات وجود نداشته به همان صورتی که بوده برگشت داده شده.
منظور شما این هست که ایرادی وجود ندارد و از نظر نوشتاری هم نوع صحیح وجود "نیم فاصله" به جای "فاصله" بین کلمات "منسوخ" و "شده" هست؟ اگر این طور هست، در صورت امکان 2 سوال زیر رو پاسخ بدید:
سوال شما این بود که چرا نرمالایزر هضم، کلمهٔ «منسوخشده» رو سرهم و «هضم شده» رو جدا از هم برمیگردونه. پاسخ این بود که چون صورت نوشتاری این کلمات، به همین شکل در لیستِ کلماتِ هضم ثبت شده است. من راستش نباید به درستی یا نادرستی این شکل نوشتاری اشاره میکردم؛ چون اولاً سوال این نبود، دوماً این یک کتابخانهٔ پردازش زبان هست که مثل بسیاری از کتاخانههای دیگه مبتنی بر لیست کلمات و یکسری الگوریتمهای ماشینی، کار میکنه و این یعنی ممکنه برخی از عملکردهاش در برخی از شرایط درست نباشه؛ چون به هر حال الگوریتمها اگر از ۱۰۰ مورد ۹۹ مورد رو درست کنن احتمالش هست که یک مورد رو خراب کنن. لیست کلمات به صورت دستی/ماشینی تهیه میشه و ممکنه اشکالاتی در اون وجود داشته باشه یا کامل نباشه. سوماً بحث دربارهٔ درستی یا نادرستی شکل نوشتاری کلمات، یک بحث زبانشناسانه است و به دلیل دومی که عرض کردم نباید خروجی کتابخانههای پردازش زبان طبیعی رو ملاک محکمی بر صحتوسقم نوشتار صحیح و خصوصاً شکلِ نوشتارِ صحیحتر یک کلمه قرار داد.
جدایی از این بحث،
فرهنگستان، یک فرهنگ املایی خط فارسی منتشر کرده که شکل نوشتاری سرهم یا جدای بسیاری از کلماتِ بحثبرانگیز رو آورده و مابقی رو گفته سرهم و جداش جفتش درسته و این رو یک امر سلیقهای دونسته؛ بنابراین کلمات «منسوخ شده» و «هضم شده» چون در این فرهنگ وجود نداره شکل نوشتاری سرهم و جداشون، هر دو صحیحه. تا جایی که اطلاع دارم کتابخانهٔ هضم، بر اساس این فرهنگ، نرمالایزر نمیکنه که فکر میکنم بهتره این اتفاق بیفته. مثلاً در این مورد چون «منسوخ شده» صحیح هست بهتر میبود که تغییری داده نمیشد. این مورد رو باید بیشتر با آقای @nournia صحبت کنم.
برای غیرفعال کردن این عملکرد در نرمالایزر هضم، میتونید پارامتر correct_spacing رو False کنید. البته این کار باعث میشه بعضی از عملکردهای دیگه مثل اصلاح فاصلهگذاری پیشوند و پسوندها و اصلاح فواصل در نشانههای سجاوندی هم از کار بیفته. شاید حتی بهتر باشه یک پارامتر جدا برای این کار در نظر گرفته بشه. ممنون که بحثش رو باز کردید. این بحثها به بهبود کتابخانهٔ هضم کمک میکنه.
from hazm import Normalizer
print(Normalizer(correct_spacing=False).normalize("این قانون منسوخ شده است"))
ممنونم بابت توضیحات کاملی که ارائه کردید.
البته فکر میکنم منظور از جدانویسی و مرکب نویسی در متنی که هایلایت کردید انتخاب بین فاصله و نیم فاصله نیست و در خصوص چسباندن یا جدا نویسی دو کلمه این بحث مطرح شده (مثل میگویم و می گویم)، البته به شخصه دانشی در خصوص زبان شناسی ندارم و ممکنه اشتباه باشه این گفته من.
در خصوص مثال موضوع این صفحه، "منسوخ شده" رو صحیح تر می دونم، حداقل عمومی تر، (البته ممکنه شخص دیگری ورژن دیگر رو درست بدونه که نمی تونم اظهار نظر کنم که کدوم یک درست هست)، لذا به نظر من حداقل کاری که میشه انجام داد این هست که تنظیمی 3 حالته به ابزار هضم اضافه بشه که این گونه موارد رو
در خصوص تنظیم correct_spacing
هم همانطور که خودتون اشاره کردید راه کار مناسبی برای حل این موضوع نیست.
نه فقط محدود به پیوستهنویسی یا جدانویسی نیست. مواردی که باید با نیمفاصله یا فاصله از هم جدا بشه رو هم شامل میشه.
ممنون از پیشنهادتون. حالا این موارد رو باید بیشتر بررسی کنیم.
در ادامه «جدای از این بحث»: برداشت من از متون ویرایششده این بوده که عبارتهایی مثل «منسوخ شده» و «هضم شده»، اگر به صورت صفت به کار روند یک کلمه محسوب شده و باید با نیمفاصله نوشته شوند ولی در حالت فعل بهتر است جدانویسی را ملاک قرار دهیم. معیار دیگری هم که برخی از ویرایشگرها رعایت میکنند این است که عبارتهایی مانند «منسوخشده outdated» و «هضمشده digested» که معادل انگلیسی آنها یک کلمه است را همواره با نیمفاصله مینویسند.
ممنون بابت بسته شدن بدون توضیح و عدم احترام به زمان های صرف شده دیگران، البته از یک محصول ایرانی (که البته به نظر فقط یک لایه روی کد نوشته شده دیگران هست)، بیش از این هم نمیشه توقع داشت.
دلیل این تبدیل چی هست؟ به نظر اشتباه هست این تبدیل.
با چند کلمه دیگه به جای کلمه منسوخ تست کردم، این تبدیل انجام نشد. کلمه منسوخ نکته خاصی داره؟