m3hrdadfi commited on
Commit
09f9c26
1 Parent(s): ad582b6

Refine saied code

Browse files
Files changed (3) hide show
  1. src/data_utils.py +3 -26
  2. src/dictionary.py +6 -0
  3. src/normalizer.py +75 -15
src/data_utils.py CHANGED
@@ -7,7 +7,7 @@ import string
7
  from normalizer import normalize
8
 
9
  persian_regex = "0-9۰۱۲۳۴۵۶۷۸۹ءآئابتثجحخدذرزسشصضطظعغفقلمنهوپچژکگیە\u200c"
10
- allowed_char = string.ascii_letters + string.digits + ':/@_-. '
11
 
12
  def filter_by_lang_regex(text, ratio=0.7, regex="0-9۰۱۲۳۴۵۶۷۸۹ءآئابتثجحخدذرزسشصضطظعغفقلمنهوپچژکگیە\u200c"):
13
  candidate_text = re.sub(r"[^" + regex + "]+", " ", six.ensure_str(text)).replace(" ", "")
@@ -26,34 +26,11 @@ def filter_by_num_sents(text, gt=2):
26
 
27
  def normalizer(text, do_lowercase=False):
28
  text = normalize(text)
29
- text = text.replace('ـ', '')
30
  if do_lowercase:
31
  text = text.lower()
32
 
33
  return text
34
 
35
 
36
- def clean_url(text):
37
- ## removing html tags
38
- text = re.sub('<.*?>', '', text)
39
- ## removing normal(without space urls)
40
- text = re.sub(r'(?:(?:http|https):\/\/)?([-a-zA-Z0-9.]{2,256}\.[a-z]{2,4})\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?', "", text)
41
- ## removing urls that contains space
42
- result = ''
43
- for char in text:
44
- if char in allowed_char:
45
- result += char
46
- result = result.replace(' ', '')
47
- result = result.split(':')
48
- for phrase in result:
49
- p = phrase
50
- if '/ /' in p:
51
- if ('https :' + p) in text:
52
- text = text.replace('https :' + p, '')
53
- elif ('http :' + p) in text:
54
- text = text.replace('http :' + p, '')
55
- elif '@' in p:
56
- if p in text:
57
- text = text.replace(p, '')
58
-
59
- return text
 
7
  from normalizer import normalize
8
 
9
  persian_regex = "0-9۰۱۲۳۴۵۶۷۸۹ءآئابتثجحخدذرزسشصضطظعغفقلمنهوپچژکگیە\u200c"
10
+
11
 
12
  def filter_by_lang_regex(text, ratio=0.7, regex="0-9۰۱۲۳۴۵۶۷۸۹ءآئابتثجحخدذرزسشصضطظعغفقلمنهوپچژکگیە\u200c"):
13
  candidate_text = re.sub(r"[^" + regex + "]+", " ", six.ensure_str(text)).replace(" ", "")
 
26
 
27
  def normalizer(text, do_lowercase=False):
28
  text = normalize(text)
29
+
30
  if do_lowercase:
31
  text = text.lower()
32
 
33
  return text
34
 
35
 
36
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/dictionary.py CHANGED
@@ -131,3 +131,9 @@ characters = {
131
  }
132
 
133
  special_tokens = {}
 
 
 
 
 
 
 
131
  }
132
 
133
  special_tokens = {}
134
+
135
+ words_map = {
136
+ "Leave a comment": "",
137
+ "[…]": "",
138
+ "[.]": "",
139
+ }
src/normalizer.py CHANGED
@@ -1,5 +1,6 @@
1
  import hazm
2
  import re
 
3
 
4
  from regexes.currency import CURRENCY_REGEX
5
  from regexes.email import EMAIL_REGEX
@@ -13,6 +14,8 @@ from regexes.persian import PERSIAN_REGEX
13
  from regexes.punk import PUNK_REGEX
14
  import dictionary
15
 
 
 
16
 
