Package: parsinorm
ParsiNormThe normalization step is so essential to format unification in pure textual applications. However, for embedded language models in speech processing modules, normalization is not limited to format unification. Moreover, it has to convert each readable symbol, number, etc., to how they are pronounced.functionalitiesGeneral NormalizationSentence tokenizer (you must add postagger.model to a folder named resources in where parsinorm is installed for example "/home/yourComputerName/.anaconda3/lib/python3.8/site-packages/parsinorm/resources")Word TokenizerNormalizing persian and English charactersNormalizing Numbers (Converting to unique perisan Number)Converting Persian, English, Arabic symbols to normalized charactersNormalize PunctuationsRemoving emojisConverting HTML tags to characters and symbolsHaving unique floating point numberRemoving different comma between numbersRemoving repeated punctuationsconvert semi sapce to nullSpeech NormalizationConverting mail and url to how are pronouncedConverting Date and Times to how they are pronouncedConverting special numbers to how they are pronouncedConverting English and Persian Abbrevations to how they are pronouncedconverting telephone numbers to how they are pronounced in PersianConverting currency to how they are readConverting some symbols to how they are read such as %, °, *, #, +, &, ΔUsage>>>fromparsinormimportMail_url_cleaner>>>mail_url_cleaner=Mail_url_cleaner()>>>mail_url_cleaner.find_mails_clean(sentence="info@hara.ai")infoatharadotai>>>mail_url_cleaner.find_urls_clean(sentence="https://hara.ai/#services")httpsdonoghteslashslashharadotai>>>fromparsinormimportDate_time_to_text>>>date_time_to_text=Date_time_to_text()>>>date_time_to_text.date_to_text(sentence='2021/10/27')بیستوهفتماکتبرسالدوهزاروبیستویک>>>date_time_to_text.time_to_text(sentence='22:57:11')بیستودووپنجاهوهفتدقیقهویازدهثانیه>>>fromparsinormimportGeneral_normalization>>>general_normalization=General_normalization()>>>general_normalization.alphabet_correction(sentence='ﻙﯘݙݤﮮ')کودکی>>>general_normalization.semi_space_correction(sentence='کتاب\u200bخانه')کتابخانه>>>general_normalization.english_correction(sentence='naïve')naive>>>general_normalization.html_correction(sentence='&quot;')">>>general_normalization.arabic_correction(sentence='ﷺ')صلیاللهعلیهوسلم>>>general_normalization.punctuation_correction(sentence="…")...>>>general_normalization.specials_chars(sentence="℡")TEL>>>general_normalization.remove_emojis(sentence='😊')>>>general_normalization.unique_floating_point(sentence='1،2')۱.۲>>>general_normalization.remove_comma_between_numbers(sentence='1٬234')۱۲۳۴>>>general_normalization.number_correction(sentence="⑤")۵>>>general_normalization.remove_not_desired_chars(sentence="^ Hi ~")Hi>>>general_normalization.remove_repeated_punctuation(sentence="!!!!!")!>>>fromparsinormimportTelephone_number>>>telephone_number=Telephone_number()>>>telephone_number.find_phones_replace(sentence='تلفن ۰۲۱۳۳۴۵۶۷۸۸')تلفنصفربیستویکسیوسهچهلوپنجشصتوهفتهشتادوهشت>>>fromparsinormimportAbbreviation>>>abbreviation=Abbreviation()>>>abbreviation.replace_date_abbreviation(sentence=".در سال 1400 ه.ش")درسال1400هجریشمسی>>>abbreviation.replace_persian_label_abbreviation(sentence='امام زمان (عج)')امامزمانعجلاللهتعالیفرجهالشریف>>>abbreviation.replace_law_abbreviation(sentence='در ق.ا آمده است')درقانوناساسیآمدهاست>>>abbreviation.replace_book_abbreviation(sentence='به کتاب زیر ر.ک مراجعه کنید')بهکتابزیررجوعکنیدمراجعهکنید>>>abbreviation.replace_other_abbreviation(sentence='در قانون ج.ا آمده است')درقانونجمهوریاسلامیآمدهاست>>>abbreviation.replace_English_abbrevations(sentence='U.S.A')یواسآ>>>fromparsinormimportTTS_normalization>>>TTS_normalization=TTS_normalization()>>>TTS_normalization.math_correction(sentence='⅞')هفتهشتم>>>TTS_normalization.replace_currency(sentence='۳۳$')۳۳دلار>>>TTS_normalization.replace_symbols(sentence='۳۳°')۳۳درجه>>>fromparsinormimportSpecial_numbers>>>special_numbers=Special_numbers()>>>special_numbers.convert_numbers_to_text(sentence='122')صدوبیستودو>>>special_numbers.replace_national_code(sentence='0499370899')صفرچهارنهصدونودوسههفتادهشتصدونودونه>>>special_numbers.replace_card_number(sentence='6037701689095443')شصتسیوهفتهفتادشانزدههشتادونهصفرنهپنجاهوچهارچهلوسه>>>special_numbers.replace_shaba(sentence='IR820540102680020817909002')آیآرهشتادودوصفرپنجچهلدهبیستوششهشتادصفردوصفرهشتهفدهنودنودصفردو>>>fromparsinormimportTokenizer>>>tokenizer=Tokenizer()>>>tokenizer.sentence_tokenize('این مثالی است که در آن یک جمله فقط بر اساس علائم نگارشی جدا می‌شود.',verb_seperator=False)['این مثالی است که در آن یک جمله فقط بر اساس علائم نگارشی جدا میشود .']>>>tokenizer.sentence_tokenize('این مثالی است که در آن یک جمله با فعل تمام شده‌است ولی با نقطه تمام نشده‌است به همین دلیل آن را بر اساس فعل جدا می‌کنیم',verb_seperator=True)[' این مثالی است',' که در آن یک جمله با فعل تمام شده\u200cاست',' ولی با نقطه تمام نشده\u200cاست',' به همین دلیل آن را بر اساس فعل جدا می\u200cکنیم']>>>tokenizer.word_tokenize('می‌توانید از طریق اینemail با ما در ارتباط باشید: info@hara.ai. همچنین با هشتگ #hara ما را دنبال کنید')['می\u200cتوانید','از','طریق','این','email','با','ما','در','ارتباط','باشید',':','info@hara.ai','.','همچنین','با','هشتگ','hara#','ما','را','دنبال','کنید']ReferenceIf you use or discuss this normalization tool in your work, please cite our paper :@inproceedings{oji2021parsinorm,
  title={ParsiNorm: A Persian Toolkit for Speech Processing Normalization},
  author={Oji, Romina and Razavi, Seyedeh Fatemeh and Dehsorkh, Sajjad Abdi and Hariri, Alireza and Asheri, Hadi and Hosseini, Reshad},
  booktitle={2021 7th International Conference on Signal Processing and Intelligent Systems (ICSPIS)},
  pages={1--5},
  year={2021},
  organization={IEEE}
}ContactIf you have any technical question regarding the dataset or publication, please
create an issue in this repository.