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)