disaster_tweets / app.py
jrichez's picture
Update app.py
3532024
import pandas as pd
import numpy as np
import json
import gradio as gr
from keras.models import load_model
from keras.preprocessing.text import tokenizer_from_json, Tokenizer
from keras.preprocessing.sequence import pad_sequences
import spacy
from string import punctuation
import re
nlp = spacy.load('en_core_web_sm')
stopwords = nlp.Defaults.stop_words
def clean_text(text):
text = text.translate(punctuation)
text = re.sub(r"[^\w\s]", " ",text)
text = re.sub(r"[^A-Za-z0-9^,!.\/'+-=]", " ",text)
doc = nlp(text)
text = [token for token in doc if str(token) not in stopwords]
lemmatized = [token.lemma_ for token in text]
text = ' '.join(lemmatized)
return text
with open("tokenizer.json", "r") as read_file:
tokenizer = json.load(read_file)
tokenizer = tokenizer_from_json(tokenizer)
model = load_model('tweets_disaster_model.h5')
def tweets_predictions(text):
text = clean_text(text)
text = tokenizer.texts_to_sequences([text])
text = pad_sequences(text, padding='post', maxlen=50)
pred = model.predict(text.reshape(1,-1)).tolist()[0]
dic = {}
dic['No disaster'] = 1 - pred[0]
dic['Disaster'] = pred[0]
return dic
interface = gr.Interface(fn=tweets_predictions, inputs='textbox', outputs='label', theme='darkdefault',
title='Tweets Disaster', description='Ecrire une phrase en anglais et cliquer sur "Submit". Le modèle retourne la probabilité que le message annonce une catastrophe').launch(share=True)