alex-abb commited on
Commit
d46fa4f
1 Parent(s): 16fd66a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -21
app.py CHANGED
@@ -1,23 +1,23 @@
1
- import datasets
2
- from datasets import load_dataset
3
- import transformers
4
  from transformers import AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments, pipeline
 
 
 
5
 
6
- model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2) # 2 classes : positif et négatif
7
- tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
8
-
9
- ds = load_dataset("stanfordnlp/sst2")
10
-
11
- sst2_dataset = load_dataset("glue", "sst2", split="train")
12
-
13
 
14
- def encode(examples):
15
- return tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, padding="max_length")
 
 
16
 
 
 
 
17
 
18
- sst2_dataset = sst2_dataset.map(encode, batched=True)
19
- sst2_dataset = sst2_dataset.map(lambda examples: {"labels": examples["label"]}, batched=True)
20
 
 
21
  training_args = TrainingArguments(
22
  per_device_train_batch_size=8,
23
  evaluation_strategy="epoch",
@@ -26,15 +26,15 @@ training_args = TrainingArguments(
26
  num_train_epochs=3,
27
  )
28
 
29
-
30
  trainer = Trainer(
31
  model=model,
32
  args=training_args,
33
  train_dataset=encoded_dataset["train"],
34
- eval_dataset=encoded_dataset["test"],
35
  )
36
 
37
- import os
38
  if not os.path.exists("./fine_tuned_model"):
39
  trainer.train()
40
  # Sauvegarder le modèle fine-tuné et le tokenizer
@@ -42,15 +42,16 @@ if not os.path.exists("./fine_tuned_model"):
42
  tokenizer.save_pretrained("./fine_tuned_model")
43
  else:
44
  # Charger le modèle fine-tuné
45
- model = BertForSequenceClassification.from_pretrained("./fine_tuned_model")
46
- tokenizer = BertTokenizer.from_pretrained("./fine_tuned_model")
47
-
48
 
 
49
  sentiment_analysis = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
50
 
 
51
  def generate_response(message):
52
  result = sentiment_analysis(message)[0]
53
  return f"Label: {result['label']}, Score: {result['score']}"
54
 
 
55
  gr.ChatInterface(fn=generate_response).launch()
56
-
 
 
 
 
1
  from transformers import AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments, pipeline
2
+ from datasets import load_dataset
3
+ import gradio as gr
4
+ import os
5
 
6
+ # Charger le jeu de données SST-2
7
+ dataset = load_dataset("glue", "sst2")
 
 
 
 
 
8
 
9
+ # Charger le modèle BERT pré-entraîné et le tokenizer associé
10
+ model_name = "bert-base-uncased"
11
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
12
+ model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2) # 2 classes : positif et négatif
13
 
14
+ # Prétraitement des données
15
+ def preprocess_function(examples):
16
+ return tokenizer(examples["sentence"], padding="max_length", truncation=True)
17
 
18
+ encoded_dataset = dataset.map(preprocess_function, batched=True)
 
19
 
20
+ # Configuration des arguments d'entraînement
21
  training_args = TrainingArguments(
22
  per_device_train_batch_size=8,
23
  evaluation_strategy="epoch",
 
26
  num_train_epochs=3,
27
  )
28
 
29
+ # Entraînement du modèle
30
  trainer = Trainer(
31
  model=model,
32
  args=training_args,
33
  train_dataset=encoded_dataset["train"],
34
+ eval_dataset=encoded_dataset["validation"],
35
  )
36
 
37
+ # Vérifiez si le modèle a déjà été entraîné et sauvegardé
38
  if not os.path.exists("./fine_tuned_model"):
39
  trainer.train()
40
  # Sauvegarder le modèle fine-tuné et le tokenizer
 
42
  tokenizer.save_pretrained("./fine_tuned_model")
43
  else:
44
  # Charger le modèle fine-tuné
45
+ model = AutoModelForSequenceClassification.from_pretrained("./fine_tuned_model")
46
+ tokenizer = AutoTokenizer.from_pretrained("./fine_tuned_model")
 
47
 
48
+ # Créer un pipeline de classification des sentiments
49
  sentiment_analysis = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
50
 
51
+ # Fonction pour générer une réponse à partir du message de l'utilisateur
52
  def generate_response(message):
53
  result = sentiment_analysis(message)[0]
54
  return f"Label: {result['label']}, Score: {result['score']}"
55
 
56
+ # Configurer et lancer l'interface de chat avec Gradio
57
  gr.ChatInterface(fn=generate_response).launch()