Emoji_Suggester / util.py
Rudra360's picture
util file for the usage of model
1f510ce verified
import pickle
import numpy as np
import spacy,re
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import string,nltk
prediction=[]
def preprocess_text(text):
nltk.download('punkt')
nltk.download('stopwords')
text = re.sub(r'(\w)\1{2,}', r'\1', text)
tokens = word_tokenize(text)
tokens = [token for token in tokens if token not in string.punctuation]
tokens = [token.lower() for token in tokens]
stop_words = set(stopwords.words('english'))
tokens = [token for token in tokens ]
return " ".join(tokens)
def remove_user_names(text):
return re.sub("@\w+|@\W+","",text.lower())
def remove_web_url(text):
return re.sub("http:(..([a-zA-Z0-9_]+)+([a-zA-Z0-9_]+)..([a-zA-Z0-9_]+)..(([a-zA-Z0-9_]+))).(([a-zA-Z0-9_]+))","website",text)
def remove_hastag(text):
return re.sub("#\w+","",text)
def remove_all_special_char(text):
return re.sub("[^\w\s]","",text)
def remove_more_space(text):
return re.sub(' +',' ',text)
def remove(text):
return remove_more_space(remove_all_special_char(remove_hastag(remove_web_url(remove_user_names(text)))))
nlp=spacy.load('en_core_web_lg')
emotion_emojies={
"happiness":["๐Ÿ˜Š","๐Ÿ˜‚","๐Ÿคฃ","๐Ÿ˜","๐Ÿ‘Œ","๐Ÿ‘","๐Ÿ™Œ","๐Ÿ˜œ"],
"love":["โค๏ธ","๐Ÿ’•","๐Ÿ˜˜","๐Ÿ˜"],
"sadness":["๐Ÿคทโ€โ™‚๏ธ","๐Ÿ˜’","๐Ÿ˜ซ","๐Ÿ˜ž"],
"empty":["๐Ÿชน","๐Ÿซ™","๐Ÿ“ช"],
"enthusiasm":["๐Ÿ˜€","๐Ÿ˜ƒ","๐Ÿซก"],
"neutral":["๐Ÿ˜","๐Ÿ˜ถ","๐Ÿซฅ","๐Ÿ˜‘"],
"worry":["๐Ÿ˜ตโ€๐Ÿ’ซ","๐Ÿค•","๐Ÿฅถ","๐Ÿคข"],
"surprise":["๐Ÿ˜ฏ","๐Ÿ˜ฎ","๐Ÿคญ","๐ŸŽŠ","๐Ÿคญ","๐Ÿ˜ฒ","๐Ÿ™€"],
"fun":["๐ŸŽ‰","๐ŸŽˆ","โšฑ๏ธ","๐Ÿ˜"],
"hate":["๐Ÿ‘Ž","๐Ÿคฌ","๐Ÿ˜ก"],
"boredom":["๐Ÿฅฑ"],
"relief":["๐Ÿ˜Œ","๐Ÿ˜ฎโ€๐Ÿ’จ"],
"anger":["๐Ÿค","๐Ÿ˜ฅ","๐Ÿ˜ด","๐Ÿ˜ค","๐Ÿคฏ","๐Ÿ’ข","๐Ÿ˜ "]
}
def predict(text):
with open('model.pkl','rb') as f:
model=pickle.load(f)
prediction.append(model.predict(np.stack(nlp(preprocess_text(remove(text))).vector).reshape(1,300)))
emoji=[emotion_emojies[emoji] for emoji in emotion_emojies.keys() if prediction[0][0]==emoji]
return emoji
if "__main__"==__name__:
text=input("Input the Text : ")
print(predict(text))