zetaah commited on
Commit
147b544
1 Parent(s): 005caea

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -173
app.py DELETED
@@ -1,173 +0,0 @@
1
- import streamlit as st
2
- import json
3
- import google.generativeai as genai
4
- import re
5
- import random
6
- # --- Configuration ---
7
-
8
- # API Key (replace with your actual key)
9
- KEYs = ["AIzaSyBkTJsctYOkljL0tx-6Y8NwYCaSz-r0XmU" ,"AIzaSyDbzt8ZGVd3P15MMuIUh8wz1lzT5jRLWlc"]
10
-
11
- KEY = random.choice(KEYs)
12
- genai.configure(api_key=KEY)
13
-
14
- # Data File Path
15
- DATA_FILE = "data_tsa.json"
16
-
17
- # --- Helper Functions ---
18
-
19
- def count_word_occurrences(text, word='maroc'):
20
- """Counts occurrences of a word, including variations (e.g., plural, feminine)."""
21
- pattern1 = re.compile(r'\b' + re.escape(word) + r'(?:s?|aine)?\b', re.IGNORECASE)
22
- pattern2 = re.compile(r'\b' + re.escape(word) + r'(?:s?|ain)?\b', re.IGNORECASE)
23
- matches = pattern1.findall(text) + pattern2.findall(text)
24
- return len(matches)
25
-
26
- def load_and_process_data(file_path):
27
- """Loads data from JSON, handles different formats, and prepares for display."""
28
- with open(file_path, 'r') as f:
29
- data_js = json.load(f)
30
- try:
31
- data = data_js[:100]
32
- except:
33
- data = data_js
34
-
35
- # Determine data structure for counting articles
36
- if isinstance(data, dict):
37
- try:
38
- num_articles = sum(len(v) for v in data.values())
39
- except TypeError:
40
- num_articles = len(data)
41
- else:
42
- num_articles = len(data)
43
-
44
- # Limit data displayed to prevent UI overload (adjust as needed)
45
- data_str = str(data)
46
-
47
- return data_js,data_str, num_articles
48
-
49
- # --- Streamlit App ---
50
-
51
- # Title and Styling
52
- st.set_page_config(page_title="Algeria Propaganda Analysis", page_icon="🇲🇦")
53
- st.title("MaghrebInsights: Analyse de la Propagande Algérienne: Presse vs Maroc 🇲🇦")
54
- st.markdown(
55
- """
56
- <style>
57
- body {
58
- font-family: 'Helvetica', sans-serif;
59
- }
60
- .stButton>button {
61
- background-color: #4CAF50; /* Green */
62
- border: none;
63
- color: white;
64
- padding: 10px 20px;
65
- text-align: center;
66
- text-decoration: none;
67
- display: inline-block;
68
- font-size: 16px;
69
- margin: 4px 2px;
70
- cursor: pointer;
71
- }
72
- </style>
73
- """,
74
- unsafe_allow_html=True,
75
- )
76
-
77
- # Load and display data
78
- data_js,data_str, num_articles = load_and_process_data(DATA_FILE)
79
- print(num_articles,data_str)
80
- st.subheader("Extrait des Données:")
81
- st.json(data_js)
82
-
83
- # --- User Input Section ---
84
-
85
- st.sidebar.header("Paramètres du Rapport")
86
- word_to_analyze = st.sidebar.text_input("Mot-clé à analyser", value="maroc")
87
- st.sidebar.markdown("___") # Visual separator
88
-
89
- # Pre-calculate word occurrences
90
- occurrences = count_word_occurrences(data_str, word_to_analyze)
91
-
92
- # --- Report Generation ---
93
-
94
- # Craft dynamic prompt
95
- user_input = f"""
96
- - Incarnez un expert marocain en analyse de propagande, de stratégie militaire et de désinformation.
97
- - Analysez ces données extraites de la presse algérienne : {data_str}
98
- - Nombre total d'articles analysés: {num_articles}
99
- - Nombre d'occurrences du mot "{word_to_analyze}" dans les données : {occurrences}
100
-
101
- ### Objectif :
102
-
103
- Analyser les données fournies d'un point de vue politique et propagandiste afin de :
104
-
105
- ### Tâches :
106
-
107
- 1. **Résumé des données**:
108
- - Fournir un résumé des données avec toutes les informations pertinentes.
109
- - Dates, période, NOMBRE D'ARTICLES = {num_articles}
110
- - Nombre d'occurrences du Maroc dans les données : {occurrences}
111
-
112
- 2. **Analyse Critique**:
113
- - Mener une analyse critique des données, en se concentrant sur les interprétations et les implications nuancées.
114
-
115
- 3. **Analyse de la Propagande**:
116
- - Identifier et analyser les cas de techniques de propagande telles que la désinformation, la manipulation ou les messages persuasifs dans les données.
117
-
118
- 4. **Méthodologie**:
119
- - Décrire les méthodes et techniques analytiques employées. Expliquer comment les aspects politiques et de propagande ont été intégrés à l'analyse.
120
-
121
- 5. **Conclusions Clés**:
122
- - Présenter des observations perspicaces sur les implications politiques et les éléments de propagande trouvés dans les données. Utiliser des exemples précis et des preuves pour étayer les conclusions.
123
-
124
- 6. **Recommandations**:
125
- - Offrir des recommandations d'experts basées sur l'analyse. Proposer des stratégies pour contrer ou atténuer les effets de la propagande si nécessaire.
126
-
127
- 7. **Conclusion**:
128
- - Résumer les connaissances politiques et de propagande acquises grâce à l'analyse. Discuter des implications plus larges et des conséquences potentielles.
129
-
130
- ### Instructions pour l'IA :
131
- - **Expertise en Politique et Propagande**:
132
- - Analyser les données avec une compréhension approfondie de la dynamique politique et des techniques de propagande.
133
-
134
- - **Analyse Critique**:
135
- - Mener une analyse critique des données, en se concentrant sur les interprétations et les implications nuancées.
136
-
137
- - **Observations fondées sur des Preuves**:
138
- - Soutenir les conclusions avec des exemples concrets et des preuves issues des données.
139
-
140
- - **Considérations Éthiques**:
141
- - Tenir compte des implications éthiques liées à l'analyse politique et à la propagande.
142
-
143
- - **Lignes Directrices de Formatage**:
144
- - Formater le rapport de manière professionnelle, en utilisant des titres et sous-titres appropriés. Assurer la clarté et la lisibilité.
145
- ### Références :
146
- Veuillez vous assurer de citer chaque déclaration en utilisant les URL des données au format Markdown.
147
- """
148
-
149
- if st.sidebar.button("Générer le Rapport Complet"):
150
- with st.spinner("Analyse en cours ..."):
151
- # AI Model Configuration
152
- generation_config = {
153
- "temperature": 0.8, # Adjust for creativity (0.2 - more focused, 1.0 - more creative)
154
- "top_p": 0.95, # Controls the diversity of the generated text
155
- "top_k": 40, # Limits the next token choices to the top 'k' probabilities
156
- "max_output_tokens": 4096, # Adjust based on expected report length
157
- }
158
-
159
- model = genai.GenerativeModel(
160
- model_name="gemini-1.5-flash",
161
- generation_config=generation_config,
162
- )
163
-
164
- chat_session = model.start_chat(
165
- history=[{"role": "user", "parts": [user_input]}],
166
- )
167
-
168
- response = chat_session.send_message(user_input)
169
- st.markdown(response.text)
170
-
171
- # Footer
172
- st.markdown("---")
173
- st.markdown("Développé par [Ayoub Abraich](https://ayoubabraich.netlify.app/)")