BRAIN-TR commited on
Commit
665a1ca
·
1 Parent(s): 97d3c08

Upload clean.py

Browse files
Files changed (1) hide show
  1. clean.py +209 -0
clean.py ADDED
@@ -0,0 +1,209 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+ from zemberek import (
3
+ TurkishSpellChecker,
4
+ TurkishSentenceNormalizer,
5
+ TurkishSentenceExtractor,
6
+ TurkishMorphology,
7
+ TurkishTokenizer
8
+ )
9
+ morphology = TurkishMorphology.create_with_defaults()
10
+ normalizer = TurkishSentenceNormalizer(morphology)
11
+
12
+ stop_words_list = ['acaba', 'ama', 'ancak', 'arada', 'aslında', 'ayrıca', 'bana', 'bazı', 'belki', 'ben', 'benden',
13
+ 'beni',
14
+ 'benim', 'beri', 'bile', 'birçok', 'biri', 'birkaç', 'birkez', 'birşey', 'birşeyi', 'biz', 'bize',
15
+ 'bizden',
16
+ 'bizi', 'bizim', 'böyle', 'böylece', 'bu', 'buna', 'bunda', 'bundan', 'bunlar', 'bunları',
17
+ 'bunların',
18
+ 'bunu', 'bunun', 'burada', 'çok', 'çünkü', 'da', 'daha', 'dahi', 'de', 'defa', 'değil', 'diğer',
19
+ 'diye', 'dolayı',
20
+ 'dolayısıyla', 'eğer', 'en', 'gibi', 'göre', 'halen', 'hangi', 'hatta', 'hem', 'henüz', 'hep',
21
+ 'hepsi', 'her', 'herhangi',
22
+ 'herkesin', 'hiç', 'hiçbir', 'için', 'ile', 'ilgili', 'ise', 'işte', 'itibaren', 'itibariyle',
23
+ 'kadar', 'karşın', 'kendi',
24
+ 'kendilerine', 'kendini', 'kendisi', 'kendisine', 'kendisini', 'kez', 'ki', 'kim', 'kimden', 'kime',
25
+ 'kimi', 'kimse', 'mu',
26
+ 'mü', 'mı', 'nasıl', 'ne', 'neden', 'nedenle', 'nerde', 'nerede', 'nereye', 'niye', 'niçin', 'o',
27
+ 'ona', 'ondan', 'onlar',
28
+ 'onlardan', 'onları', 'onların', 'onu', 'onun', 'oysa', 'öyle', 'pek', 'rağmen', 'sadece', 'sanki',
29
+ 'sen', 'senden', 'seni',
30
+ 'senin', 'siz', 'sizden', 'sizi', 'sizin', 'şey', 'şeyden', 'şeyi', 'şeyler', 'şöyle', 'şu', 'şuna',
31
+ 'şunda', 'şundan',
32
+ 'şunları', 'şunu', 'tarafından', 'tüm', 'üzere', 've', 'veya', 'ya', 'yani', 'yerine', 'yine',
33
+ 'yoksa', 'zaten', 'mi',
34
+ 'onlari', 'acep', 'adeta', 'artık', 'aynen', 'az', 'bari', 'bazen', 'başka', 'biraz', 'bütün',
35
+ 'dahil', 'daima', 'dair',
36
+ 'dayanarak', 'fakat', 'halbuki', 'hani', 'hele', 'herkes', 'iken', 'ila', 'ilk', 'illa', 'iyi',
37
+ 'iyice', 'kanımca', 'kere',
38
+ 'keşke', 'kısaca', 'lakin', 'madem', 'meğer', 'nitekim', 'sonra', 'veyahut', 'yahut', 'şayet',
39
+ 'şimdi', 'gerek', 'hakeza',
40
+ 'hoş', 'kah', 'keza', 'mademki', 'mamafih', 'meğerki', 'meğerse', 'netekim', 'neyse', 'oysaki',
41
+ 'velev', 'velhasıl',
42
+ 'velhasılıkelam', 'yalnız', 'yok', 'zira', 'adamakıllı', 'bilcümle', 'binaen', 'binaenaleyh',
43
+ 'birazdan', 'birden',
44
+ 'birdenbire', 'birlikte', 'bitevi', 'biteviye', 'bittabi', 'bizatihi', 'bizce', 'bizcileyin',
45
+ 'bizzat', 'buracıkta',
46
+ 'buradan', 'büsbütün', 'çoğu', 'çoğun', 'çoğunca', 'çoğunlukla', 'çokça', 'çoklukla', 'dahilen',
47
+ 'demin', 'demincek',
48
+ 'deminden', 'derhal', 'derken', 'elbet', 'elbette', 'enikonu', 'epey', 'epeyce', 'epeyi', 'esasen',
49
+ 'esnasında', 'etraflı',
50
+ 'gibilerden', 'gibisinden', 'halihazırda', 'haliyle', 'hasılı', 'hulasaten', 'illaki', 'itibarıyla',
51
+ 'iyicene', 'kala',
52
+ 'külliyen', 'nazaran', 'nedeniyle', 'nedense', 'nerden', 'nerdeyse', 'nereden', 'neredeyse', 'neye',
53
+ 'neyi', 'nice', 'nihayet',
54
+ 'nihayetinde', 'onca', 'önce', 'önceden', 'önceleri', 'öncelikle', 'oracık', 'oracıkta', 'orada',
55
+ 'oradan', 'oranca',
56
+ 'oranla', 'oraya', 'peyderpey', 'sahiden', 'sonradan', 'sonraları', 'sonunda', 'şuncacık',
57
+ 'şuracıkta', 'tabii',
58
+ 'tam', 'tamam', 'tamamen', 'tamamıyla', 'tek', 'vasıtasıyla', 'doğru', 'gelgelelim', 'gırla',
59
+ 'hasebiyle', 'zarfında',
60
+ 'öbür', 'başkası', 'beriki', 'birbiri', 'birçoğu', 'birileri', 'birisi', 'birkaçı', 'bizimki',
61
+ 'burası', 'diğeri',
62
+ 'filanca', 'hangisi', 'hiçbiri', 'kaçı', 'kaynak', 'kimisi', 'kimsecik', 'kimsecikler', 'neresi',
63
+ 'öbürkü', 'öbürü',
64
+ 'onda', 'öteki', 'ötekisi', 'sana', 'şunlar', 'şunun', 'şuracık', 'şurası', 'nın', 'nin', 'nun',
65
+ 'nün', 'ın',
66
+ 'in', 'un', 'ün']
67
+ contractions_convert_dictionary = {
68
+ "amk": "amına koyayım",
69
+ "aq": "amına koyayım",
70
+ "a.q": "amına koyayım",
71
+ "a.w": "amına koyayım",
72
+ "ak": "amına koyayım",
73
+ "a.k": "amına koyayım",
74
+ "mq": "amına koyayım",
75
+ "mk": "amına koyayım",
76
+ "aqqq": "amına koyayım",
77
+ "awk": "amına koyayım",
78
+ "s.kine": "sikine",
79
+ "fuck": "siktir",
80
+ "as": "ananı sikim",
81
+ "ananskm": "ananı sikim",
82
+ "skm": "sikim",
83
+ "s.ktigim": "siktiğim",
84
+ "s.ktugm": "soktugum",
85
+ "b.k": "bok",
86
+ "g.t": "göt",
87
+ "s..": "siktir",
88
+ "ziktir": "siktir",
89
+ "b.kunu": "bokunu",
90
+ "s...": "siktir",
91
+ "s*çımaya": "sıçmaya",
92
+ "amkdjdkd": "amına koyayım",
93
+ "lgbtli": "lezbiyen",
94
+ "lgbt": "lezbiyen",
95
+ "orrosspuu": "orospu",
96
+ "yardagıma": "yarrağıma"
97
+ }
98
+
99
+ black_list = {"kopek": "köpek",
100
+ "gotlu": "götlü",
101
+ "got": "göt",
102
+ "kotu": "kötü"}
103
+
104
+
105
+ class CLEANING:
106
+ def __init__(self, raw_text, contractions, stopwords, blacklist):
107
+
108
+ raw_text = raw_text.replace("İ", "i") # Bu kullanım, bozuk i karakterlerine çözüm üretmek adına eklenmiştir.
109
+ raw_text = raw_text.replace("Â", "a")
110
+ raw_text = raw_text.replace("â", "a")
111
+ self.Text = raw_text
112
+ self.Contractions = contractions
113
+ self.blacklist = blacklist
114
+ self.StopWords = stopwords
115
+
116
+ def convert_character(self, raw_text):
117
+ raw_text = raw_text.replace("ş", "s")
118
+ raw_text = raw_text.replace("ğ", "g")
119
+ raw_text = raw_text.replace("ç", "c")
120
+ raw_text = raw_text.replace("ü", "u")
121
+ # raw_text = raw_text.replace("ı", "i")
122
+ raw_text = raw_text.replace("Ş", "s")
123
+ raw_text = raw_text.replace("Ğ", "g")
124
+ raw_text = raw_text.replace("Ç", "c")
125
+ raw_text = raw_text.replace("Ü", "u")
126
+ raw_text = raw_text.replace("ö", "o")
127
+ raw_text = raw_text.replace("Ö", "o")
128
+
129
+ return raw_text
130
+
131
+ def lowercase(self, text):
132
+ return text.lower()
133
+
134
+ def split(self, text):
135
+ return text.split()
136
+
137
+ def tweet_tag_clean(self, text):
138
+ temp_text = re.sub("@[A-Za-z0-9_]+", "", text)
139
+ return ' '.join(word for word in temp_text.split() if not word[0] == "#")
140
+
141
+ def http_clean(self, text):
142
+ regex = re.compile(r'<[^>]+>')
143
+ temp_text = regex.sub('', text)
144
+ return re.sub(r'http\S+', '', temp_text)
145
+
146
+ def numeric_clean(self, text):
147
+ return re.sub("[0-9]", "", text)
148
+
149
+ def special_character_clean(self, text):
150
+ return re.sub(r'[_"\-;%()|+&=*%.”“’,!?:#$@\[\]/<>]', '', text)
151
+
152
+ def stopwords_clean(self, text):
153
+ return ' '.join(word for word in text.split() if word not in stop_words_list)
154
+
155
+ def single_characters_clean(self, text):
156
+ return ' '.join([w for w in text.split() if len(w) > 1])
157
+
158
+ def clean(self):
159
+ temp_text = self.Text
160
+ temp_text = self.lowercase(temp_text)
161
+ # temp_text = self.convert_character(temp_text)
162
+ temp_text = self.split(temp_text)
163
+
164
+ if self.Contractions: # Kısaltmaları dönüştür
165
+ new_text = []
166
+ for word in temp_text:
167
+
168
+ if word in contractions_convert_dictionary:
169
+ new_text.append(contractions_convert_dictionary[word])
170
+ else:
171
+ new_text.append(word)
172
+ temp_text = " ".join(new_text)
173
+
174
+ temp_text = self.tweet_tag_clean(temp_text) # tweet ve tag temizle
175
+ temp_text = self.http_clean(temp_text) # http tag temizle
176
+ temp_text = self.numeric_clean(temp_text) # numeric değerleri temizle
177
+ temp_text = self.special_character_clean(temp_text) # special karakterleri temizle
178
+
179
+ if self.StopWords:
180
+ temp_text = self.stopwords_clean(temp_text) # stopword kelimeleri temizle
181
+
182
+ temp_text = self.single_characters_clean(temp_text) # special karakterleri ve emojileri temizle
183
+
184
+ temp_text = temp_text.lstrip().rstrip() # text baş ve sonundaki boşlukları at
185
+
186
+ if len(temp_text.lstrip().rstrip()) > 0:
187
+ try:
188
+
189
+ temp_text = normalizer.normalize(str(temp_text))
190
+ temp_text = self.convert_character(temp_text)
191
+
192
+ if self.blacklist: # blacklist
193
+
194
+ new_text = []
195
+ for word in temp_text.split(' '):
196
+
197
+ if word in black_list:
198
+
199
+ new_text.append(black_list[word])
200
+ else:
201
+ new_text.append(word)
202
+ temp_text = " ".join(new_text)
203
+
204
+ return temp_text
205
+ except Exception as e:
206
+ print(temp_text)
207
+ return temp_text
208
+
209
+ return temp_text