برنامه پیش پردازش متنهای عربی با پایتون
اگر شما هم در علوم داده فعال هستید احتمالا با دادههای متنی زیادی سر و کار دارید حالا اگر این دادههای متنی به زبان عربی باشند قطعا پیش پردازشهای زیادی را لازم دارند یکی از این پیش پردازشها حدف کاراکترهای خاص یا اعراب خاص در زبان عربی است که احتمالا در فرآیند پردازش متن معمولا نه در همه جا نیاز به حذف آنها دارید. در این نوشته یک برنامه با کمک زبان پایتون را برای شما آماده کردهایم تا بتوانید به سادگی از آن برای پیش پردازش متنهای عربی استفاده کنید و از آن به سادگی بهره ببرید.
برنامه پیش پردازش متنهای عربی با پایتون
بدون هیچ صحبت اضافهای برنامهی زیر را برای شما به اشتراک خواهیم گذاشت:
# coding=utf-8
import re
import string
import sys
import argparse
arabic_punctuations = '''`÷×؛<>_()*&^%][ـ،/:"؟.,'{}~¦+|!”…“–ـ'''
english_punctuations = string.punctuation
punctuations_list = arabic_punctuations + english_punctuations
arabic_diacritics = re.compile("""
ّ | # Tashdid
َ | # Fatha
ً | # Tanwin Fath
ُ | # Damma
ٌ | # Tanwin Damm
ِ | # Kasra
ٍ | # Tanwin Kasr
ْ | # Sukun
ـ # Tatwil/Kashida
""", re.VERBOSE)
def normalize_arabic(text):
text = re.sub("[إأآا]", "ا", text)
text = re.sub("ى", "ي", text)
text = re.sub("ؤ", "ء", text)
text = re.sub("ئ", "ء", text)
text = re.sub("ة", "ه", text)
text = re.sub("گ", "ك", text)
return text
def remove_diacritics(text):
text = re.sub(arabic_diacritics, '', text)
return text
def remove_punctuations(text):
translator = str.maketrans('', '', punctuations_list)
return text.translate(translator)
def remove_repeating_char(text):
return re.sub(r'(.)\1+', r'\1', text)
parser = argparse.ArgumentParser(description='Pre-process arabic text (remove '
'diacritics, punctuations, and repeating '
'characters).')
parser.add_argument('-i', '--infile', type=argparse.FileType(mode='r', encoding='utf-8'),
help='input file.', required=True)
parser.add_argument('-o', '--outfile', type=argparse.FileType(mode='w', encoding='utf-8'),
help='out file.', required=True)
if __name__ == '__main__':
args = parser.parse_args()
text = args.infile.read()
text = remove_punctuations(text)
text = remove_diacritics(text)
text = remove_repeating_char(text)
args.outfile.write(text)
کد بالا را با نام clean_arabic_text.py ذخیره کنید؛ این کد به زبان برنامه نویسی پایتون نوشته شده است و برای استفاده از آن باید حتما پایتون را روی سیستم خود نصب کنید. حالا با توجه به کد بالا هر جا که بخواهید از این کد برای پیش پردازش متنهای خود استفاده کنید کافیست در خط فرمان مثل دستور زیر استفاده کنید:
python clean_arabic_text.py -i infile.txt -o outfile.txt
کد بالا به شما کمک خواهد کردی فایلی با نام infile.txt را که به زبان عربی میباشد را به یک متن تمیز و پیش پردازش شده با نام outfile.txt تبدیل کنید.
اگر علاقه دارید زبان برنامه نویسی پایتون را بیشتر یاد بگیرید از کتابهای زیر به صورت رایگان استفاده کنید:
اگر سوالی در ارتباط با کد بالا دارید در بخش نظرات همین نوشته از ما بپرسید.



















میشه ازش برای دیتاستهای بزرگ هم استفاده کرد؟
بله، این کد برای پردازش دیتاستهای بزرگ هم قابل استفاده است. فقط کافیست فایل ورودی شما به اندازه کافی بزرگ باشد.
این برنامه فقط برای فایل متنی هست؟
بله، این برنامه برای پردازش فایلهای متنی طراحی شده است. اگر نیاز به پردازش متن در قالبهای دیگر دارید، لطفاً جزئیات بیشتری ارائه دهید.
آیا بعد از حذف اعراب و علائم، معنای متن در بعضی موارد تغییر نمیکنه؟
بله در برخی موارد ممکن است حذف اعراب باعث تغییر جزئی در معنا شود، اما معمولاً برای پردازشهای آماری و مدلسازی زبان، این حذف ضروری است.
برای فایلهای خیلی بزرگ، اجرای این اسکریپت سریع هست؟
این اسکریپت بهینهسازی شده است و برای فایلهای بزرگ نیز عملکرد قابل قبولی دارد، اما برای فایلهای بسیار حجیم ممکن است نیاز به بهینهسازیهای بیشتری باشد
آیا این کد برای همه فونتها و نسخههای عربی مناسب هست؟
این کد برای پردازش عمومی متنهای عربی طراحی شده و برای اکثر موارد کاربردی است، اما ممکن است برای نسخههای بسیار خاص یا فونتهای غیر استاندارد نیاز به تنظیمات جزئی داشته باشد.