17
  def make_trans(list_a, list_b):
18
  return dict((ord(a), b) for a, b in zip(list_a, list_b))
@@ -23,32 +26,65 @@ def multiple_replace(text, chars_to_mapping):
23
  return re.sub(pattern, lambda m: chars_to_mapping[m.group()], str(text))
24
 
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  ar2fa_digits = make_trans("٠١٢٣٤٥٦٧٨٩٪", "۰۱۲۳۴۵۶۷۸۹٪")
27
  fa2en_digits = make_trans("۰۱۲۳۴۵۶۷۸۹٪", "0123456789%")
28
- normalizer = hazm.Normalizer(persian_numbers=True)
29
 
30
 
31
  def normalize(text, zwnj="\u200c", tokenized=False):
32
  text = text.replace("\n", " ").replace("\t", " ")
33
  text = re.sub(r"\u200c+", "\u200c", text)
34
-
35
  text = normalizer.normalize(text)
36
 
37
  if len(dictionary.characters) > 0:
38
  text = multiple_replace(text, dictionary.characters)
39
 
 
 
 
40
  text = text.translate(ar2fa_digits)
41
  text = text.translate(fa2en_digits)
42
 
43
  text = SINGLE_QUOTE_REGEX.sub("'", text)
44
  text = DOUBLE_QUOTE_REGEX.sub('"', text)
45
  text = CURRENCY_REGEX.sub(r" \1 ", text)
46
- text = URL_REGEX.sub(r" \1 ", text)
47
- text = EMAIL_REGEX.sub(r" \1 ", text)
 
48
  text = PHONE_REGEX.sub(r" \1 ", text)
49
  text = NUMBERS_REGEX.sub(r" \1 ", text)
50
  text = LATIN_REGEX.sub(r" \1 ", text)
51
- text = PUNK_REGEX.sub(r" \1 ", text)
52
 
53
  # Allow only english and persian characters
54
  text = re.sub(PERSIAN_REGEX, " ", text)
@@ -81,13 +117,37 @@ def normalize(text, zwnj="\u200c", tokenized=False):
81
  return " ".join(tokens)
82
 
83
 
84
- # if __name__ == '__main__':
85
- # import textwrap
86
-
87
- # input_text = "دارهٔ تحقیقات فدرال در سال ۱۹۰۸ به نام ادارهٔ تحقیقات (BOI یا BI) بنیان‌گذاری شد. نام این سازمان در سال ۱۹۳۵ به ادارهٔ تحقیقات فدرال تغییر یافت. دفتر مرکزی اف‌بی‌آی در ساختمان جی. ادگار هوور در شهر واشینگتن، دی.سی. واقع شده‌است."
88
- # input_text = "یونان (به یونانی: Ελλάδα, اِلادا)"
89
- # input_text = "نسخهٔ"
90
- # input_text = "ὑ蕉Ұ제ṅ尘̲改座◦花芝秀黄天자埃澤ಿ ˈazbab اینجا ایران خانه‌شما است؟!۱۲۳۱۲۳۱۳۱۲ اَلْحُرُوفُ ٱلْعَرَبِیَّة"
91
- # input_text = normalize(input_text)
92
- # print(textwrap.fill(input_text))
93
- # print(normalize(input_text, tokenized=True))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import hazm
2
  import re
3
+ import string
4
 
5
  from regexes.currency import CURRENCY_REGEX
6
  from regexes.email import EMAIL_REGEX
 
14
  from regexes.punk import PUNK_REGEX
15
  import dictionary
16
 
17
+ allowed_char = string.ascii_letters + string.digits + ':/@_-. '
18
+
19
 
20
  def make_trans(list_a, list_b):
21
  return dict((ord(a), b) for a, b in zip(list_a, list_b))
 
26
  return re.sub(pattern, lambda m: chars_to_mapping[m.group()], str(text))
27
 
28
 
