File size: 1,673 Bytes
a8dbb61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from sklearn.feature_extraction.text import TfidfVectorizer
from TurkishStemmer import TurkishStemmer
import string
# import for loading python objects (scikit-learn models)
import pickle
import nltk
from nltk.data import load
import streamlit as st
import sklearn

nltk.download('punkt')
trans_table = {ord(c): None for c in string.punctuation + string.digits}

def custom_tokenizer_with_Turkish_stemmer(text):
    # tokenize text
    # tokens = text.split(" ")
    tokens = [word for word in nltk.word_tokenize(text.translate(trans_table))]
    print(tokens)
    stems = [stemmerTR.stem(item.lower()) for item in tokens]
    return stems

def predictSMSdata(test_text):
    categories = ["legitimate", "spam"]
    categories.sort()

    # load model
    filename1 = "LinearSVC_SMS_spam_TR.pickle"
    file_handle1 = open(filename1, "rb")
    classifier = pickle.load(file_handle1)
    file_handle1.close()

    # load tfidf_vectorizer for transforming test text data
    filename2 = "tfidf_vectorizer_TR.pickle"
    file_handle2 = open(filename2, "rb")
    tfidf_vectorizer = pickle.load(file_handle2)
    file_handle2.close()

    test_list=[test_text]
    tfidf_vectorizer_vectors_test = tfidf_vectorizer.transform(test_list)
    predicted = classifier.predict(tfidf_vectorizer_vectors_test)
    print(categories[predicted[0]])
    return categories[predicted[0]]

stemmerTR = TurkishStemmer()

# adding the text that will show in the text box
default_value = "Aveadan SUPER bir Muzik Paketi! MAXI yaz, 5555e gonder"
text = st.text_area("enter some text!", default_value)
if text:
    out = predictSMSdata(text)
    st.write("The category of SMS = " + out.upper())