示例#1
0
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])
示例#2
0
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))
示例#4
0
 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))
示例#5
0
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 
示例#6
0
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
示例#7
0
 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
示例#8
0
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')
示例#10
0
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.
示例#11
0
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
示例#12
0
from snowballstemmer import TurkishStemmer

snow = TurkishStemmer()

s1 = "değiştir"

s2 = "istemiyorum"

print(snow.stemWord(s1))

print(snow.stemWord(s2))
import multiprocessing
示例#13
0
,'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: ")
示例#14
0
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)
示例#15
0
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)
示例#16
0
# =============================================================================
# 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))