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

# 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, ...]`.

#### درخواست استفاده از کوکی

با پذیرش کوکی به ما اجازه می‌دهید تا با بررسی تعامل شما با سایت و شناسایی بازدیدهای بعدی‌‌تان، کیفیت مستندات را بهبود ببخشیم.
سپاس از همکاری شما. ❤️

- Google Analytics
- GitHub

مدیریت تنظیمات