normalizer
کاربرد عملی
برای آشنایی با کاربرد این ماژول میتوانید به بخش کاربردهای هضم مراجعه کنید.
در پروژههای زیر از این ماژول استفاده شده است:
این ماژول شامل کلاسها و توابعی برای نرمالسازی متن است.
Normalizer
¶
این کلاس شامل توابعی برای نرمالسازی متن است.
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
correct_spacing |
bool
|
اگر |
True
|
remove_diacritics |
bool
|
اگر |
True
|
remove_specials_chars |
bool
|
اگر |
True
|
decrease_repeated_chars |
bool
|
اگر |
True
|
persian_style |
bool
|
اگر |
True
|
persian_numbers |
bool
|
اگر |
True
|
unicodes_replacement |
bool
|
اگر |
True
|
seperate_mi |
bool
|
اگر |
True
|
normalize(text)
¶
متن را نرمالسازی میکند.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.normalize('اِعلاممممم کَرد : « زمین لرزه ای به بُزرگیِ 6 دهم ریشتر ...»')
'اعلام کرد: «زمینلرزهای به بزرگی ۶ دهم ریشتر …»'
>>> normalizer.normalize('')
''
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید نرمالسازی شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنِ نرمالسازیشده. |
correct_spacing(text)
¶
فاصلهگذاریها را در پیشوندها و پسوندها اصلاح میکند.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.correct_spacing("سلام دنیا")
'سلام دنیا'
>>> normalizer.correct_spacing("به طول ۹متر و عرض۶")
'به طول ۹ متر و عرض ۶'
>>> normalizer.correct_spacing("کاروانسرا")
'کاروانسرا'
>>> normalizer.correct_spacing("سلام به همه")
'سلام به همه'
>>> normalizer.correct_spacing("سلام دنیـــا")
'سلام دنیا'
>>> normalizer.correct_spacing("جمعهها که کار نمی کنم مطالعه می کنم")
'جمعهها که کار نمیکنم مطالعه میکنم'
>>> normalizer.correct_spacing(' "سلام به همه" ')
'"سلام به همه"'
>>> normalizer.correct_spacing('')
''
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید فاصلهگذاریهای آن اصلاح شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنی با فاصلهگذاریهای اصلاحشده. |
remove_diacritics(text)
¶
اِعراب را از متن حذف میکند.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.remove_diacritics('حَذفِ اِعراب')
'حذف اعراب'
>>> normalizer.remove_diacritics('آمدند')
'آمدند'
>>> normalizer.remove_diacritics('متن بدون اعراب')
'متن بدون اعراب'
>>> normalizer.remove_diacritics('')
''
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید اعراب آن حذف شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنی بدون اعراب. |
remove_specials_chars(text)
¶
برخی از کاراکترها و نشانههای خاص را که کاربردی در پردازش متن ندارند حذف میکند.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.remove_specials_chars('پیامبر اکرم ﷺ')
'پیامبر اکرم '
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید کاراکترها و نشانههای اضافهٔ آن حذف شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنی بدون کاراکترها و نشانههای اضافه. |
decrease_repeated_chars(text)
¶
تکرارهای زائد حروف را در کلماتی مثل سلامممممم حذف میکند و در مواردی که نمیتواند تشخیص دهد دست کم به دو تکرار کاهش میدهد.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.decrease_repeated_chars('سلامممم به همه')
'سلام به همه'
>>> normalizer.decrease_repeated_chars('سلامم به همه')
'سلامم به همه'
>>> normalizer.decrease_repeated_chars('سلامم را برسان')
'سلامم را برسان'
>>> normalizer.decrease_repeated_chars('سلاممم را برسان')
'سلام را برسان'
>>> normalizer.decrease_repeated_chars('')
''
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید تکرارهای زائد آن حذف شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنی بدون کاراکترهای زائد یا حداقل با دو تکرار. |
persian_style(text)
¶
برخی از حروف و نشانهها را با حروف و نشانههای فارسی جایگزین میکند.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.persian_style('"نرمالسازی"')
'«نرمالسازی»'
>>> normalizer.persian_style('و ...')
'و …'
>>> normalizer.persian_style('10.450')
'10٫450'
>>> normalizer.persian_style('')
''
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید حروف و نشانههای آن با حروف و نشانههای فارسی جایگزین شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنی با حروف و نشانههای فارسیسازی شده. |
persian_number(text)
¶
اعداد لاتین و علامت % را با معادل فارسی آن جایگزین میکند.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.persian_number('5 درصد')
'۵ درصد'
>>> normalizer.persian_number('۵ درصد')
'۵ درصد'
>>> normalizer.persian_number('')
''
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید اعداد لاتین و علامت % آن با معادل فارسی جایگزین شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنی با اعداد و علامت ٪ فارسی. |
unicodes_replacement(text)
¶
برخی از کاراکترهای خاص یونیکد را با معادلِ نرمال آن جایگزین میکند. غالباً این کار فقط در مواردی صورت میگیرد که یک کلمه در قالب یک کاراکتر یونیکد تعریف شده است.
فهرست این کاراکترها و نسخهٔ جایگزین آن:
کاراکتر | نسخهٔ جایگزین |
---|---|
﷽ | بسم الله الرحمن الرحیم |
﷼ | ریال |
ﷰ، ﷹ | صلی |
ﷲ | الله |
ﷳ | اکبر |
ﷴ | محمد |
ﷵ | صلعم |
ﷶ | رسول |
ﷷ | علیه |
ﷸ | وسلم |
ﻵ، ﻶ، ﻷ، ﻸ، ﻹ، ﻺ، ﻻ، ﻼ | لا |
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.remove_specials_chars('پیامبر اکرم ﷺ')
'پیامبر اکرم '
>>> normalizer.remove_specials_chars('')
''
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید برخی از کاراکترهای یونیکد آن (جدول بالا)، با شکل استاندارد، جایگزین شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنی که برخی از کاراکترهای یونیکد آن با شکل استاندارد جایگزین شده است. |
seperate_mi(text)
¶
پیشوند «می» و «نمی» را در افعال جدا کرده و با نیمفاصله میچسباند.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.seperate_mi('نمیدانم چه میگفت')
'نمیدانم چه میگفت'
>>> normalizer.seperate_mi('میز')
'میز'
>>> normalizer.seperate_mi('')
''
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
text |
str
|
متنی که باید پیشوند «می» و «نمی» در آن جدا شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
متنی با «می» و «نمی» جدا شده. |
token_spacing(tokens)
¶
توکنهای ورودی را به فهرستی از توکنهای
نرمالسازی شده تبدیل میکند. در این فرایند ممکن
است برخی از توکنها به یکدیگر بچسبند؛ برای مثال:
['زمین', 'لرزه', 'ای']
تبدیل میشود
به: ['زمینلرزهای']
.
مثالها:
>>> normalizer = Normalizer()
>>> normalizer.token_spacing(['کتاب', 'ها'])
['کتابها']
>>> normalizer.token_spacing(['او', 'می', 'رود'])
['او', 'میرود']
>>> normalizer.token_spacing(['ماه', 'می', 'سال', 'جدید'])
['ماه', 'می', 'سال', 'جدید']
>>> normalizer.token_spacing(['اخلال', 'گر'])
['اخلالگر']
>>> normalizer.token_spacing(['زمین', 'لرزه', 'ای'])
['زمینلرزهای']
>>> normalizer.token_spacing([])
[]
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
tokens |
List[str]
|
توکنهایی که باید نرمالسازی شود. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
List[str]
|
لیستی از توکنهای نرمالسازی شده به شکل
|