ELOUNDOU commited on
Commit
42d4eef
1 Parent(s): 7028d52

Upload 8 files

Browse files
Files changed (8) hide show
  1. app.py +253 -0
  2. img/image1.jpg +0 -0
  3. img/image2.jpg +0 -0
  4. img/image3.jpg +0 -0
  5. img/image4.jpg +0 -0
  6. img/image5.jpg +0 -0
  7. img/logo2.png +0 -0
  8. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,253 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import requests
3
+ import time
4
+ from streamlit_option_menu import option_menu
5
+ import streamlit.components.v1 as components
6
+ import os
7
+
8
+
9
+ #TOKEN_API = os.environ.get("API_TOKEN")
10
+ TOKEN_API = "Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
11
+
12
+ #changement du logo et du titre de mon application en anglais
13
+ st.set_page_config(page_title="NLP Outro", page_icon=":brain:", layout="centered", menu_items=None)
14
+
15
+
16
+
17
+ # Créer trois colonnes de largeur égale
18
+ col1, col2, col3 = st.columns(3)
19
+
20
+ # Laisser la première et la troisième colonne vides
21
+ with col1:
22
+ st.write("")
23
+
24
+ # Afficher le logo dans la deuxième colonne
25
+ with col2:
26
+ st.sidebar.image("img/logo2.png", use_column_width=None)
27
+
28
+ with col3:
29
+ st.write("")
30
+ with st.sidebar:
31
+ selected = option_menu(
32
+ menu_title="Application NLP", # required
33
+ options=["Accueil", "Chatbot", "Traduction", "Résumer"], # required
34
+ icons=["house", "chat-dots", "translate","journal-text"], # optional
35
+ menu_icon="cast", # optional
36
+ default_index=0 # optional
37
+
38
+ )
39
+
40
+ if selected == "Accueil":
41
+ st.title(f"{selected}")
42
+
43
+ # Display home page with app description and logo
44
+ st.header('Bienvenue sur mon application de nlp qui présente trois principales fonctionalités : le chatbot, la traduction et le résumé de texte.')
45
+ st.image('img/image4.jpg', )
46
+ #st.title('Bienvenue sur l\'application de classification d\'images de radiographies pulmonaires')
47
+ #st.markdown("<h1 style='text-align: center;'>Bienvenue sur l'application de classification d'images de radiographies pulmonaires</h1>", unsafe_allow_html=True)
48
+ #st.markdown("<h5 style='text-align: justify;'><b>La traduction</b> permet de convertir du texte entre six langues : l’anglais, l’espagnole, le français, le chinois et l’itqlien et le russe. Elle utilise les modèles de Helsinki-NLP, qui sont des modèles de traduction automatique neuronale basés sur le Transformer. Ces modèles sont rapides, précis et capables de gérer des langues morphologiquement riches.</h5>", unsafe_allow_html=True)
49
+ # st.markdown("<h5 style='text-align: justify;'><b>Le résumé</b> permet de condenser un texte long en un texte court qui en conserve les informations essentielles. Il utilise le modèle facebook/bart-large-cnn , qui est une variante du modèle T56 adaptée et affinée pour la tâche de résumé de texte. Ce modèle est entraîné sur un ensemble diversifié de documents et de résumés humains, ce qui lui permet de générer des résumés concis et cohérents.</h5>", unsafe_allow_html=True)
50
+ # st.markdown("<h5 style='text-align: justify;'><b>Le chatbot</b> permet de dialoguer avec l’application en utilisant un langage naturel. Il utilise le modèle /tiiuae/falcon-7b-instruct, qui est un modèle de génération de texte causal basé sur Falcon-7B et affiné sur un mélange de données de chat et d’instruction. Ce modèle est capable de répondre à des requêtes variées, de suivre des instructions et de créer du contenu imaginatif.</h5>", unsafe_allow_html=True)
51
+ st.markdown("<h5 style='text-align: justify;'>Mon application utilise l’Inference API de Hugging Face pour accéder aux modèles et les exécuter via des requêtes HTTP simples. L’Inference API est un service gratuit et rapide qui permet de tester et d’évaluer plus de 150 000 modèles de machine learning accessibles au public, ou vos propres modèles privés, sur l’infrastructure partagée de Hugging Face.</h5>", unsafe_allow_html=True)
52
+ st.markdown("<h5 style='text-align: justify;'>Mon application est donc un outil puissant et innovant qui exploite les dernières avancées de l’intelligence artificielle pour offrir des services de traduction, de résumé et de chatbot de haute qualité.</h5>", unsafe_allow_html=True)
53
+
54
+
55
+ # components.html(
56
+ # """
57
+ # <div style="position: fixed; bottom: 0; left: 0; right: 0; text-align: center; font-size: 15px; color: gray;">
58
+ # Tous droits réservés © Janvier 2024
59
+ # </div>
60
+ # """,
61
+ # height=50
62
+ # )
63
+
64
+ if selected == "Traduction":
65
+ # CODE TRANSLATE
66
+ st.title(f"{selected}")
67
+ st.image('img/image1.jpg',)
68
+ st.markdown("veillez saisir vos **textes pour la traduction en selectionant une langue.** ")
69
+
70
+ headers = {"Authorization": TOKEN_API}
71
+
72
+ # Choose the translation language from Hugging Face
73
+ translation_languages = {
74
+ "French to English": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-en",
75
+ "English to French": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-fr",
76
+ "French to Spanish": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-es",
77
+ "Spanish to French": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-es-fr",
78
+ "French to Italian": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-it",
79
+ "Italian to French": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-it-fr",
80
+ "French to Russian": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-ru",
81
+ "Russian to French": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-ru-fr",
82
+ "English to Chinese": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-zh",
83
+ "Chinese to English": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-zh-en",
84
+ # Add more language pairs as needed
85
+ }
86
+
87
+ selected_translation = st.selectbox("", list(translation_languages.keys()))
88
+
89
+
90
+ # Load the translation pipeline
91
+ API_TRANSLATE=translation_languages[selected_translation]
92
+
93
+ # User input for translation
94
+ col4, col5 = st.columns(2)
95
+ translate_input = col4.text_area("", height=200, placeholder='Entrer le texte à traduire:')
96
+ #translate_input = st.text_area("Entrer le texte à traduire:", "")
97
+
98
+ # Display loading indicator
99
+ col6, col7 = st.columns(2)
100
+ if col6.button("Traduire"):
101
+ with st.spinner("traduction..."):
102
+ # Simulate translation delay for demonstration
103
+ time.sleep(2)
104
+ if translate_input:
105
+ # Perform translation
106
+ def main_translate(payload):
107
+ response = requests.post(API_TRANSLATE, headers=headers, json=payload)
108
+ return response.json()
109
+
110
+ output_translate = main_translate({
111
+ "inputs": translate_input
112
+ })
113
+
114
+ if not output_translate[0]["translation_text"]:
115
+ error_message = output_translate[0]["error"]
116
+ st.error(f"Le texte n'a pas pu être traduit: {error_message}")
117
+ else:
118
+ translated_text = output_translate[0]["translation_text"]
119
+ col5.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ translated_text +'''</p>''', unsafe_allow_html=True)
120
+ #st.success(f"Le texte tratuit: {translated_text}")
121
+
122
+ #st.write("**TRADUCTION** is : {}".format(output[0]["translation_text"]))
123
+
124
+
125
+ else:
126
+ st.warning("Veuillez saisir le texte à traduire.")
127
+
128
+
129
+ # Clear button to reset input and result
130
+ if col7.button("Nettoyer"):
131
+ translate_input = ""
132
+ col5.success("Le champ est nettoyé.")
133
+ st.empty() # Clear previous results if any
134
+
135
+ #END FOR TRANSLATE CODE
136
+ if selected == "Résumer":
137
+ #CODE SUMMARIZE
138
+ st.title(f"{selected}")
139
+ st.image('img/image3.jpg',)
140
+
141
+ st.markdown("ici vous faites le **Résumer** de vos **texte**.")
142
+
143
+ headers = {"Authorization": TOKEN_API}
144
+
145
+ # Load the
146
+ API_SUMMARY = "https://api-inference.huggingface.co/models/facebook/bart-large-cnn"
147
+
148
+ # User input for translation
149
+ summary_input = st.text_area("Entrer le texte à Résumer:", "")
150
+ if st.button("Résumer"):
151
+ with st.spinner("Résume..."):
152
+ # Simulate translation delay for demonstration
153
+ time.sleep(2)
154
+ if summary_input:
155
+ def main1(payload):
156
+ response = requests.post(API_SUMMARY, headers=headers, json=payload)
157
+ return response.json()
158
+
159
+ output_summary = main1({"inputs": summary_input})
160
+ summary_text = output_summary[0]["summary_text"]
161
+ st.success(f"Résumé: {summary_text}")
162
+ else:
163
+ st.warning("Veuillez saisir le texte à résumer.")
164
+ # Clear button to reset input and result
165
+ if st.button("Nettoyer"):
166
+ summary_input = ""
167
+ st.success("Le champ est nettoyé.")
168
+ st.empty() # Clear previous results if any
169
+
170
+
171
+ #END CODE SUMMARIZE
172
+ if selected == "Chatbot":
173
+ # CODE TRANSLATE
174
+ st.title(f"{selected}")
175
+ st.image('img/image3.jpg', caption='Veillez chatter ici en me posant vos questions')
176
+ #st.markdown("Cette partie vous offre la possibilité de me poser vos **questions**.")
177
+
178
+ headers = {"Authorization": TOKEN_API}
179
+
180
+ # Choose the translation language from Hugging Face
181
+ translation_models = {
182
+ "English": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-fr",
183
+ "French": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-en",
184
+ }
185
+ selected_translation = st.selectbox("Sélectionner une langue", list(translation_models.keys()))
186
+ # Load the
187
+ API_URL = "https://api-inference.huggingface.co/models/tiiuae/falcon-7b-instruct"
188
+
189
+ # User input for translation
190
+ user_input = st.text_area("veillez saisir une question :", "")
191
+
192
+ if (selected_translation=="French"):
193
+ API_URL_1 = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-en"
194
+ API_URL_2 = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-fr"
195
+ # Display loading indicator
196
+ if st.button("Recherche"):
197
+ with st.spinner("Rechercher..."):
198
+ # Simulate translation delay for demonstration
199
+ time.sleep(2)
200
+ if user_input:
201
+ def main(payload):
202
+ response = requests.post(API_URL_1, headers=headers, json=payload)
203
+ return response.json()
204
+
205
+ output = main({"inputs": user_input})
206
+ text2 = output[0]["translation_text"]
207
+
208
+ if text2:
209
+ def main1(payload):
210
+ response = requests.post(API_URL, headers=headers, json=payload)
211
+ return response.json()
212
+
213
+ output = main1({"inputs": text2})
214
+ text3 = output[0]["generated_text"]
215
+
216
+ if text3:
217
+ def main(payload):
218
+ response = requests.post(API_URL_2, headers=headers, json=payload)
219
+ return response.json()
220
+
221
+ output = main({"inputs": text3})
222
+ generated_text = output[0]["translation_text"]
223
+ st.success(f"Réponse: {generated_text}")
224
+ else:
225
+ st.warning("Veuillez saisir une question.")
226
+
227
+ else :
228
+ # Display loading indicator
229
+ if st.button("Research"):
230
+ with st.spinner("Researching..."):
231
+ # Simulate translation delay for demonstration
232
+ time.sleep(2)
233
+ if user_input:
234
+ # Perform translation
235
+ def main(payload):
236
+ response = requests.post(API_URL, headers=headers, json=payload)
237
+ return response.json()
238
+
239
+ output = main({
240
+ "inputs": user_input
241
+ })
242
+ generated_text = output[0]["generated_text"]
243
+ st.success(f"Response: {generated_text}")
244
+ else:
245
+ st.warning("Please enter a question.")
246
+
247
+ # Clear button to reset input and result
248
+ if st.button("Nettoyer"):
249
+ user_input = ""
250
+ st.success("Le champ est nettoyé.")
251
+ st.empty() # Clear previous results if any
252
+
253
+ # END CODE TRANSLATE
img/image1.jpg ADDED
img/image2.jpg ADDED
img/image3.jpg ADDED
img/image4.jpg ADDED
img/image5.jpg ADDED
img/logo2.png ADDED
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ requests
2
+ streamlit
3
+ streamlit_elements
4
+ streamlit_option_menu