Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from transformers import pipeline
|
| 2 |
+
|
| 3 |
+
# Pipeline do modelo BART
|
| 4 |
+
classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
|
| 5 |
+
|
| 6 |
+
# Dicionário com descrições das categorias como chave e descrições como valor.
|
| 7 |
+
# Traz a vantagem de conter mais contexto semântico para o modelo.
|
| 8 |
+
# Pode melhorar a discriminação entre categorias próximas (ex: política vs. economia).
|
| 9 |
+
|
| 10 |
+
categorias_descritas = {
|
| 11 |
+
"esporte": "notícias relacionadas a competições esportivas, atletas ou eventos esportivos",
|
| 12 |
+
"política": "notícias sobre decisões governamentais, eleições, partidos ou políticas públicas",
|
| 13 |
+
"tecnologia": "notícias sobre inovações, ciência da computação, internet e dispositivos eletrônicos",
|
| 14 |
+
"entretenimento": "notícias sobre filmes, música, celebridades e cultura pop", # nova categoria
|
| 15 |
+
"meio ambiente": "notícias sobre mudanças climáticas, preservação ambiental e ecologia",
|
| 16 |
+
"saúde": "notícias sobre medicina, doenças, vacinas e cuidados com a saúde"
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
# Lista de descrições para o modelo
|
| 20 |
+
descricoes = list(categorias_descritas.values())
|
| 21 |
+
|
| 22 |
+
# Função de predição
|
| 23 |
+
def classificar_artigo(texto):
|
| 24 |
+
resultado = classifier(texto, candidate_labels=descricoes)
|
| 25 |
+
|
| 26 |
+
# Converte a descrição de volta para o nome da categoria original
|
| 27 |
+
saida = {}
|
| 28 |
+
for desc, score in zip(resultado["labels"], resultado["scores"]):
|
| 29 |
+
for categoria, descricao in categorias_descritas.items():
|
| 30 |
+
if desc == descricao:
|
| 31 |
+
saida[categoria] = f"{score:.4f}"
|
| 32 |
+
break
|
| 33 |
+
return saida
|
| 34 |
+
|
| 35 |
+
# Interface Gradio
|
| 36 |
+
interface = gr.Interface(
|
| 37 |
+
fn=classificar_artigo,
|
| 38 |
+
inputs=gr.Textbox(lines=10, label="Digite o conteúdo do artigo"),
|
| 39 |
+
outputs=gr.Label(label="Classificação Zero-Shot"),
|
| 40 |
+
title="Classificação Zero-Shot de notícias",
|
| 41 |
+
description="Este modelo classifica notícias com base em descrições detalhadas das categorias."
|
| 42 |
+
)
|
| 43 |
+
|
| 44 |
+
interface.launch()
|