Views
No views yet
1import streamlit as st
2import pickle
3import string
4import pickle
5from nltk.corpus import stopwords
6import nltk
7from nltk.stem.porter import PorterStemmer
8nltk.download('stopwords') # Downloading stopwords data
9nltk.download('punkt') # Downloading tokenizer data
10
11ps = PorterStemmer()
12
13
14def transform_text(text):
15 text = text.lower()
16 text = nltk.word_tokenize(text)
17
18 y = []
19 for i in text:
20 if i.isalnum():
21 y.append(i)
22
23 text = y[:]
24 y.clear()
25
26 for i in text:
27 if i not in stopwords.words('english') and i not in string.punctuation:
28 y.append(i)
29
30 text = y[:]
31 y.clear()
32
33 for i in text:
34 y.append(ps.stem(i))
35
36 return " ".join(y)
37
38tfidf = pickle.load(open('vectorizer.pkl','rb'))
39model = pickle.load(open('model.pkl','rb'))
40
41st.title("Email/SMS Spam Classifier")
42
43input_sms = st.text_area("Enter the message")
44
45if st.button('Predict'):
46
47 # 1. preprocess
48 transformed_sms = transform_text(input_sms)
49 # 2. vectorize
50 vector_input = tfidf.transform([transformed_sms])
51 # 3. predict
52 result = model.predict(vector_input)[0]
53 # 4. Display
54 if result == 1:
55 st.header("Spam")
56 else:
57 st.header("Not Spam")
58