29
+ def clean_url(text):
30
+ # removing html tags
31
+ text = re.sub('<.*?>', '', text)
32
+
33
+ # removing normal(without space urls)
34
+ text = re.sub(r'(?:(?:http|https):\/\/)?([-a-zA-Z0-9.]{2,256}\.[a-z]{2,4})\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?', "",
35
+ text)
36
+
37
+ # removing urls that contains space
38
+ result = ''
39
+ for char in text:
40
+ if char in allowed_char:
41
+ result += char
42
+ result = result.replace(' ', '')
43
+ result = result.split(':')
44
+ for phrase in result:
45
+ p = phrase
46
+ if '//' in p:
47
+ if ('https :' + p) in text:
48
+ text = text.replace('https :' + p, '')
49
+ elif ('http :' + p) in text:
50
+ text = text.replace('http :' + p, '')
51
+ elif '@' in p:
52
+ if p in text:
53
+ text = text.replace(p, '')
54
+
55
+ return text
56
+
57
+
58
  ar2fa_digits = make_trans("٠١٢٣٤٥٦٧٨٩٪", "۰۱۲۳۴۵۶۷۸۹٪")
59
  fa2en_digits = make_trans("۰۱۲۳۴۵۶۷۸۹٪", "0123456789%")
60
+ normalizer = hazm.Normalizer(persian_numbers=True, punctuation_spacing=False)
61
 
62
 
63
  def normalize(text, zwnj="\u200c", tokenized=False):
64
  text = text.replace("\n", " ").replace("\t", " ")
65
  text = re.sub(r"\u200c+", "\u200c", text)
66
+ text = text.replace('ـ', '')
67
  text = normalizer.normalize(text)
68
 
69
  if len(dictionary.characters) > 0:
70
  text = multiple_replace(text, dictionary.characters)
71
 
72
+ if len(dictionary.words_map) > 0:
73
+ text = multiple_replace(text, dictionary.words_map)
74
+
75
  text = text.translate(ar2fa_digits)
76
  text = text.translate(fa2en_digits)
77
 
78
  text = SINGLE_QUOTE_REGEX.sub("'", text)
79
  text = DOUBLE_QUOTE_REGEX.sub('"', text)
80
  text = CURRENCY_REGEX.sub(r" \1 ", text)
81
+ text = clean_url(text)
82
+ text = URL_REGEX.sub(" ", text)
83
+ text = EMAIL_REGEX.sub(" ", text)
84
  text = PHONE_REGEX.sub(r" \1 ", text)
85
  text = NUMBERS_REGEX.sub(r" \1 ", text)
86
  text = LATIN_REGEX.sub(r" \1 ", text)
87
+ # text = PUNK_REGEX.sub(r" \1 ", text) # must be remained the same!
88
 
89
  # Allow only english and persian characters
90
  text = re.sub(PERSIAN_REGEX, " ", text)
 
117
  return " ".join(tokens)
118
 
119
 
