EveSa commited on
Commit
fe4c255
2 Parent(s): 3257a33 2d63a66

Merge pull request #24 from EveSa/Ling

Browse files
Files changed (2) hide show
  1. Documentation.md +226 -152
  2. README.md +77 -78
Documentation.md CHANGED
@@ -1,152 +1,226 @@
1
- # Les objectifs du projet
2
-
3
- L'objectif du projet est de mettre en place une <strong>plateforme de requête</strong> d'un modèle de langue permettant la <strong>génération de résumé d'article de presse.</strong>
4
-
5
- # Une description du système ou des données auxquelles l’interface permet d’accéder
6
-
7
- ## Les Données 💾
8
-
9
- Le projet utilisera pour l'entraînement du modèle de langue le corpus issu de 'Newsroom: A Dataset of 1.3 Million Summaries with Diverse Extractive Strategies' (Grusky et al., NAACL 2018) newsroom assemblé par Max Grusky et ses collègues en 2018. Newsroom est un corpus parallèle rassemblant 1,3 millions articles de presse et leur résumé en anglais. Les résumés sont réalisés en utilisant les méthodes d'extraction comme d'abstraction ainsi que des méthodes mixtes. Ce corpus est disponible sur HuggingFace mais necessite un téléchargement préalable pour des raisons de protection des données.
10
-
11
- Le corpus est nettoyé avant d'être utilisé pour l'entraînement du LSTM. Seule les parties 'text' et 'summary' du jsonl sont utilisées.
12
-
13
- ## Le système 🖥️
14
-
15
- 2 systèmes :
16
- - LSTM réalisé à partir du <a href="https://loicgrobol.github.io//neural-networks/slides/03-transformers/transformers-slides.py.ipynb">cours</a> et de cet <a href="https://www.kaggle.com/code/columbine/seq2seq-pytorch">exemple</a> et de beaucoup d'autres référence en ligne.
17
- - Fine-tuned transformers modèle lancé et pré-entrainé par Google :<a href="https://huggingface.co/google/mt5-small">google/mt5-small</a>, il s'agit d'une variance du <a href="https://huggingface.co/docs/transformers/v4.16.2/en/model_doc/mt5">mT5</a>. Le model est entrainé pour notre tâche en se basant sur la documentation sur <a href="https://huggingface.co/docs/transformers/tasks/summarization">Summarisation</a> proposé par Huggingface.
18
-
19
-
20
- # La méthodologie
21
-
22
- ## Répartition du travail 👥
23
- Nous avons travaillé avec le logiciel de gestion de version Github en mettant en place une intégration continue envoyant directement les `pull request` sur l'espace Huggingface.
24
- Idéalement, les `pull request` doivent être validées par deux membres du projet avant d'être accéptées afin d'éviter les erreurs en production. Nous n'avons pas mis en place ces restrictions à cause de la difficulté à gérer Docker dans Huggingface qui nous a nécessité beaucoup de modification.
25
-
26
- ## Problèmes rencontrés et résolution
27
-
28
- ### Problème sur le corpus 📚
29
-
30
- - [x] Problème Mojibake depuis les fichiers jsonl :
31
- - [x] encodage en cp1252 et decodage en utf-8 avec ignore pour éviter les erreurs sur les caractères utf-8 présents dans le fichier à l'encodage
32
- - ❔Le problème ne se présente étrangement pas sur toutes les machines.
33
- - [x] Agglomération des pronoms et des verbes
34
- - D'abord remplacement des `'` par des espaces avant le `split`
35
- - Utilisation d'un dictionnaire de correspondance
36
- - [ ] Split des noms propres composés ('Ivory Coast', 'Inter Milan') :
37
- - [ ] pas de résolution à ce jour
38
- - [ ] Problème des mots non disponibles dans le vocabulaire
39
- - À terme, entraînement sur tout le corpus ?
40
- - [ ] Problème de la qualité du corpus :
41
- - Résumés tronqués : "Did Tatum O'Neal's latest battle with ex-husband John McEnroe put her back on drugs? The \"Paper Moon\"star checked herself into L.A.'s Promises rehab facility after a friend caught her smoking crack, according to The National Enquirer. O'Neal emerged clean and sober from Promises' 34-day recovery program in late July, the tab reports. The actress is said to have plunged into her old habits because of" ...
42
- - Résumés plus proche de titres que de résumés : "SAN DIEGO PADRES team notebook"
43
- - [ ] pas de résolution à ce jour
44
-
45
- ### Problème sur le Réseau de Neurone 🕸️
46
-
47
- - [x] Prise en compte du padding dans l'apprentissage :
48
- - [ ] utilisation de la fonctionnalité ignore_index de NLLLoss avec un padding d'une valeur à -100
49
- - [ ] Temps d'apprentissage très long :
50
- - [ ] essai de mise en place d'un entraînement par batch
51
- - [ ] Répetition des déterminants après entraînement du modèle - https://huggingface.co/blog/how-to-generate
52
- - [x] mise en place d'un Beam Search - non fructueux
53
- - [ ] Passage vers du Sampling
54
-
55
- ### Problème sur le fine-tuning
56
- - [x] La fonction map ne peut pas s'appliquer :
57
- - Dans le prétrainement des données, utilise Dataset.from_dict(dataframe) pour obtenir les donneés en Dataset au lieu de Dataframe
58
- - [x] Problème de la permission d'appel du model privé enregistré sur HuggingFace :
59
- - Se connecter à l'aide de `huggingface-cli login` et mettre `use_auth_token=True` en appelant le model.
60
- - [x] Processus arrêté sans erruers détectées :
61
- - Diminuer le nombre de données
62
- - Modifier les paramètres d'entrainement en diminuant le nombre d'epoch d'entrainement
63
- - [ ] Warning message pour les tokens non identifiables causé par
64
- la conversion de sentencepiece tokenizer en fast tokenizer:
65
- - [ ] pas de résolution à ce jour
66
- - [ ] Les résultats d'évaluation selon ROUGE sont très mauvais, rouge2 à 0:
67
- - [ ] pas de résolution à ce jour
68
- ### Problème sur l'interface
69
-
70
- ### Problème de l'Intégration continue
71
-
72
- - [x] Pas de lien possible entre Huggingface et un github dont l'history contient des fichier de plus de 10Mo
73
- - 💣 Explosion du github
74
- - [ ] Docker qui fonctionne en local mais en sur Huggingface
75
- - Problème de path de fichier
76
-
77
-
78
- ## Les étapes du projet
79
-
80
- 1. Initialisation du Github
81
- 2. Premiers pas dans le réseau de neurone
82
- 3. Réalisation de la plateforme
83
- 4. Intégration à Huggingface
84
- 5. Fine-tuning de modèle
85
- 6. Finalisation
86
-
87
- # Implémentation
88
- ## modélisation
89
-
90
- Nous avons décidé dans un premier temps de modéliser une LSTM pour le résumé automatique sur la base du réseau de neurone réalisé en cours.
91
- Pour ce faire nous nous sommes beaucoup inspirée du kaggle https://www.kaggle.com/code/columbine/seq2seq-pytorch ainsi que de la documentation de PyTorch https://pytorch.org/tutorials/beginner/nlp/sequence_models_tutorial.html#example-an-lstm-for-part-of-speech-tagging
92
-
93
- ## modules et API utilisés
94
- ### Dataloader :
95
- - Data
96
- ```
97
- A class used to get data from file
98
- ...
99
-
100
- Attributes
101
- ----------
102
- path : str
103
- the path to the file containing the data
104
-
105
- Methods
106
- -------
107
- open()
108
- open the jsonl file with pandas
109
- clean_data(text_type)
110
- clean the data got by opening the file and adds <start> and
111
- <end> tokens depending on the text_type
112
- get_words()
113
- get the dataset vocabulary
114
- ```
115
- - Vectoriser
116
- ```
117
- ```
118
-
119
- ### Model :
120
-
121
- ### train :
122
-
123
- ### inference :
124
-
125
- ### api :
126
-
127
- ### templates :
128
-
129
- ## Langages de programmation
130
- - 🐳 Docker
131
- - yaml
132
- - 🐍 et python evidemment
133
-
134
- # Les résultats (fichiers output, visualisations…)
135
-
136
- ## Les metriques d'évaluation
137
- - ROUGE
138
- - BLEU
139
-
140
-
141
- # Discussion des résultats
142
-
143
- ## Résultats du LSTM
144
-
145
- Les résultats du LSTM sont inutilisables mais ont permis au moins de se confronter à la difficulté de mettre en place des réseaux de neurones depuis pas grand chose.
146
-
147
- On aurait aimé avoir plus de temps pour aller plus loin et comprendre mieux encore : l'entraîement par batch, pourquoi les résultats sont si mauvais, mettre d'autres stratégies de génération en place, ...
148
-
149
- ## Résultat du fine-tuning
150
-
151
- Les résumés générés ne sont pas grammaticalement corrects à 100% mais les informations importantes du texte sont bien présentes dans le résumé, et la longeur du résumé correspond bien à notre attente. Cependant les résultats d'évaluation selon ROUGE est très mauvais, malgré une amélioration de 0.007 à 0.06 pour rouge1, il n'ést plus possible d'obtenir de meilleurs scores.
152
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Les objectifs du projet
2
+
3
+ L'objectif du projet est de mettre en place une <strong>plateforme de requête</strong> d'un modèle de langue permettant la <strong>génération de résumés d'articles de presse.</strong>
4
+
5
+ # Une description du système ou des données auxquelles l’interface permet d’accéder
6
+
7
+ ## Les Données 💾
8
+
9
+ Le projet utilisera pour l'entraînement du modèle de langue le corpus issu de 'Newsroom: A Dataset of 1.3 Million Summaries with Diverse Extractive Strategies' (Grusky et al., NAACL 2018) newsroom assemblé par Max Grusky et ses collègues en 2018. Newsroom est un corpus parallèle rassemblant 1,3 millions articles de presse et leur résumé en anglais. Les résumés sont réalisés en utilisant les méthodes d'extraction comme d'abstraction ainsi que des méthodes mixtes. Ce corpus est disponible sur HuggingFace mais nécessite un téléchargement préalable pour des raisons de protection des données.
10
+
11
+ Le corpus est nettoyé avant d'être utilisé pour l'entraînement du LSTM. Seules les parties 'text' et 'summary' du jsonl sont utilisées.
12
+
13
+ ## Le système 🖥️
14
+
15
+ 2 systèmes :
16
+ - LSTM réalisé à partir du <a href="https://loicgrobol.github.io//neural-networks/slides/03-transformers/transformers-slides.py.ipynb">cours</a> et de cet <a href="https://www.kaggle.com/code/columbine/seq2seq-pytorch">exemple</a> et de beaucoup d'autres références en ligne.
17
+ - Fine-tuned transformers
18
+
19
+ # La méthodologie
20
+
21
+ ## Répartition du travail 👥
22
+ Nous avons travaillé avec le logiciel de gestion de version Github en mettant en place une intégration continue envoyant directement les `pull request` sur l'espace Huggingface.
23
+
24
+ Idéalement, les `pull request` doivent être validées par deux membres du projet avant d'être accéptées afin d'éviter les erreurs en production. Nous n'avons pas mis en place ces restrictions à cause de la difficulté à gérer Docker dans Huggingface qui nous a nécessité beaucoup de modifications.
25
+
26
+ ## Problèmes rencontrés et résolutions
27
+
28
+ ### Problèmes sur le corpus 📚
29
+
30
+ - [x] Problème Mojibake depuis les fichiers jsonl :
31
+ - [x] encodage en cp1252 et decodage en utf-8 avec ignore pour éviter les erreurs sur les caractères utf-8 présents dans le fichier à l'encodage
32
+ - ❔Le problème ne se présente étrangement pas sur toutes les machines.
33
+ - [x] Agglomération des pronoms et des verbes
34
+ - D'abord remplacement des `'` par des espaces avant le `split`
35
+ - Utilisation d'un dictionnaire de correspondances
36
+ - [ ] Split des noms propres composés ('Ivory Coast', 'Inter Milan') :
37
+ - [ ] pas de résolution à ce jour
38
+ - [ ] Problème des mots non disponibles dans le vocabulaire
39
+ - À terme, entraînement sur tout le corpus ?
40
+ - [ ] Problème de la qualité du corpus :
41
+ - Résumés tronqués : "Did Tatum O'Neal's latest battle with ex-husband John McEnroe put her back on drugs? The \"Paper Moon\"star checked herself into L.A.'s Promises rehab facility after a friend caught her smoking crack, according to The National Enquirer. O'Neal emerged clean and sober from Promises' 34-day recovery program in late July, the tab reports. The actress is said to have plunged into her old habits because of" ...
42
+ - Résumés plus proche de titres que de résumés : "SAN DIEGO PADRES team notebook"
43
+ - [ ] pas de résolution à ce jour
44
+
45
+ ### Problèmes sur le Réseau de Neurones 🕸️
46
+
47
+ - [x] Prise en compte du padding dans l'apprentissage :
48
+ - [ ] utilisation de la fonctionnalité ignore_index de NLLLoss avec un padding d'une valeur à -100
49
+ - [ ] Temps d'apprentissage très long :
50
+ - [ ] essai de mise en place d'un entraînement par batch
51
+ - [ ] Répetition des déterminants après entraînement du modèle - https://huggingface.co/blog/how-to-generate
52
+ - [x] mise en place d'un Beam Search - non fructueux
53
+ - [ ] Passage vers du Sampling
54
+
55
+ ### Problèmes sur le fine-tuning
56
+
57
+ - [x] La fonction map ne peut pas s'appliquer :
58
+ * Dans le prétraitement des données, utilisation de ```Dataset.from_dict(dataframe)``` pour obtenir les données en dataset au lieu d'un dataframe
59
+ - [x] Problème pour la permission d'appel du model privé enregistré sur HuggingFace :
60
+ * Se connecter à l'aide de huggingface-cli login et mettre use_auth_token=True en appelant le modèle.
61
+ - [x] Processus arrêté sans erreur détectée :
62
+ * Diminuer le nombre de données
63
+ * Modifier les paramètres d'entrainement en diminuant le nombre d'epoch d'entrainement
64
+ - [ ] Warning message pour les tokens non identifiables en raison de la conversion de ```sentencepiece tokenizer``` en fast tokenizer :
65
+ * Pas de résolution à ce jour
66
+ - [ ] Les résultats d'évaluation selon ROUGE sont très mauvais, rouge2 à 0 :
67
+ * Pas de résolution à ce jour
68
+
69
+ ### Problèmes sur l'interface
70
+
71
+ - [x] Permettre le choix du modèle à l'utilisateur de l'application
72
+ - Envoi de deux formulaires distincts pour le choix du modèle et le texte d'entrée
73
+ - [x] Permettre la remise à zéro des deux boîtes de texte
74
+ - Utilisation de javascript pour créer une fonction de reset personnalisée
75
+ - [x] Faire en sorte qu'on ne puisse pas lancer l'inférence avec le bouton "GO" sans avoir choisi de modèle au préalable
76
+ - Désactivation des boutons "GO" et "RESET" sur le point de terminaison "/" de l'API.
77
+ - [x] Veiller à la robustesse de l'API si l'utilisateur ne fait pas les actions dans l'ordre établi
78
+ - Renvoi de messages d'erreur si le modèle n'est pas sélectionné ou si le texte n'est pas saisi.
79
+ - [x] Faire en sorte que le modèle sélectionné reste sélectionné après l'envoi du formulaire
80
+ - Utilisation d'une boucle for de jinja pour parcourir la liste des modèles et création d'une boucle if pour tester le choix du modèle et lui attribuer l'attribut "selected".
81
+
82
+ ### Problèmes de l'Intégration continue
83
+
84
+ - [x] Pas de lien possible entre Huggingface et un github dont l'history contient des fichier de plus de 10Mo
85
+ - 💣 Explosion du github
86
+ - [ ] Docker qui fonctionne en local mais en sur Huggingface
87
+ - Problème de path de fichier
88
+
89
+
90
+ ## Les étapes du projet
91
+
92
+ 1. Initialisation du Github
93
+ 2. Premiers pas dans le réseau de neurones
94
+ 3. Réalisation de la plateforme
95
+ 4. Intégration à Huggingface
96
+ 5. Fine-tuning de modèle
97
+ 6. Finalisation
98
+
99
+ # Implémentation
100
+ ## modélisation
101
+
102
+ Nous avons décidé dans un premier temps de modéliser une LSTM pour le résumé automatique sur la base du réseau de neurones réalisé en cours.
103
+ Pour ce faire, nous nous sommes beaucoup inspirées du kaggle https://www.kaggle.com/code/columbine/seq2seq-pytorch ainsi que de la documentation de PyTorch https://pytorch.org/tutorials/beginner/nlp/sequence_models_tutorial.html#example-an-lstm-for-part-of-speech-tagging
104
+
105
+ ## modules et API utilisés
106
+ ### Dataloader :
107
+ - Data
108
+ ```
109
+ A class used to get data from file
110
+ ...
111
+
112
+ Attributes
113
+ ----------
114
+ path : str
115
+ the path to the file containing the data
116
+
117
+ Methods
118
+ -------
119
+ open()
120
+ open the jsonl file with pandas
121
+ clean_data(text_type)
122
+ clean the data got by opening the file and adds <start> and
123
+ <end> tokens depending on the text_type
124
+ get_words()
125
+ get the dataset vocabulary
126
+ ```
127
+ - Vectoriser
128
+ ```
129
+ A class used to vectorise data
130
+ ...
131
+
132
+ Attributes
133
+ ----------
134
+ vocab : list
135
+ list of the vocab
136
+
137
+ Methods
138
+ -------
139
+ encode(tokens)
140
+ transforms a list of tokens to their corresponding idx
141
+ in form of troch tensor
142
+ decode(word_idx_tensor)
143
+ converts a tensor to a list of tokens
144
+ vectorize(row)
145
+ encode an entire row from the dataset
146
+ ```
147
+
148
+ ### Model :
149
+ - Forward function in the EncoderDecoderModel class
150
+ ```
151
+ :param source: tensor
152
+ the input text
153
+ :param num_beams: int
154
+ the number of outputs to iterate on for beam_search
155
+ :param summary_len: int
156
+ length ratio of the summary compared to the text
157
+ ```
158
+
159
+ ### Train :
160
+ - Train function for LSTM
161
+ ```
162
+ Train the EncoderDecoderModel network for a given number of epoch
163
+ -----------
164
+ Parameters
165
+ model: torch.nn.Module
166
+ EncoderDecoderModel defined in model.py
167
+ train_set: Sequence[Tuple[torch.tensor, torch.tensor]]
168
+ tuple of vectorized (text, summary) from the training set
169
+ dev_set: Sequence[Tuple[torch.tensor, torch.tensor]]
170
+ tuple of vectorized (text, summary) for the dev set
171
+ epochs: int
172
+ the number of epochs to train on
173
+ clip: int
174
+ Return
175
+ None
176
+ ```
177
+
178
+ ### Inference :
179
+ - Inference function for LSTM
180
+ ```
181
+ Predict the summary for an input text
182
+ --------
183
+ Parameter
184
+ text: str
185
+ the text to sumarize
186
+ Return
187
+ str
188
+ The summary for the input text
189
+ ```
190
+
191
+ ### API :
192
+ - Summarize function
193
+ ```
194
+ Returns the summary of an input text.
195
+ ---------
196
+ Parameter
197
+ text : str
198
+ A text to summarize.
199
+ Returns
200
+ :str
201
+ The summary of the input text.
202
+ ```
203
+
204
+ ## Langages de programmation & utilitaires
205
+ - 🐳 Docker
206
+ - yaml
207
+ - jinja2
208
+ - 🐍 et python evidemment
209
+
210
+ # Les résultats (fichiers output, visualisations…)
211
+
212
+ ## Les metriques d'évaluation
213
+ - ROUGE
214
+ - BLEU
215
+
216
+
217
+ # Discussion des résultats
218
+
219
+ ## Résultats du LSTM
220
+
221
+ Les résultats du LSTM sont inutilisables mais ont permis au moins de se confronter à la difficulté de mettre en place des réseaux de neurones depuis pas grand chose.
222
+ On aurait aimé avoir plus detemps pour aller plus loin et comprendre mieux encore : l'entraîement par batch, pourquoi les résultats sont si mauvais, mettre d'autres stratégies de génération en place, ...
223
+
224
+ ## Résultat du fine-tuning
225
+
226
+ Les résumés générés ne sont pas grammaticalement corrects à 100% mais les informations importantes du texte sont bien présentes dans le résumé, et la longueur du résumé correspond bien à notre attente. Cependant, les résultats d'évaluation selon ROUGE sont très mauvais, malgré une amélioration de 0.007 à 0.06 pour rouge1, il n'est plus possible d'obtenir de meilleurs scores.
README.md CHANGED
@@ -1,78 +1,77 @@
1
- ---
2
- title: SummaryProject
3
- sdk: docker
4
- app_file: src/api.py
5
- pinned: false
6
- ---
7
-
8
- # Project Deep Learning - Text Summarisation tool and it's application programming interface
9
-
10
- As part of the master course "Neural Network",for this university project, our task is about creating a application, a interface or a python library in the use of NLP(Natural Language Processing) with the help of an artificial neural network system.
11
-
12
-
13
- ## Description
14
-
15
- **Objectives of our project :**
16
-
17
- Create a interface which allows users to sammrize a long text like press article into a brief version.
18
-
19
- To achieve this general objective, for the algorithm part, we would like to test two different deep learning methods: setting up a LSTM model and fine tuning Transformer model.
20
-
21
- For the interface, having a interface building with fastAPI framework and putting the application on Huggingface.
22
-
23
-
24
- ## Getting Started
25
-
26
- ### Préparation
27
-
28
- * Open the link below directing towards our interface on huggingface.
29
- ```
30
- https://huggingface.co/spaces/EveSa/SummaryProject
31
- ```
32
- ### The interface
33
-
34
- * 1- Choosing a model for your summarization task (LSTM/Fine-tuned T5) by clicking on the scroll-down list. And click the Select model botton.
35
-
36
- * 2- Enter your text to summarize in the left section.
37
-
38
- * 3- Click on 'Go!' botton and you will get your sammary!
39
-
40
- * 4- Dont forget to reset the App for your next try. The botton is at the right next to 'Go!'.
41
-
42
- ## In case you want to try to execute our scripts :
43
-
44
- ### Préparation
45
- * In order to run the script, you need:
46
-
47
- * 1- Create a virtual environment named .venv
48
- ```
49
- python3 -m virtualenv .venv
50
- source .venv/bin/activate
51
- ```
52
- * 2- Also install the dependencies
53
- ```
54
- pip install -U -r requirements.txt
55
- ```
56
-
57
- * You are now ready to execute the scripts ^^
58
-
59
- ### The programme api.py
60
-
61
- * Run the script with the command below:
62
- ```
63
- python3 api.py
64
- ```
65
- * This code generate the same page as on Huggingface in your browser. To do the task your may follow the steps in the previous section.
66
-
67
- ## Authors
68
-
69
- Eve Sauvage
70
-
71
- Estelle SALMON
72
-
73
- Lingyun GAO
74
-
75
-
76
- ## License
77
-
78
- This project is licensed under the [M2 TAL] License
 
