Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pickle | |
| import string | |
| from nltk.corpus import stopwords | |
| # Define the text_process function | |
| def text_process(mess): | |
| """ | |
| Takes in a string of text, then performs the following: | |
| 1. Remove all punctuation | |
| 2. Remove all stopwords | |
| 3. Returns a list of the cleaned text | |
| """ | |
| # Check characters to see if they are in punctuation | |
| nopunc = [char for char in mess if char not in string.punctuation] | |
| # Join the characters again to form the string. | |
| nopunc = ''.join(nopunc) | |
| # Now just remove any stopwords | |
| return [word for word in nopunc.split() if word.lower() not in stopwords.words('english')] | |
| # Load the pre-trained model | |
| with open('pipeline.pkl', 'rb') as model_file: | |
| model = pickle.load(model_file) | |
| st.title('Spam/Ham Classification') | |
| # Text input from the user | |
| user_input = st.text_area("Enter the message you want to classify:", "") | |
| if st.button("Classify"): | |
| if user_input: | |
| # Predict the class of the input message | |
| prediction = model.predict([user_input]) | |
| prediction_proba = model.predict_proba([user_input]) | |
| # Display the result | |
| if prediction[0] == 'spam': | |
| st.error(f'This message is classified as SPAM.') | |
| else: | |
| st.success(f'This message is classified as HAM.') | |
| # Display the prediction probabilities | |
| st.write("Prediction probabilities:") | |
| st.write(f"Spam: {prediction_proba[0][model.classes_ == 'spam'][0]:.2f}") | |
| st.write(f"Ham: {prediction_proba[0][model.classes_ == 'ham'][0]:.2f}") | |
| else: | |
| st.warning("Please enter a message to classify.") | |