120
+ if __name__ == '__main__':
121
+ import textwrap
122
+
123
+ # input_text = "دارهٔ تحقیقات فدرال در سال ۱۹۰۸ به نام ادارهٔ تحقیقات (BOI یا BI) بنیان‌گذاری شد. نام این سازمان در سال ۱۹۳۵ به ادارهٔ تحقیقات فدرال تغییر یافت. دفتر مرکزی اف‌بی‌آی در ساختمان جی. ادگار هوور در شهر واشینگتن، دی.سی. واقع شده‌است."
124
+ # input_text = "یونان (به یونانی: Ελλάδα, اِلادا)"
125
+ # input_text = "نسخهٔ"
126
+ # input_text = "ὑ蕉Ұ제ṅ尘̲改座◦花芝秀黄天자埃澤ಿ ˈazbab اینجا ایران خانه‌شما است؟!۱۲۳۱۲۳۱۳۱۲ اَلْحُرُوفُ ٱلْعَرَبِیَّة"
127
+ input_text = """
128
+ قـــــــــــــــــرار بود با هم کنـــــــــــــار بیایم نه اینکه از کنــــــــــــار هم رد بشیم...!!!
129
+ اگر روزی دلت لبریز غم بود گذارت بر مزار کهنه ام بود بگو این بی نصیب خفته در خاک یه روزی عاشق و دیوانه ام بود...
130
+ خبر به دورترین نقطه جهان برسد نخواست او به من خسته ، بی کمان برسد شکنجه بیشتر از این که پیش چشم خودت کسی که سهم تو باشد به دیگران برسد خدا کند ، که نفرین نمی کنم نکند به او که عاشق او بوده ام زیان برسد خدا کند فقط این عشق از سرم برود خدا کند که فقط زود آن زمان برسد...
131
+ ترسم که شبی از غم ناگه بمیرم در بستر دلسوز با آه بمیرم آن لحظه آخر که اجل گفت بمیر ای کاش تو را بینم و آنگاه بمیرم
132
+ خوشبختی را دیروز به حراج گذاشتند ولی حیف که من زاده ی امروزم... خدایا جهنم فرداست پس چرا امروز می سوزم ؟!!
133
+ در کرانه محبت رنگ چشمانت را دیدم در عمق بی کران آسمان رخ تو را دیدم دیدنت آرزوی من شده آن را از من دریغ مکن
134
+ کوه باشی صخره هایت می شوم... اشک باشی دیدگانت می شوم... رود باشی چشمه سارت می شوم... دوست باشی دوستدارت می شوم...!
135
+ امتیاز شما به این کانالوبسایت پردیس ایرانیان آموزش دوره های تخصصی ماساژ زیر نظر مربی فنی و حرفه ای عنوان سایت : پردیس ایرانیان لینک سایت : http://pardisiranian.ir/ آی دی اینستاگرام : pardisiranian.info@ لینک اینستاگرام: […]
136
+ Leave a commentپیج اینستاگرام, کانال برنزی, لینک سایتآموزش ماساژ زیر نظر فنی حرفه ای, آموزش ماساژ فنی حرفه ای, آموزش ماساژ فنی حرفه ای تهران, دوره ماساژ فدراسیون پزشکی ورزشی, فدراسیون بین المللی ماساژ ایران, ماساژ آروماتراپی, ماساژ تخصصی, ماساژ سوئدی, ماساژ لیفتینگ صورت, مربی آموزش ماساژ
137
+ بایگانی کانالها گزینش ماه اکتبر 2018 سپتامبر 2018 آگوست 2018 جولای 2018 ژوئن 2018 می 2018 آوریل 2018 فوریه 2018
138
+ کانال ها بر اساس موضوع گزینش دسته پیج اینستاگرام ربات پیام رسان بله سایر کانال ها کانال آموزشی کانال آی گپ کانال اجتماعی-سیاسی-فرهنگی کانال ایتا کانال برنزی کانال بله کانال بیسفون کانال تجاری کانال تفریحی کانال تلگرام کانال خبری کانال رسمی کانال سروش کانال سلام کانال شخصی کانال گپ کانال محلی کانال نقره ای کانال های طلایی کانال ویسپی لینک سایت مطالب سایت
139
+ کانال تبلیغاتی "باکس آگهی" در پیام رسان بله عنوان کانال : کانال تبلیغاتی "باکس آگهی" در پیام رسان بله نام...
140
+ عنوان سایت:کسب در آمد از طریق گوشی همراه و اپلیکیشن ۷۰۳۰ لینک سایت : https://7030.ir/r/sayed97 توضیحات کامل کانال:سامانه «هفتاد سی»...
141
+ دکوراسیون داخلی سالن های زیبایی نام پیام رسان: تلگرام و اینستاگرام لینک کانال تلگرام : https://t.me/designer_ir لینک صفحه اینستاگرام :...
142
+ نصب -تعمیر و فروش انواع کولرگازی عنوان کانال : نصب -تعمیر و فروش انواع کولرگازی نام پیام رسان: تلگرام لینک...
143
+ کانال بازیگر ایرانی خانم شبنم قلی خانی عنوان کانال : کانال بازیگر ایرانی خانم شبنم قلی خانی نام پیام رسان:...
144
+ تارنمای جامع ثبت کانال ;کانال سروش,کانال تلگرام,کانال بیسفون, کانال گپ, کانال ویسپی, کانال بیسفون پلاس, کانال ایتا, کانال آی گپ, کانال سلام, پیج اینستاگرام,کانال بله,گروه سروش,گروه تلگرامی,گروه بیسفون,گروه گپ,گروه آی گپ,گروه ایتا,گروه سلام,گروه بله,تبلیغات کانال تلگرام,تبلیغات کانال بیسفون,تبلیغات کانال گپ,تبلیغات کانال ویسپی,تبلیغات کانال بیسفون,تبلیغات کانال ایتا,تبلیغات کانال آی گپ,تبلیغات کانال سلام,تبلیغات کانال بله,گروه تبلیغاتی پیام رسان سروش,گروه تبلیغاتی تلگرام,گروه تبلیغاتی بیسفون,گروه تبلیغاتی گپ,گروه تبلیغاتی ویسپی,گروه تبلیغاتی آی گپ,گروه تبلیغاتی سلام,گروه تبلیغاتی بله,افزایش مببر سروش,خرید ممبر سروش,حرید ممبر تلگرام,افزایش ممبر تلگرام,خرید ممبر بیسفون,افزایش ممبر بیسفون,خرید ممبر ایتا,افزایش ممبر ایتا,خرید ممبرآی گپ,افزایش ممبر آی گپ,حرید ممبر گپ,افزایش ممبرگپ,خرید ممبرسلام,افزایش ممبر سلام,خرید ممبر بله ,افزایش ممبر بله,درگاه پیام رسان داخلی,فروشگاه پیام رسان سروش,فروشگاه پیام رسان بله,فروشگاه پیام رسان گپ,فروشگاه پیام رسان آِ گپ,تبلیغات پیام رسانهای داخلی
145
+ آموزش ماساژ زیر نظر فنی حرفه ای آموزش ماساژ فنی حرفه ای آموزش ماساژ فنی حرفه ای تهران آون اتوکلاو ارگانیک تریتا انکوباتور انکوباتور یخچالدار تجهیز کامل آزمایشگاه غذایی تعمیر مبل تور آنتالیا تور ارمنستان تور استانبول تور چین تور گرجستان خرید ظرف شویی خرید کولر گازی دوره ماساژ فدراسیون پزشکی ورزشی ربات پیام رسان بله سانتریفیوژ ژربر سانتریفیوژ یونیورسال فدراسیون بین المللی ماساژ ایران فروشگاه ارگانیک تریتا فروشگاه ارگانیک در پیام رسان بله فروشگاه ارگانیک شیراز فروشگاه معتبر ارگانیک ماساژ آروماتراپی ماساژ تخصصی ماساژ سوئدی ماساژ لیفتینگ صورت مربی آموزش ماساژ هود شیمیایی هود لامینار پی اچ متر دیجیتال کانال آموزشی کانال باکس آگهی کانال بله بانک ملی کانال تریتا کانال تفریحی کانال پت شاپ کانال پیام رسان بله کانال گردشگری کلنی کانتر کوره الکتریکی کولر گازی
146
+ تمامی حقوق مادی و معنوی سایت متعلق است به:تارنمای جامع ثبت و معرفی رایگان کانال پیام رسانهای ایرانی و خارجی
147
+ """
148
+
149
+ # input_text = " «هفتاد سی» "
150
+ input_text = normalize(input_text)
151
+ # input_text = DOUBLE_QUOTE_REGEX.sub('"', input_text)
152
+ print(textwrap.fill(input_text))
153
+ # print(normalize(input_text, tokenized=True))