def process_tweet(tweet): """Process tweet function. Input: tweet: a string containing a tweet Output: tweets_clean: a list of words containing the processed tweet """ stemmer = TurkishStemmer() stopwords_english = stopwords.words('turkish') # remove stock market tickers like $GE tweet = re.sub(r'\$\w*', '', tweet) # remove old style retweet text "RT" tweet = re.sub(r'^RT[\s]+', '', tweet) # remove hyperlinks tweet = re.sub(r'https?:\/\/.*[\r\n]*', '', tweet) # remove hashtags # only removing the hash # sign from the word tweet = re.sub(r'#', '', tweet) # tokenize tweets tokenizer = TweetTokenizer(preserve_case=False, strip_handles=True, reduce_len=True) tweet_tokens = tokenizer.tokenize(tweet) tweets_clean = [] for word in tweet_tokens: if (word not in stopwords_english and # remove stopwords word not in string.punctuation): # remove punctuation # tweets_clean.append(word) stem_word = stemmer.stemWord(word) # stemming word tweets_clean.append(stem_word) return ' '.join([elem for elem in tweets_clean])
def my_form_post(): get_article = request.form['text'] snow = TurkishStemmer() get_article = get_article.lower() cleanr = re.compile('<.*?>') get_article = re.sub(cleanr, ' ', get_article) get_article = re.sub(r'[?|!|:|´|\'|"|#]', r'', get_article) get_article = re.sub(r'[.|,|)|´|:|(|\|/]', r' ', get_article) words = [ snow.stemWord(word) for word in get_article.split() if word not in set(stopwords.words('turkish')) ] # Stemming and removing stopwords get_article = ' '.join(words) predict = (model.predict([get_article])) predicted = predict[0] predicted = predicted.upper() predicted = predicted.replace("_", " ") return ''' <html> <head> <link rel="stylesheet" type="text/css" href="/static/mainstyle3.css"> <title>Tahmin Zamanı</title> </head> <body> <div class="container"> <h1>Haber başlığın şununla ilgili olabilir</h1> <h2 class="rainbow">{}</h2> </div> </body> </html>'''.format(predicted)
def FileOrder(self): kelime = TurkishStemmer() for i in self.fullText: if (i == "" or i == "\n"): pass else: self.parsText.append(i) for i in self.parsText: if (kelime.stemWord(i.lower()) == "kaynak"): self.source_indis = self.number if (kelime.stemWord(i.lower()) == "önsöz"): self.Onsoz = self.number if (kelime.stemWord(i.lower()) == "ekler"): self.IndısEk = self.number else: self.number += 1 print("\t Toplam Boşluk Karakteri Sayısı: ", len(self.fullText) - self.number) print("\t Boşluk karakteri olmadan toplam satır sayısı: ", self.number) print("\t Kaynakca Başlangıç indisi: ", self.source_indis) print("\t Onsoz Başlangıç indisi: ", self.Onsoz) print("\t Toplam Yapılan Atıf: ", (self.number - self.source_indis))
def DosyaDuzenle(self): kelime = TurkishStemmer() for i in self.allText: if (i == "" or i == "\n"): pass else: self.parsText.append(i) for i in self.parsText: if (kelime.stemWord(i.lower()) == "kaynak"): self.kaynak_indis = self.sayac if (kelime.stemWord(i.lower()) == "önsöz"): self.Onsoz = self.sayac if (kelime.stemWord(i.lower()) == "ekler"): self.IndısEk = self.sayac else: self.sayac += 1 print("\t Toplam Boşluk Karakteri Sayısı: ", len(self.allText) - self.sayac) print("\t Boşluk karakteri olmadan toplam satır sayısı: ", self.sayac) print("\t Kaynakca Başlangıç indisi: ", self.kaynak_indis) print("\t Onsoz Başlangıç indisi: ", self.Onsoz) print("\t Toplam Yapılan Atıf: ", (self.sayac - self.kaynak_indis))
def stemming_words(text): wpt = WordPunctTokenizer() words = wpt.tokenize(text) turkishStemmer = TurkishStemmer() stemmed_words = [] for word in words: stemmed_words.append(turkishStemmer.stemWord(word)) text = ' '.join([str(word) for word in stemmed_words]) # print (stemmed_words) return text
def run(): turkStem=TurkishStemmer() input_data = input("Lütfen sorunuzu girin.") words = nltk.word_tokenize(input_data) words = [word.lower() for word in words if word.isalpha()] after_stem = [turkStem.stemWord(word) for word in words] print("AFTER SNOWBALL STEMMER: ", after_stem) ##print(after_stem) ## print("after stem",turkStem.stemWord(a)) ## print(turkStem.stemWord("ilişkilendiremediklerimiz, selam, gözlük , gözlem")) return after_stem
def stemming_words(self, text): wpt = WordPunctTokenizer() words = wpt.tokenize(text) turkishStemmer = TurkishStemmer() stemmed_words = [] for word in words: stemmed_words.append(turkishStemmer.stemWord(word)) # try: # # stemmed_words.append(turkishStemmer.stemWord(word)) # stemmed_words.append(word[0:5]) # except: # # stemmed_words.append(turkishStemmer.stemWord(word)) # stemmed_words.append(word) text = ' '.join([str(word) for word in stemmed_words]) return text
snow = TurkishStemmer() for eachNew in all_news: eachNew.title = eachNew.title.lower() eachNew.content = eachNew.content.lower() # Converting to lowercase cleanr = re.compile('<.*?>') eachNew.title = re.sub(cleanr, ' ', eachNew.title) eachNew.content = re.sub(cleanr, ' ', eachNew.content) # Removing HTML tags eachNew.title = re.sub(r'[?|!|:|´|\'|"|#]', r'', eachNew.title) eachNew.content = re.sub(r'[?|!|´|:|\'|"|#]', r'', eachNew.content) eachNew.title = re.sub(r'[.|,|)|´|:|(|\|/]', r' ', eachNew.title) eachNew.content = re.sub(r'[.|:|´|,|)|(|\|/]', r' ', eachNew.content) # Removing Punctuations words = [ snow.stemWord(word) for word in eachNew.title.split() if word not in stopwords ] # Stemming and removing stopwords eachNew.title = ' '.join(words) words = [ snow.stemWord(word) for word in eachNew.content.split() if word not in stopwords ] eachNew.content = ' '.join(words) #for eachNew in all_news: # eachNew.title = eachNew.title.lower() # eachNew.content = eachNew.content.lower() # eachNew.title = eachNew.title.translate(str.maketrans('', '', string.punctuation)) # eachNew.content = eachNew.content.translate(str.maketrans('', '', string.punctuation))
# -*- coding: utf-8 -*- """NLP_TR_LDA_MULTICORE.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/116UKkvGAYKyopDukBoSInwrBhJ5wLHh5 """ #https://towardsdatascience.com/nlp-extracting-the-main-topics-from-your-dataset-using-lda-in-minutes-21486f5aa925 """# Turkish Stemmer Test""" from snowballstemmer import TurkishStemmer turkStem = TurkishStemmer() turkStem.stemWord("gelmişti") """# Import Libraries and Load Data""" import pandas as pd import numpy as np import matplotlib.pyplot as plt import nltk import re import warnings from collections import Counter from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split import nltk nltk.download('stopwords') WPT = nltk.WordPunctTokenizer() stop_word_list = nltk.corpus.stopwords.words('turkish')
words=[] #ayıklanmış kelimelerimizin tutulacağı liste. classes=[] #json dosyamızdaki etiketlerimizin tutulacağı liste. documents=[] #json dosyamızdaki etiket ve patternların tutulacağı liste. ignore_letters=["!","'","?",",","."] #cümle içindeki bu noktalama işaretlerini atlıyoruz. for intent in intents["intents"]: for pattern in intent["patterns"]: word=nltk.word_tokenize(pattern) #json dosyamızdaki patternlerdeki cümleleri kelimelere ayırıyoruz. words.extend(word) #ayırdığımız kelimeleri listeye ekliyoruz. print(words) documents.append((word, intent["tag"])) #ayıklanmış kelime listemizi ve ait olduğu etiketi ekliyoruz. if intent["tag"] not in classes: classes.append(intent["tag"]) #etiketimizi listeye ekliyoruz. words=[stemmer.stemWord(w.lower()) for w in words if w not in ignore_letters] #kelimelerin köklerini alma, #harfleri küçültme ve atlayacağımız işaretleri kontrol etme işlemlerini yapıp kelimelerimizi düzenliyoruz. words=sorted(list(set(words))) #kelimelerimizi kümeye çevirip sıralıyoruz. küme olduğu için aynı elemanlar tekrar sayılmadı. classes=sorted(list(set(classes))) #aynı işlemi etiketlerimiz için yapıyoruz. print(len(documents), "adet etiketli girdi var.") print(len(classes), "adet etiket var.") print(len(words), "adet ayıklanmış benzersiz kelime var.") pickle.dump(words, open("words.pkl", "wb")) #kelimelerimizi arayüzde kullanabilmek için binary formda pickle dosyalarına kaydediyoruz. pickle.dump(classes, open("classes.pkl", "wb")) #aynı şekilde etiketlerimizi de kaydediyoruz. training_data=[] output_empty=[0]*len(classes) #boş bir output listemiz. etiketlerimizin uzunluğu kadar bir uzunluğu olacak. for doc in documents: #eğitim setlerimizi oluşturacağız. bag=[] #kelimelerimizi 0 ve 1 değerlerine çevirip öğrenmeyi sağyalayacağız.
from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from xgboost import XGBClassifier from sklearn.neighbors import KNeighborsClassifier ################################################################### turkStem = TurkishStemmer() df = pd.read_excel("istanbul_sozlesmesi_prep.xlsx") df.drop(["fav_count"], axis=1, inplace=True) #Bag of Words yöntemi ile sayısallaştırma yapar cv = CountVectorizer() word_vector = cv.fit_transform(df["text"].apply( lambda x: " ".join([turkStem.stemWord(i) for i in x.split()]))) #etiketli olan 600 verilik kısmı eğitim ve test seti olarak kullanmak üzere X ve y değişkenlerine atar X = word_vector[:600, :] y = df["category"].head(600) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=1) model_score = [] model_probas = [] ################################################################### #DecisionTreeClassifier
from snowballstemmer import TurkishStemmer snow = TurkishStemmer() s1 = "değiştir" s2 = "istemiyorum" print(snow.stemWord(s1)) print(snow.stemWord(s2)) import multiprocessing
,'daha','niçin','þunda','bunu','beni','ile','şu','şeyi','sizden','defa','biz','için','dahi','siz','nerde','kime','birþey' ,'birkez','her','biri','on','mü','diye','acaba','sen','en','hepsi','bir','bizden','sanki','benim','nerede','onu','benden' ,'yüz','birkaç','çünkü','nasýl','hiç','katrilyon'] stopwords.extend(newStop) while True: print("Enter article:") X = input() if (X == '0'): break snow = TurkishStemmer() X = X.lower() cleanr = re.compile('<.*?>') X = re.sub(cleanr, ' ', X) X = re.sub(r'[?|!|:|´|\'|"|#]', r'', X) X = re.sub(r'[.|,|)|´|:|(|\|/]', r' ', X) words = [snow.stemWord(word) for word in X.split() if word not in stopwords] # Stemming and removing stopwords X = ' '.join(words) text = X # Create and generate a word cloud image: wordcloud = WordCloud(max_font_size=50, max_words=50, background_color="white").generate(text) # Display the generated image: plt.figure() plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") plt.show() print(X) print("Preidction: ")
docs_y = [] tag = " " global cevap # Cümlelerin kelimelere ve etiketlere ayrılması for intent in data["intents"]: for pattern in intent["patterns"]: wrds = nltk.word_tokenize(pattern) words.extend(wrds) docs_x.append(wrds) docs_y.append(intent["tag"]) if intent["tag"] not in labels: labels.append(intent["tag"]) # Cümlelerin küçük harfe alınması ve ayrılması words = [stemmer.stemWord(w.lower()) for w in words if w != "?"] words = sorted(list(set(words))) # Etiketlerin alfabetik sıralanması labels = sorted(labels) # Eğitilmiş ağırlık dosyasının yüklenmesi. # Eğitilmiş ağırlık dosyasının yüklenmesi. model = load_model('covid.h5') # Buradaki fonksiyon bot ile konuşan kişinin cümlelerini 1 ve 0'lar ile ifade etmesine yarıyor. def bag_of_words(s, words): bag = [0 for _ in range(len(words))] s_words = nltk.word_tokenize(s)
print('unique word count: ', len(set(clean_text.split()))) print('whole word count: ', len(clean_text.split())) logging.info('Tokenize words') words = tokenize.word_tokenize(clean_text) nltk.download('stopwords') stop_word_list = nltk.corpus.stopwords.words('turkish') filtered_words = [token for token in words if token not in stop_word_list] logging.info('Stemming words') from snowballstemmer import TurkishStemmer turkStem = TurkishStemmer() stemmed_clean_text = [] for w in filtered_words: stemmed_clean_text.append(turkStem.stemWord(w)) logging.info('Convert list into list of list for word2Vec') list_of_list = [[x] for x in stemmed_clean_text] #CBOW Model logging.info('Cbow Model will be trained') cbowModel = gensim.models.Word2Vec(list_of_list, size=100, window=2, min_count=1, workers=4, sg=0) cbowModel.train(list_of_list, total_examples=len(list_of_list), epochs=10) cbowModel.init_sims(replace=True)
# ============================================================================= # If its frequency is 1 inside all data, it be requed to remove because of Feature Selection # ============================================================================= #pd.Series(" ".join(df["News"]).split()).value_counts() # ============================================================================= # Tokenizing # ============================================================================= df = df.apply(lambda x: TextBlob(x).words) # ============================================================================= # Stemming # ============================================================================= stemmer = TurkishStemmer() df = df.apply(lambda x: " ".join(stemmer.stemWord(word) for word in x)) # ============================================================================= # AddingClass 0 ekonomi 1 magazin 2 saglik 3 spor # ============================================================================= Category = ["ekonomi" for i in range(150)] Category.extend(["magazin" for i in range(150)]) Category.extend(["saglik" for i in range(150)]) Category.extend(["spor" for i in range(150)]) Category.extend(["ekonomi" for i in range(80)]) Category.extend(["magazin" for i in range(80)]) Category.extend(["saglik" for i in range(80)]) Category.extend(["spor" for i in range(80)]) dframe = pd.DataFrame(df, columns=["News"]) dframe = dframe.assign(category=Category)
#from gensim.parsing.preprocessing import STOPWORDS #Does not support Turkish yet. from nltk.stem import WordNetLemmatizer, SnowballStemmer from nltk.stem.porter import * import numpy as np np.random.seed(400) nltk.download('wordnet') """**Checking Stemmer**""" import pandas as pd from snowballstemmer import TurkishStemmer stemmer=TurkishStemmer() original_words = ['Başarılı', 'insanlar', 'adamlar', 'öldüler', 'içindekiler','kapısındaki', 'yiyecekler,', 'çıkaranlar', 'lahanalar', 'takımların','sırası', 'futbolcuların', 'yedikleri'] singles = [stemmer.stemWord(plural) for plural in original_words] pd.DataFrame(data={'original word':original_words, 'stemmed':singles }) """**Stemming and Tokenizing Functions**""" def lemmatize_stemming(text): # Lemmetizing is removed because it is not appropriate for turkish return stemmer.stemWord(text) # Tokenize and lemmatize def preprocess(text): result=[] for token in gensim.utils.simple_preprocess(text) : if token not in stop_word_list and len(token) > 3: result.append(lemmatize_stemming(token))