پرش به محتویات

normalizer

کاربرد عملی

برای آشنایی با کاربرد این ماژول می‌توانید به بخش کاربردهای هضم مراجعه کنید.

در پروژه‌های زیر از این ماژول استفاده شده است:

این ماژول شامل کلاس‌ها و توابعی برای نرمال‌سازی متن است.

Normalizer

این کلاس شامل توابعی برای نرمال‌سازی متن است.

پارامترها:

نام نوع توضیحات پیش‌فرض
correct_spacing bool

اگر True‍ فاصله‌گذاری‌ها را در متن، نشانه‌های سجاوندی و پیشوندها و پسوندها اصلاح می‌کند.

True
remove_diacritics bool

اگر True باشد اعرابِ حروف را حذف می‌کند.

True
remove_specials_chars bool

اگر True باشد برخی از کاراکترها و نشانه‌های خاص را که کاربردی در پردازش متن ندارند حذف می‌کند.

True
decrease_repeated_chars bool

اگر True باشد تکرارهای بیش از ۲ بار را به ۲ بار کاهش می‌دهد. مثلاً «سلاممم» را به «سلامم» تبدیل می‌کند.

True
persian_style bool

اگر True باشد اصلاحات مخصوص زبان فارسی را انجام می‌دهد؛ مثلاً جایگزین‌کردن کوتیشن با گیومه.

True
persian_numbers bool

اگر True باشد ارقام انگلیسی را با فارسی جایگزین می‌کند.

True
unicodes_replacement bool

اگر True باشد برخی از کاراکترهای یونیکد را با معادل نرمال‌شدهٔ آن جایگزین می‌کند.

True
seperate_mi bool

اگر True باشد پیشوند «می» و «نمی» را در افعال جدا می‌کند.

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]

لیستی از توکن‌های نرمال‌سازی شده به شکل [token1, token2, ...].