File size: 2,488 Bytes
fa9917c
c7baec5
fa9917c
 
2613907
df18eaf
 
2613907
c500f94
2613907
c500f94
2613907
df18eaf
 
17ee3d5
7b4da08
7fcd0f7
d91019d
519530c
d821d24
3c86f17
17ee3d5
 
b4b2d15
 
 
 
 
 
816ad81
e31ea1f
77e17ee
918502d
2d548f2
8dd71ab
72ea02e
69eadf1
 
 
 
 
 
 
 
 
 
 
ad0006b
45d0f71
 
7c47179
be4ba0f
45d0f71
 
 
ef34b99
45d0f71
 
 
5bd7d2c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import gradio as gr
import torch
from transformers import pipeline

app_title = "kNOwHATE Prototype: OHS Detection (Not for All Audiences)"

app_description = """
This prototype from the kNOwHATE project aims to detect online hate speech (OHS) in European Portuguese. We collected 24,739 YouTube comments and 29,846 tweets, annotated by experts, and trained our prototype on this data. 

We invite you to try it out. You can just enter a sentence below and submit it to see if it contains hate speech.

For more, visit our [website](https://knowhate.eu) and [Hugging Face page](https://huggingface.co/knowhate).
"""

app_examples = [
    ["As pessoas tem que perceber que ser 'panasca' não é deixar de ser homem, é deixar de ser humano 😂😂", "knowhate/HateBERTimbau-youtube"],
    ["Vamo-nos unir para criar um mundo mais inclusivo e tolerante.", "knowhate/HateBERTimbau-twitter"],
    ["Isso pulhiticos merdosos, continuem a importar lixo, até Portugal deixar de ser Portugal.", "knowhate/HateBERTimbau-yt-tt"],
    ["Eu admiro muito a coragem e a determinação da minha colega de trabalho.", "knowhate/HateBERTimbau-twitter"],
    ["Quando não são ciganos são africanos quando não são africanos são brasileiros.  Sempre os mesmos", "knowhate/HateBERTimbau-youtube"],
    ["O tempo está ensolarado hoje, perfeito para um passeio no parque.", "knowhate/HateBERTimbau-yt-tt"]
]

model_list = [
    "knowhate/HateBERTimbau-youtube",
    "knowhate/HateBERTimbau-twitter",
    "knowhate/HateBERTimbau-yt-tt",
]

def predict(text, chosen_model):    
    
    # Initialize the pipeline with the chosen model
    model_pipeline = pipeline("text-classification", model=chosen_model)
    result = model_pipeline(text)

    
    predicted_label = result[0]['label']
    predicted_score = result[0]['score']

    non_predicted_label = "Hate Speech" if predicted_label == "Non Hate Speech" else "Non Hate Speech"
    non_predicted_score = 1 - predicted_score

    scores_dict = {
        predicted_label: predicted_score,
        non_predicted_label: non_predicted_score
    }
    
    return scores_dict

inputs = [
    gr.Textbox(label="Text", value= app_examples[0][0]),
    gr.Dropdown(label="Model", choices=model_list, value=model_list[2])
]

outputs = [
    gr.Label(label="Result"),
]

gr.Interface(fn=predict, inputs=inputs, outputs=outputs, title=app_title, 
             description=app_description, examples=app_examples, theme=gr.themes.Base(primary_hue="red")).launch()