|
import gradio as gr |
|
import tensorflow as tf |
|
from tensorflow.keras.preprocessing.text import tokenizer_from_json |
|
from tensorflow.keras.preprocessing.sequence import pad_sequences |
|
import json |
|
import numpy as np |
|
|
|
|
|
model = tf.keras.models.load_model('polarisatie_model.h5') |
|
|
|
|
|
with open('tokenizer.json', 'r') as f: |
|
tokenizer_json = json.load(f) |
|
tokenizer = tokenizer_from_json(json.dumps(tokenizer_json)) |
|
|
|
|
|
with open('max_length.txt', 'r') as f: |
|
max_length = int(f.read().strip()) |
|
|
|
def preprocess_text(text): |
|
sequence = tokenizer.texts_to_sequences([text]) |
|
padded = pad_sequences(sequence, maxlen=max_length) |
|
return padded |
|
|
|
def predict_polarization(text): |
|
preprocessed_text = preprocess_text(text) |
|
prediction = model.predict(preprocessed_text) |
|
probability = float(prediction[0][1]) |
|
is_polarizing = bool(probability > 0.5) |
|
response = "Polariserend" if is_polarizing else "Niet polariserend" |
|
|
|
return { |
|
"Is Polarizing": is_polarizing, |
|
"Probability": f"{probability:.2%}", |
|
"Response": response |
|
} |
|
|
|
|
|
iface = gr.Interface( |
|
fn=predict_polarization, |
|
inputs=gr.Textbox(lines=2, placeholder="Voer hier je Nederlandse tekst in..."), |
|
outputs=gr.JSON(), |
|
title="Dutch Text Polarization Detector", |
|
description="Voer een Nederlandse tekst in om te bepalen of deze polariserend is.", |
|
examples=[ |
|
["Dit is een neutrale zin."], |
|
["Alle politici zijn leugenaars en dieven!"], |
|
["Het weer is vandaag erg mooi."], |
|
["Die groep mensen is de oorzaak van al onze problemen."] |
|
] |
|
) |
|
|
|
|
|
iface.launch() |