1
+ ---
2
+ title: SummaryProject
3
+ sdk: docker
4
+ app_file: src/api.py
5
+ pinned: false
6
+ ---
7
+
8
+ # Project Deep Learning - Text Summarisation tool and it's application programming interface
9
+
10
+ As part of the master course "Neural Network", for this university project, our task is about creating an application, an interface or a python library in the use of NLP (Natural Language Processing) with the help of an artificial neural network system.
11
+
12
+
13
+ ## Description
14
+
15
+ **Objectives of our project :**
16
+
17
+ Create an interface which allows users to summarize a long text like press article into a brief version.
18
+
19
+ To achieve this general objective, for the algorithm part, we would like to test two different deep learning methods : setting up a LSTM model and fine tuning a transformer model.
20
+
21
+ For the interface part, we wanted to create an interface building with a fastAPI framework and put the application on Huggingface.
22
+
23
+
24
+ ## Getting Started
25
+
26
+ ### Get prepared
27
+
28
+ * Open the link below directing towards our interface on huggingface.
29
+ ```
30
+ https://huggingface.co/spaces/EveSa/SummaryProject
31
+ ```
32
+ ### The interface
33
+
34
+ * 1- Choose a model for your summarization task (LSTM/Fine-tuned T5) by clicking on the scroll-down list. And click the Select model button.
35
+
36
+ * 2- Enter your text to summarize in the left section.
37
+
38
+ * 3- Click on 'Go!' botton and you will get your summary!
39
+
40
+ * 4- Don't forget to reset the app for your next try. The botton is at the right next to 'Go!'.
41
+
42
+ ## In case you want to try to execute our scripts :
43
+
44
+ ### Get prepared
45
+ * In order to run the script, you need to :
46
+
47
+ * 1- Create a virtual environment named ```.venv```
48
+ ```
49
+ python3 -m virtualenv .venv
50
+ source .venv/bin/activate
51
+ ```
52
+ * 2- Also install the dependencies
53
+ ```
54
+ pip install -U -r requirements.txt
55
+ ```
56
+
57
+ * You are now ready to execute the scripts
58
+
59
+ ### The program api.py
60
+
61
+ * Run the script with the command below :
62
+ ```
63
+ python3 api.py
64
+ ```
65
+ * This code generates the same page as on Huggingface in your browser. To do the task, you may follow the steps in the previous section.
66
+
67
+ ## Authors
68
+
69
+ Eve SAUVAGE
70
+
71
+ Estelle SALMON
72
+
73
+ Lingyun GAO
74
+
75
+ ## License
76
+
77
+ This project is licensed under the [M2 TAL] License