Iker commited on
Commit
33a127d
1 Parent(s): 36e282e

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +146 -1
README.md CHANGED
@@ -1,3 +1,148 @@
1
  ---
2
- license: cc-by-nc-4.0
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
 
2
  ---
3
+ license: cc-by-nc-sa-4.0
4
+ datasets:
5
+ - Iker/NoticIA
6
+ language:
7
+ - es
8
+ metrics:
9
+ - rouge
10
+ library_name: transformers
11
+ pipeline_tag: text-generation
12
+ tags:
13
+ - clickbait
14
+ - noticia
15
+ - spanish
16
+ - summary
17
+ - summarization
18
+ widget:
19
+ - example_title: Hermes 2 Pro
20
+ messages:
21
+ - role: user
22
+ content: "Ahora eres una Inteligencia Artificial experta en desmontar titulares
23
+ sensacionalistas o clickbait. Tu tarea consiste en analizar noticias
24
+ con titulares sensacionalistas y generar un resumen de una sola frase
25
+ que revele la verdad detrás del titular.\\nEste es el titular de la
26
+ noticia: Le compra un abrigo a su abuela de 97 años y la reacción de
27
+ esta es una fantasía\\nEl titular plantea una pregunta o proporciona
28
+ información incompleta. Debes buscar en el cuerpo de la noticia una
29
+ frase que responda lo que se sugiere en el título. Siempre que puedas
30
+ cita el texto original, especialmente si se trata de una frase que
31
+ alguien ha dicho. Si citas una frase que alguien ha dicho, usa
32
+ comillas para indicar que es una cita. Usa siempre las mínimas
33
+ palabras posibles. No es necesario que la respuesta sea una oración
34
+ completa. Puede ser sólo el foco de la pregunta. Recuerda responder
35
+ siempre en Español.\\nEste es el cuerpo de la noticia:\\nLa usuaria de
36
+ X @Kokreta1 ha relatado la conversación que ha tenido con su abuela de
37
+ 97 años cuando le ha dado el abrigo que le ha comprado para su
38
+ cumpleaños.\\nTeniendo en cuenta la avanzada edad de la señora, la
39
+ tuitera le ha regalado una prenda acorde a sus años, algo con lo que
40
+ su yaya no ha estado de acuerdo.\\nEl abrigo es de vieja, ha opinado
41
+ la mujer cuando lo ha visto. Os juro que soy muy fan. Mañana vamos las
42
+ dos (a por otro). Eso sí, la voy a llevar al Bershka, ha asegurado
43
+ entre risas la joven.\\nSegún la propia cadena de ropa, la cual
44
+ pertenece a Inditex, su público se caracteriza por ser jóvenes
45
+ atrevidos, conocedores de las últimas tendencias e interesados en la
46
+ música, las redes sociales y las nuevas tecnologías, por lo que la
47
+ gente mayor no suele llevar este estilo.\\nLa inusual personalidad de
48
+ la señora ha encantado a los usuarios de la red. Es por eso que el
49
+ relato ha acumulado más de 1.000 me gusta y cerca de 100 retuits,
50
+ además de una multitud de comentarios.\\n"
51
+
52
+ ---
53
+
54
+ <table>
55
+ <tr>
56
+ <td style="width:100%"><img src="https://github.com/ikergarcia1996/NoticIA/blob/main/assets/head.png?raw=true" align="right" width="100%"> </td>
57
+ </tr>
58
+ </table>
59
+
60
+ A model finetuned with the [NoticIA Dataset](https://huggingface.co/datasets/Iker/NoticIA). This model can generate summaries of clickbait headlines
61
+
62
+ If you are looking for a smaller model, checkout [ClickbaitFighter-2B](https://huggingface.co/Iker/ClickbaitFighter-2B).
63
+
64
+ - 📖 Paper: [Coming soon]()
65
+ - 📓 NoticIA Dataset: [https://github.com/ikergarcia1996/NoticIA](https://github.com/ikergarcia1996/NoticIA)
66
+ - 💻 Baseline Code: [https://huggingface.co/datasets/Iker/NoticIA](https://huggingface.co/datasets/Iker/NoticIA)
67
+ - 🤖 Pre Trained Models [https://huggingface.co/collections/Iker/noticia-and-clickbaitfighter-65fdb2f80c34d7c063d3e48e](https://huggingface.co/collections/Iker/noticia-and-clickbaitfighter-65fdb2f80c34d7c063d3e48e)
68
+ - 🔌 Online Demo: [https://iker-clickbaitfighter.hf.space/](https://iker-clickbaitfighter.hf.space/)
69
+
70
+
71
+ # Usage example:
72
+ ```python
73
+ import torch # pip install torch
74
+ from datasets import load_dataset # pip install datasets
75
+ from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig # pip install transformers
76
+
77
+
78
+ def prompt(
79
+ headline: str,
80
+ body: str,
81
+ ) -> str:
82
+ """
83
+ Generate the prompt for the model.
84
+
85
+ Args:
86
+ headline (`str`):
87
+ The headline of the article.
88
+ body (`str`):
89
+ The body of the article.
90
+ Returns:
91
+ `str`: The formatted prompt.
92
+ """
93
+
94
+ return (
95
+ f"Ahora eres una Inteligencia Artificial experta en desmontar titulares sensacionalistas o clickbait. "
96
+ f"Tu tarea consiste en analizar noticias con titulares sensacionalistas y "
97
+ f"generar un resumen de una sola frase que revele la verdad detrás del titular.\n"
98
+ f"Este es el titular de la noticia: {headline}\n"
99
+ f"El titular plantea una pregunta o proporciona información incompleta. "
100
+ f"Debes buscar en el cuerpo de la noticia una frase que responda lo que se sugiere en el título. "
101
+ f"Siempre que puedas cita el texto original, especialmente si se trata de una frase que alguien ha dicho. "
102
+ f"Si citas una frase que alguien ha dicho, usa comillas para indicar que es una cita. "
103
+ f"Usa siempre las mínimas palabras posibles. No es necesario que la respuesta sea una oración completa. "
104
+ f"Puede ser sólo el foco de la pregunta. "
105
+ f"Recuerda responder siempre en Español.\n"
106
+ f"Este es el cuerpo de la noticia:\n"
107
+ f"{body}\n"
108
+ )
109
+
110
+ dataset = load_dataset("Iker/NoticIA")
111
+ example = dataset["test"][0]
112
+
113
+ prompt = prompt(headline=example["web_headline"], body=example["web_text"])
114
+
115
+ tokenizer = AutoTokenizer.from_pretrained("Iker/ClickbaitFighter-10B")
116
+ model = AutoModelForCausalLM.from_pretrained(
117
+ "Iker/ClickbaitFighter-2B", torch_dtype=torch.bfloat16, device_map="auto"
118
+ )
119
+
120
+ formatted_prompt = tokenizer.apply_chat_template(
121
+ [{"role": "user", "content": prompt}],
122
+ tokenize=False,
123
+ add_generation_prompt=True,
124
+ )
125
+
126
+ model_inputs = tokenizer(
127
+ [formatted_prompt], return_tensors="pt", add_special_tokens=False
128
+ )
129
+
130
+ model_output = model.generate(**model_inputs.to(model.device), generation_config=GenerationConfig(
131
+ max_new_tokens=32,
132
+ min_new_tokens=1,
133
+ do_sample=False,
134
+ num_beams=1,
135
+ use_cache=True
136
+ ))
137
+
138
+ summary = tokenizer.batch_decode(model_output,skip_special_tokens=True)[0]
139
+
140
+ print(summary.strip().split("\n")[-1]) # Get only the summary, without the prompt.
141
+ ```
142
+
143
+ # Evaluation Results
144
+ <table>
145
+ <tr>
146
+ <td style="width:100%"><img src="https://github.com/ikergarcia1996/NoticIA/raw/main/results/Results.png" align="right" width="100%"> </td>
147
+ </tr>
148
+ </table>