Spaces:
Sleeping
Sleeping
import re | |
from zemberek import ( | |
TurkishSpellChecker, | |
TurkishSentenceNormalizer, | |
TurkishSentenceExtractor, | |
TurkishMorphology, | |
TurkishTokenizer | |
) | |
morphology = TurkishMorphology.create_with_defaults() | |
normalizer = TurkishSentenceNormalizer(morphology) | |
stop_words_list = ['acaba', 'ama', 'ancak', 'arada', 'aslında', 'ayrıca', 'bana', 'bazı', 'belki', 'ben', 'benden', | |
'beni', | |
'benim', 'beri', 'bile', 'birçok', 'biri', 'birkaç', 'birkez', 'birşey', 'birşeyi', 'biz', 'bize', | |
'bizden', | |
'bizi', 'bizim', 'böyle', 'böylece', 'bu', 'buna', 'bunda', 'bundan', 'bunlar', 'bunları', | |
'bunların', | |
'bunu', 'bunun', 'burada', 'çok', 'çünkü', 'da', 'daha', 'dahi', 'de', 'defa', 'değil', 'diğer', | |
'diye', 'dolayı', | |
'dolayısıyla', 'eğer', 'en', 'gibi', 'göre', 'halen', 'hangi', 'hatta', 'hem', 'henüz', 'hep', | |
'hepsi', 'her', 'herhangi', | |
'herkesin', 'hiç', 'hiçbir', 'için', 'ile', 'ilgili', 'ise', 'işte', 'itibaren', 'itibariyle', | |
'kadar', 'karşın', 'kendi', | |
'kendilerine', 'kendini', 'kendisi', 'kendisine', 'kendisini', 'kez', 'ki', 'kim', 'kimden', 'kime', | |
'kimi', 'kimse', 'mu', | |
'mü', 'mı', 'nasıl', 'ne', 'neden', 'nedenle', 'nerde', 'nerede', 'nereye', 'niye', 'niçin', 'o', | |
'ona', 'ondan', 'onlar', | |
'onlardan', 'onları', 'onların', 'onu', 'onun', 'oysa', 'öyle', 'pek', 'rağmen', 'sadece', 'sanki', | |
'sen', 'senden', 'seni', | |
'senin', 'siz', 'sizden', 'sizi', 'sizin', 'şey', 'şeyden', 'şeyi', 'şeyler', 'şöyle', 'şu', 'şuna', | |
'şunda', 'şundan', | |
'şunları', 'şunu', 'tarafından', 'tüm', 'üzere', 've', 'veya', 'ya', 'yani', 'yerine', 'yine', | |
'yoksa', 'zaten', 'mi', | |
'onlari', 'acep', 'adeta', 'artık', 'aynen', 'az', 'bari', 'bazen', 'başka', 'biraz', 'bütün', | |
'dahil', 'daima', 'dair', | |
'dayanarak', 'fakat', 'halbuki', 'hani', 'hele', 'herkes', 'iken', 'ila', 'ilk', 'illa', 'iyi', | |
'iyice', 'kanımca', 'kere', | |
'keşke', 'kısaca', 'lakin', 'madem', 'meğer', 'nitekim', 'sonra', 'veyahut', 'yahut', 'şayet', | |
'şimdi', 'gerek', 'hakeza', | |
'hoş', 'kah', 'keza', 'mademki', 'mamafih', 'meğerki', 'meğerse', 'netekim', 'neyse', 'oysaki', | |
'velev', 'velhasıl', | |
'velhasılıkelam', 'yalnız', 'yok', 'zira', 'adamakıllı', 'bilcümle', 'binaen', 'binaenaleyh', | |
'birazdan', 'birden', | |
'birdenbire', 'birlikte', 'bitevi', 'biteviye', 'bittabi', 'bizatihi', 'bizce', 'bizcileyin', | |
'bizzat', 'buracıkta', | |
'buradan', 'büsbütün', 'çoğu', 'çoğun', 'çoğunca', 'çoğunlukla', 'çokça', 'çoklukla', 'dahilen', | |
'demin', 'demincek', | |
'deminden', 'derhal', 'derken', 'elbet', 'elbette', 'enikonu', 'epey', 'epeyce', 'epeyi', 'esasen', | |
'esnasında', 'etraflı', | |
'gibilerden', 'gibisinden', 'halihazırda', 'haliyle', 'hasılı', 'hulasaten', 'illaki', 'itibarıyla', | |
'iyicene', 'kala', | |
'külliyen', 'nazaran', 'nedeniyle', 'nedense', 'nerden', 'nerdeyse', 'nereden', 'neredeyse', 'neye', | |
'neyi', 'nice', 'nihayet', | |
'nihayetinde', 'onca', 'önce', 'önceden', 'önceleri', 'öncelikle', 'oracık', 'oracıkta', 'orada', | |
'oradan', 'oranca', | |
'oranla', 'oraya', 'peyderpey', 'sahiden', 'sonradan', 'sonraları', 'sonunda', 'şuncacık', | |
'şuracıkta', 'tabii', | |
'tam', 'tamam', 'tamamen', 'tamamıyla', 'tek', 'vasıtasıyla', 'doğru', 'gelgelelim', 'gırla', | |
'hasebiyle', 'zarfında', | |
'öbür', 'başkası', 'beriki', 'birbiri', 'birçoğu', 'birileri', 'birisi', 'birkaçı', 'bizimki', | |
'burası', 'diğeri', | |
'filanca', 'hangisi', 'hiçbiri', 'kaçı', 'kaynak', 'kimisi', 'kimsecik', 'kimsecikler', 'neresi', | |
'öbürkü', 'öbürü', | |
'onda', 'öteki', 'ötekisi', 'sana', 'şunlar', 'şunun', 'şuracık', 'şurası', 'nın', 'nin', 'nun', | |
'nün', 'ın', | |
'in', 'un', 'ün'] | |
contractions_convert_dictionary = { | |
"amk": "amına koyayım", | |
"aq": "amına koyayım", | |
"a.q": "amına koyayım", | |
"a.w": "amına koyayım", | |
"ak": "amına koyayım", | |
"a.k": "amına koyayım", | |
"mq": "amına koyayım", | |
"mk": "amına koyayım", | |
"aqqq": "amına koyayım", | |
"awk": "amına koyayım", | |
"s.kine": "sikine", | |
"fuck": "siktir", | |
"as": "ananı sikim", | |
"ananskm": "ananı sikim", | |
"skm": "sikim", | |
"s.ktigim": "siktiğim", | |
"s.ktugm": "soktugum", | |
"b.k": "bok", | |
"g.t": "göt", | |
"s..": "siktir", | |
"ziktir": "siktir", | |
"b.kunu": "bokunu", | |
"s...": "siktir", | |
"s*çımaya": "sıçmaya", | |
"amkdjdkd": "amına koyayım", | |
"lgbtli": "lezbiyen", | |
"lgbt": "lezbiyen", | |
"orrosspuu": "orospu", | |
"yardagıma": "yarrağıma" | |
} | |
black_list = {"kopek": "köpek", | |
"gotlu": "götlü", | |
"got": "göt", | |
"kotu": "kötü"} | |
class CLEANING: | |
def __init__(self, raw_text, contractions, stopwords, blacklist): | |
raw_text = raw_text.replace("İ", "i") # Bu kullanım, bozuk i karakterlerine çözüm üretmek adına eklenmiştir. | |
raw_text = raw_text.replace("Â", "a") | |
raw_text = raw_text.replace("â", "a") | |
self.Text = raw_text | |
self.Contractions = contractions | |
self.blacklist = blacklist | |
self.StopWords = stopwords | |
def convert_character(self, raw_text): | |
raw_text = raw_text.replace("ş", "s") | |
raw_text = raw_text.replace("ğ", "g") | |
raw_text = raw_text.replace("ç", "c") | |
raw_text = raw_text.replace("ü", "u") | |
# raw_text = raw_text.replace("ı", "i") | |
raw_text = raw_text.replace("Ş", "s") | |
raw_text = raw_text.replace("Ğ", "g") | |
raw_text = raw_text.replace("Ç", "c") | |
raw_text = raw_text.replace("Ü", "u") | |
raw_text = raw_text.replace("ö", "o") | |
raw_text = raw_text.replace("Ö", "o") | |
return raw_text | |
def lowercase(self, text): | |
return text.lower() | |
def split(self, text): | |
return text.split() | |
def tweet_tag_clean(self, text): | |
temp_text = re.sub("@[A-Za-z0-9_]+", "", text) | |
return ' '.join(word for word in temp_text.split() if not word[0] == "#") | |
def http_clean(self, text): | |
regex = re.compile(r'<[^>]+>') | |
temp_text = regex.sub('', text) | |
return re.sub(r'http\S+', '', temp_text) | |
def numeric_clean(self, text): | |
return re.sub("[0-9]", "", text) | |
def special_character_clean(self, text): | |
return re.sub(r'[_"\-;%()|+&=*%.”“’,!?:#$@\[\]/<>]', '', text) | |
def stopwords_clean(self, text): | |
return ' '.join(word for word in text.split() if word not in stop_words_list) | |
def single_characters_clean(self, text): | |
return ' '.join([w for w in text.split() if len(w) > 1]) | |
def clean(self): | |
temp_text = self.Text | |
temp_text = self.lowercase(temp_text) | |
# temp_text = self.convert_character(temp_text) | |
temp_text = self.split(temp_text) | |
if self.Contractions: # Kısaltmaları dönüştür | |
new_text = [] | |
for word in temp_text: | |
if word in contractions_convert_dictionary: | |
new_text.append(contractions_convert_dictionary[word]) | |
else: | |
new_text.append(word) | |
temp_text = " ".join(new_text) | |
temp_text = self.tweet_tag_clean(temp_text) # tweet ve tag temizle | |
temp_text = self.http_clean(temp_text) # http tag temizle | |
temp_text = self.numeric_clean(temp_text) # numeric değerleri temizle | |
temp_text = self.special_character_clean(temp_text) # special karakterleri temizle | |
if self.StopWords: | |
temp_text = self.stopwords_clean(temp_text) # stopword kelimeleri temizle | |
temp_text = self.single_characters_clean(temp_text) # special karakterleri ve emojileri temizle | |
temp_text = temp_text.lstrip().rstrip() # text baş ve sonundaki boşlukları at | |
"""if len(temp_text.lstrip().rstrip()) > 0: | |
try: | |
temp_text = normalizer.normalize(str(temp_text)) | |
temp_text = self.convert_character(temp_text) | |
if self.blacklist: # blacklist | |
new_text = [] | |
for word in temp_text.split(' '): | |
if word in black_list: | |
new_text.append(black_list[word]) | |
else: | |
new_text.append(word) | |
temp_text = " ".join(new_text) | |
return temp_text | |
except Exception as e: | |
print(temp_text) | |
return temp_text""" | |
return temp_text |