GaetanoParente commited on
Commit
3a24a7b
·
1 Parent(s): 5d60bcd

modificato modello sentiment e refactor interfaccia

Browse files
README.md CHANGED
@@ -22,23 +22,35 @@ La piattaforma è costruita con un'architettura ibrida che integra modelli **Ten
22
 
23
  ### 1. 🧩 BPO Intelligent Dispatcher (NextGen)
24
  Un sistema avanzato per l'analisi dei ticket di assistenza clienti (Business Process Outsourcing).
25
- * **Tecnologia:** DistilBERT (Fine-tuned) + spaCy (NER) + Custom Logic.
26
  * **Funzionalità:**
27
- * **Intent Classification:** Riconosce automaticamente se il ticket riguarda *Amministrazione*, *Supporto Tecnico* o *Rischio Churn*.
28
- * **Smart Urgency:** Calcola la priorità basandosi sulla gravità del problema e sul tono del cliente.
29
- * **Hybrid NER:** Estrae dati strutturati (Codici Cliente, Fatture, Email) usando un motore ibrido AI + Regex Contestuale.
30
- * **Visualizzazione:** Rendering HTML dinamico delle entità estratte.
31
 
32
  ### 2. 🩻 Healthcare Diagnostics (Computer Vision)
33
- Moduli verticali per l'analisi di immagini mediche.
34
- * **Chest X-Ray:** Classificazione di radiografie toraciche per individuare: *Polmonite*, *Tubercolosi* o *No Polmonite*, *No Tubercolosi*.
35
- * **Diabetic Retinopathy:** Analisi del fondo oculare per rilevare segni di retinopatia diabetica.
36
-
37
- ### 3. 📰 Legacy NLP Stack
38
- Moduli classici di analisi testuale.
39
- * **Topic Classification:** Classificazione multiclasse su 20 categorie di news (Dataset 20 Newsgroups).
40
- * **Sentiment Analysis:** Analisi binaria (Positivo/Negativo) del tono del testo.
41
-
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  ---
43
 
44
  ## 🛠️ Installazione
 
22
 
23
  ### 1. 🧩 BPO Intelligent Dispatcher (NextGen)
24
  Un sistema avanzato per l'analisi dei ticket di assistenza clienti (Business Process Outsourcing).
25
+ * **Tecnologia:** DistilBERT (Fine-tuned) + spaCy (NER) + Sentiment BPO Engine.
26
  * **Funzionalità:**
27
+ * **Intent Classification:** Riconosce l'intento (es. Amministrazione, Supporto Tecnico, Churn) con un modello Transformer.
28
+ * **Smart Urgency:** Calcola la priorità incrociando la gravità del problema (Keywords), l'Intento e il Sentiment Score.
29
+ * **Hybrid NER:** Estrae dati strutturati (Codici Cliente, Errori, Email) usando regex contestuali e NLP.
 
30
 
31
  ### 2. 🩻 Healthcare Diagnostics (Computer Vision)
32
+ Suite di supporto diagnostico basata su Convolutional Neural Networks (CNN).
33
+ * **Chest X-Ray Analyzer:**
34
+ * **Obiettivo:** Screening rapido di patologie polmonari infettive
35
+ * **Classi:** Il modello discrimina tra 4 stati: Rischio Polmonite, Rischio Tubercolosi, Negativo Polmonite, Negativo Tubercolosi.
36
+ * **Architettura:** CNN custom addestrata su dataset radiografici pubblici (resize 224x224).
37
+ * **Use Case:** Triage automatizzato per dare priorità ai casi sospetti in lista d'attesa.
38
+ * **Diabetic Retinopathy Screening:**
39
+ * **Obiettivo:** Analisi automatizzata del fondo oculare (Fundus Image) per individuare microaneurismi o emorragie tipiche della retinopatia.
40
+ * **Output:** Fornisce una "Second Opinion" strutturata in due parti: Diagnosi Clinica (Presenza/Assenza) e Livello di Confidenza (%).
41
+ * **Architettura:** Binary Classification CNN con preprocessing dell'immagine (Normalization & Resizing).
42
+ * **Use Case:** Screening di massa preventivo per pazienti diabetici asintomatici.
43
+
44
+ ### 3. 📢 NLP & Text Analysis
45
+ Moduli di analisi semantica per l'automazione dei processi documentali.
46
+ * **Smart Content Tagger (News Classification):**
47
+ * **Obiettivo:** Categorizzazione automatica di flussi di notizie per redazioni e archivi digitali.
48
+ * **Classi:** Il modello distingue tra Economia, Politica, Scienza & Tecnica, Sport, Storia.
49
+ * **Architettura:** Rete Neurale ricorrente (Input Sequence Padding a 200 token) per catturare il contesto semantico oltre la semplice keyword density.
50
+ * **Sentiment Analysis (BPO Edition):**
51
+ * **Modello:** Rete neurale ottimizzata su dataset "Small Data" (1.2k esempi reali Helpdesk).
52
+ * **Caratteristiche:** Calibrato per distinguere lamentele reali da falsi positivi (gestione avanzata di "router", "fattura" e negazioni).
53
+ * **Integrazione:** Fornisce il punteggio emotivo al modulo BPO Dispatcher.
54
  ---
55
 
56
  ## 🛠️ Installazione
app.py CHANGED
@@ -1,5 +1,6 @@
1
  import gradio as gr
2
  import cv2
 
3
  from modules.binary_classification import binary_classification as binary
4
  from modules.image_classification import image_classification as image
5
  from modules.multilabel_classification import multi_classification as multi
@@ -14,94 +15,12 @@ theme = gr.themes.Soft(
14
  ).set(
15
  block_title_text_weight="700",
16
  block_shadow="*shadow_drop_lg",
17
- button_shadow="*shadow_drop_lg",
18
  block_label_background_fill="*primary_100",
19
  )
20
 
21
- custom_css = """
22
- /* --- 1. HEADER & LOGO --- */
23
- .header-row {
24
- display: flex !important;
25
- align-items: flex-end !important;
26
- gap: 20px !important;
27
- margin-bottom: 30px !important;
28
- padding-bottom: 20px;
29
- border-bottom: 1px solid #e2e8f0;
30
- }
31
- .h4-margin{
32
- margin-left: 5px;
33
- }
34
- .logo-container img { margin-bottom: 4px !important; object-fit: contain; }
35
- .header-text-col h1 {
36
- font-family: 'Inter', sans-serif !important;
37
- font-weight: 900 !important;
38
- font-size: 2.2em !important;
39
- background: linear-gradient(90deg, #D65DB1 0%, #8B5CF6 50%, #F43F5E 100%);
40
- -webkit-background-clip: text;
41
- -webkit-text-fill-color: transparent;
42
- text-align: left !important;
43
- margin-bottom: -2px !important;
44
- padding-bottom: 0 !important;
45
- line-height: 1.0 !important;
46
- }
47
- .header-text-col .subheader {
48
- text-align: left !important; color: #64748b; font-size: 1.1em; font-weight: 500;
49
- margin-top: 0 !important; padding-top: 0 !important;
50
- }
51
-
52
- /* --- 2. CUSTOM TABS STYLE (DESKTOP) --- */
53
- .tabs > .tab-nav { border-bottom: none !important; gap: 8px !important; margin-bottom: 15px !important; }
54
- .tabs > .tab-nav > button {
55
- border: 1px solid #e5e7eb !important; border-radius: 10px !important;
56
- background-color: white; color: #475569 !important; font-weight: 600 !important;
57
- padding: 6px 16px !important; transition: all 0.2s;
58
- }
59
- .tabs > .tab-nav > button:hover { background-color: #f1f5f9 !important; transform: translateY(-1px); }
60
- .tabs > .tab-nav > button.selected {
61
- background: linear-gradient(135deg, #8B5CF6 0%, #D65DB1 100%) !important;
62
- color: white !important; border: 1px solid transparent !important;
63
- box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3) !important;
64
- }
65
-
66
- /* --- 3. COMPONENTS --- */
67
- button.primary {
68
- background: linear-gradient(135deg, #8B5CF6 0%, #D65DB1 100%) !important;
69
- border: none !important; color: white !important; transition: filter 0.2s;
70
- }
71
- button.primary:hover { filter: brightness(1.1); box-shadow: 0 4px 15px rgba(139, 92, 246, 0.4); }
72
-
73
- .fixed-height { height: 380px !important; overflow: hidden !important; }
74
- .fixed-height button, .fixed-height .image-container, .fixed-height .upload-container {
75
- height: 100% !important; max_height: 100% !important; min_height: 100% !important;
76
- }
77
- .fixed-height img { object-fit: contain !important; max_height: 100% !important; }
78
-
79
- /* Stile per la Model Card nel tab BPO */
80
- .model-card {
81
- background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 15px;
82
- font-size: 0.9em; color: #475569; margin-top: 10px;
83
- }
84
-
85
- .model-card strong{
86
- color: #475569 !important
87
- }
88
-
89
- /* --- 4. MOBILE RESPONSIVE --- */
90
- @media (max-width: 768px) {
91
- .header-row { flex-direction: column !important; align-items: center !important; text-align: center !important; gap: 10px !important; }
92
- .header-text-col h1 { text-align: center !important; font-size: 1.8em !important; }
93
- .header-text-col .subheader { text-align: center !important; }
94
- .responsive-row { flex-direction: column !important; display: flex !important; }
95
- .responsive-row > * { width: 100% !important; min-width: 100% !important; margin-bottom: 15px !important; }
96
-
97
- .tabs > .tab-nav { flex-wrap: wrap !important; justify-content: center !important; gap: 6px !important; }
98
- .tabs > .tab-nav > button {
99
- flex-grow: 1 !important; text-align: center !important; font-size: 0.85rem !important;
100
- padding: 8px 10px !important; margin: 0 !important; width: auto !important; min-width: 45% !important;
101
- }
102
- }
103
- footer {visibility: hidden}
104
- """
105
 
106
  def binary_classification(text):
107
  if text.strip(): return binary(text)
@@ -126,60 +45,17 @@ def retina_classification(retina):
126
  if retina is not None: return retina_detector(retina)
127
  raise gr.Error('L\'immagine è obbligatoria!')
128
 
129
- def render_ner_html(entities):
130
- """
131
- Trasforma la lista [('testo', 'LABEL'), ('testo', None)] in HTML puro.
132
- """
133
- # Mappa colori HEX (più belli e moderni)
134
- colors = {
135
- "CODICE CLIENTE": "#3b82f6", # Blue 500
136
- "N. FATTURA": "#f97316", # Orange 500
137
- "COD. FORNITURA": "#d946ef", # Fuchsia 500
138
- "EMAIL": "#ef4444", # Red 500
139
- "TELEFONO": "#06b6d4", # Cyan 500
140
- "PERSONA": "#22c55e", # Green 500
141
- "AZIENDA": "#8b5cf6", # Violet 500
142
- "LUOGO": "#64748b", # Slate 500
143
- "POSSIBILE ID": "#a8a29e" # Stone 400
144
- }
145
-
146
- html = "<div style='line-height: 2.2; font-family: sans-serif; font-size: 16px; color: #334155; background-color: #1e293b'>"
147
-
148
- for text, label in entities:
149
- if label:
150
- # Recupera colore o usa grigio di default
151
- c = colors.get(label, "#1e293b")
152
-
153
- # Crea lo "Chip" (Pillola colorata)
154
- # - bg-color con opacità (c + '20')
155
- # - border solido
156
- # - label piccola in grassetto accanto al testo
157
- html += f"""
158
- <span style='background-color: {c}20; border: 1px solid {c}; border-radius: 6px; padding: 2px 6px; margin: 0 2px; white-space: nowrap;'>
159
- <span style='font-size: 0.75em; font-weight: 700; color: {c}; text-transform: uppercase;'>{label}</span>
160
- <span style='font-weight: 600; color: white; margin-left: 6px;'>{text}</span>
161
- </span>
162
- """
163
- else:
164
- # Testo normale
165
- html += text.replace("\n", "<br>") # Gestisce a capo
166
-
167
- html += "</div>"
168
- return html
169
-
170
  def bpo_dispatch_logic(text):
171
  """
172
  Funzione Ponte: Chiama il modulo AI e decide l'azione di business.
173
  Restituisce un aggiornamento COMPLETO del componente NER per pulire la grafica.
174
  """
175
  try:
176
- # 1. Chiamata al modello reale
177
  intent, urgency, entities = predict_bpo_ticket(text)
178
 
179
  if intent is None:
180
  raise gr.Error("Errore nel modello BPO. Verifica i log.")
181
 
182
- # 2. Logica di Business
183
  top_intent = max(intent, key=intent.get)
184
 
185
  action = "Inoltro generico"
@@ -190,130 +66,285 @@ def bpo_dispatch_logic(text):
190
  elif top_intent == "Amministrazione / Billing":
191
  action = "💰 Verifica insoluti su SAP + Inoltro Backoffice Amm.vo"
192
 
193
- html_output = render_ner_html(entities)
194
 
195
  return intent, urgency, action, html_output
196
 
197
  except Exception as e:
198
  raise gr.Error(f"Errore nell'analisi: {str(e)}")
199
 
200
- with gr.Blocks(theme=theme, css=custom_css, title="NGT AI Platform") as demo:
201
-
202
- # --- HEADER ---
203
- with gr.Row(elem_classes="header-row"):
204
- with gr.Column(scale=0, min_width=80, elem_classes="logo-container"):
205
- gr.Image(value="data/icon.png", show_label=False, show_download_button=False, show_share_button=False, container=False, show_fullscreen_button=False, interactive=False, height=80, width=80)
206
- with gr.Column(scale=1, elem_classes="header-text-col"):
207
- gr.Markdown("""<h1>AI Platform</h1><div class='subheader'>Advanced Machine Learning Solutions</div>""")
208
-
209
- # --- TAB 1: BPO INTELLIGENT DISPATCHER ---
210
- with gr.Tab("🧩 BPO Dispatcher"):
211
- gr.Markdown("### Intelligent Ticket Routing & NER")
212
- gr.Markdown("Sistema proprietario per l'analisi automatica dei ticket di assistenza. Il modello identifica l'intento, l'urgenza e i dati sensibili del cliente.")
213
-
214
- with gr.Row(elem_classes="responsive-row"):
215
- # INPUT
216
- with gr.Column(scale=1):
217
- bpo_input = gr.Textbox(lines=8, placeholder="Incolla qui il contenuto della mail o del ticket...", label="Contenuto Ticket / Email")
218
- analyze_btn_bpo = gr.Button("⚡ Analizza Richiesta", variant="primary")
219
- gr.HTML("""
220
- <div class='model-card'>
221
- <strong>🛠️ Model Architecture:</strong> NGT-BERT-Custom (DistilBERT)<br>
222
- <strong>📚 Training Data:</strong> Synthetic BPO Dataset (2025)<br>
223
- <strong>🎯 Tasks:</strong> Intent Classification (Multi-class), Entity Extraction (NER)
224
- </div>
225
- """)
226
 
227
- # OUTPUT
228
- with gr.Column(scale=1):
229
- with gr.Group():
230
- gr.Markdown("#### 📋 Analisi Processata", elem_classes="h4-margin")
231
- bpo_intent_output = gr.Label(num_top_classes=3, label="Intento Rilevato")
232
- with gr.Row():
233
- bpo_urgency_output = gr.Textbox(label="Livello Urgenza", scale=1)
234
- bpo_action_output = gr.Textbox(label="Azione Consigliata (Auto)", scale=1)
235
-
236
- gr.Markdown("#### 🔍 Dati Estratti (NER)", elem_classes="h4-margin")
237
- bpo_ner_output = gr.HTML(label="Visualizzazione Entità")
238
 
239
- gr.Examples(
240
- examples=[
241
- ["Buongiorno, vi scrivo perché la fattura n. 99283 del mese scorso è sbagliata. Non ho consumato così tanto. Il mio codice cliente è 4599201. Attendo rettifica urgente."],
242
- ["Salve, il servizio non funziona da ieri. Mi dà errore 504 sul router. Risolvete subito per favore!"],
243
- ["Vorrei disdire il contratto con decorrenza immediata se non mi risolvete il problema."]
244
- ],
245
- inputs=bpo_input
 
246
  )
247
 
248
- analyze_btn_bpo.click(
249
- bpo_dispatch_logic,
250
- inputs=bpo_input,
251
- outputs=[bpo_intent_output, bpo_urgency_output, bpo_action_output, bpo_ner_output]
252
- )
 
 
 
 
 
 
 
 
 
253
 
254
- # --- TAB 2: Chest X-Ray ---
255
- with gr.Tab("🩻 Chest Diagnosis"):
256
- gr.Markdown("### 📥 Diagnostica Polmonare")
257
- # INPUT
258
- with gr.Row(elem_classes="responsive-row"):
259
- with gr.Column(scale=1):
260
- with gr.Accordion("📂 1. Seleziona da Gallery", open=True):
261
- file_selected = gr.FileExplorer(root_dir="data/gallery/xray", file_count='single', elem_classes=["fixed-height"])
262
- with gr.Column(scale=1):
263
- image_input = gr.Image(type="numpy", label="2. Visualizzazione", elem_classes=["fixed-height"])
264
- # OUTPUT
265
- with gr.Row():
266
- with gr.Column():
267
- analyze_btn_chest = gr.Button("🔍 Avvia Diagnosi Clinica", variant="primary", size="lg")
268
- image_output = gr.Label(num_top_classes=2, label="Risultato Predittivo")
269
- file_selected.change(file_change, inputs=file_selected, outputs=image_input)
270
- analyze_btn_chest.click(image_classification, inputs=image_input, outputs=image_output)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
 
272
- # --- TAB 3: Diabetic Retinopathy ---
273
- with gr.Tab("👁️ Diabetic Retinopathy"):
274
- gr.Markdown("### 📥 Analisi Retinica")
275
- # INPUT
276
- with gr.Row(elem_classes="responsive-row"):
277
- with gr.Column(scale=1):
278
- with gr.Accordion("📂 1. Seleziona da Gallery", open=True):
279
- file_selected_dr = gr.FileExplorer(root_dir="data/gallery/retinopaty", file_count='single', elem_classes=["fixed-height"])
280
- with gr.Column(scale=1):
281
- image_input_dr = gr.Image(type="numpy", label="2. Visualizzazione", elem_classes=["fixed-height"])
282
- # OUTPUT
283
- with gr.Row():
284
- with gr.Column():
285
- analyze_btn_dr = gr.Button("🔍 Analizza Retina", variant="primary", size="lg")
286
- with gr.Group():
287
- output_dr_label = gr.Label(label="Diagnosi Principale")
288
- output_dr_prob = gr.Label(label="Probabilità Patologia")
289
- file_selected_dr.change(file_change, inputs=file_selected_dr, outputs=image_input_dr)
290
- analyze_btn_dr.click(retina_classification, inputs=image_input_dr, outputs=[output_dr_label, output_dr_prob])
291
 
292
- # --- TAB 4: Review Classification ---
293
- with gr.Tab("📰 Topic Classification"):
294
- gr.Markdown("### Analisi Argomenti del Testo")
295
- with gr.Row(elem_classes="responsive-row"):
296
- # INPUT
297
- with gr.Column():
298
- multi_input = gr.Textbox(lines=5, placeholder="Incolla qui il testo...", label="Input")
299
- analyze_btn_multi = gr.Button("🏷️ Classifica", variant="primary")
300
- # OUTPUT
301
- with gr.Column():
302
- multi_output = gr.Label(num_top_classes=5, label="Top Categorie")
303
- analyze_btn_multi.click(multi_classification, inputs=multi_input, outputs=multi_output)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
 
305
- # --- TAB 5: Sentiment Analysis ---
306
- with gr.Tab("😊 Sentiment Analysis"):
307
- gr.Markdown("### Analisi del Sentiment")
308
- with gr.Row(elem_classes="responsive-row"):
309
- # INPUT
310
- with gr.Column():
311
- binary_input = gr.Textbox(lines=3, placeholder="Scrivi una recensione...", label="Input")
312
- analyze_btn_bin = gr.Button("⚖️ Analizza", variant="primary")
313
- # OUTPUT
314
- with gr.Column():
315
- binary_output = gr.Label(label="Sentiment Score")
316
- analyze_btn_bin.click(binary_classification, inputs=binary_input, outputs=binary_output)
317
 
318
  if __name__ == "__main__":
319
- demo.launch(server_name="0.0.0.0", server_port=7860, allowed_paths=["data"])
 
 
 
 
 
1
  import gradio as gr
2
  import cv2
3
+ import modules.utilities.utils as utils
4
  from modules.binary_classification import binary_classification as binary
5
  from modules.image_classification import image_classification as image
6
  from modules.multilabel_classification import multi_classification as multi
 
15
  ).set(
16
  block_title_text_weight="700",
17
  block_shadow="*shadow_drop_lg",
 
18
  block_label_background_fill="*primary_100",
19
  )
20
 
21
+ PATH_ROOT = "./data/gallery"
22
+ PATH_RETINA = "./data/gallery/retinopaty"
23
+ PATH_XRAY = "./data/gallery/xray"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  def binary_classification(text):
26
  if text.strip(): return binary(text)
 
45
  if retina is not None: return retina_detector(retina)
46
  raise gr.Error('L\'immagine è obbligatoria!')
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  def bpo_dispatch_logic(text):
49
  """
50
  Funzione Ponte: Chiama il modulo AI e decide l'azione di business.
51
  Restituisce un aggiornamento COMPLETO del componente NER per pulire la grafica.
52
  """
53
  try:
 
54
  intent, urgency, entities = predict_bpo_ticket(text)
55
 
56
  if intent is None:
57
  raise gr.Error("Errore nel modello BPO. Verifica i log.")
58
 
 
59
  top_intent = max(intent, key=intent.get)
60
 
61
  action = "Inoltro generico"
 
66
  elif top_intent == "Amministrazione / Billing":
67
  action = "💰 Verifica insoluti su SAP + Inoltro Backoffice Amm.vo"
68
 
69
+ html_output = utils.render_ner_html(entities)
70
 
71
  return intent, urgency, action, html_output
72
 
73
  except Exception as e:
74
  raise gr.Error(f"Errore nell'analisi: {str(e)}")
75
 
76
+ with gr.Blocks(title="NGT AI Platform", theme=theme, css_paths="style.css") as demo:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
+ # --- SIDEBAR (FILE EXPLORER) ---
79
+ with gr.Sidebar(position="left", width=300, visible=False) as main_sidebar:
80
+ gr.Markdown("### 📂 Risorse Demo")
81
+ gr.Markdown("Seleziona i file di esempio:")
 
 
 
 
 
 
 
82
 
83
+ sidebar_explorer = gr.FileExplorer(
84
+ root_dir=PATH_ROOT,
85
+ glob="**/*",
86
+ ignore_glob="*.h5,*.json,*.py,*.pyc",
87
+ file_count="single",
88
+ label="Archivio File",
89
+ height=400,
90
+ interactive=True
91
  )
92
 
93
+ gr.Markdown("---")
94
+ gr.Markdown("**Info Sistema:**")
95
+ gr.Markdown("🟢 Server: Online")
96
+ gr.Markdown("🟣 GPU: N/A (CPU Mode)")
97
+
98
+ # --- MAIN CONTENT ---
99
+ with gr.Column():
100
+
101
+ # --- HEADER ---
102
+ with gr.Row(elem_classes="header-row"):
103
+ with gr.Column(scale=0, min_width=80, elem_classes="logo-container"):
104
+ gr.Image(value="data/icon.png", show_label=False, show_download_button=False, show_share_button=False, container=False, show_fullscreen_button=False, interactive=False, height=80, width=80)
105
+ with gr.Column(scale=1, elem_classes="header-text-col"):
106
+ gr.Markdown("""<h1>AI Platform</h1><div class='subheader'>Advanced Machine Learning Solutions</div>""")
107
 
108
+ # --- TAB 1: BPO INTELLIGENT DISPATCHER ---
109
+ with gr.Tab("🧩 BPO Dispatcher") as tab_bpo:
110
+ gr.Markdown("### Intelligent Ticket Routing & NER")
111
+ gr.Markdown("Sistema proprietario per l'analisi automatica dei ticket di assistenza. Il modello identifica l'intento, l'urgenza e i dati sensibili del cliente.")
112
+
113
+ with gr.Row(elem_classes="responsive-row"):
114
+ # INPUT
115
+ with gr.Column(scale=1):
116
+ bpo_input = gr.Textbox(lines=8, placeholder="Incolla qui il contenuto della mail o del ticket...", label="Contenuto Ticket / Email")
117
+ analyze_btn_bpo = gr.Button(" Analizza Richiesta", variant="primary")
118
+ gr.HTML("""
119
+ <div class='model-card'>
120
+ <strong>🛠️ Model Architecture:</strong> NGT-BERT-Custom (DistilBERT)<br>
121
+ <strong>📚 Training Data:</strong> Synthetic BPO Dataset (2025)<br>
122
+ <strong>🎯 Tasks:</strong> Intent Classification (Multi-class), Entity Extraction (NER)
123
+ </div>
124
+ """)
125
+
126
+ # OUTPUT
127
+ with gr.Column(scale=1):
128
+ with gr.Group():
129
+ gr.Markdown("#### 📋 Analisi Processata", elem_classes="h4-margin")
130
+ bpo_intent_output = gr.Label(num_top_classes=3, label="Intento Rilevato")
131
+ with gr.Row():
132
+ bpo_urgency_output = gr.Textbox(label="Livello Urgenza", scale=1)
133
+ bpo_action_output = gr.Textbox(label="Azione Consigliata (Auto)", scale=1)
134
+
135
+ gr.Markdown("#### 🔍 Dati Estratti (NER)", elem_classes="h4-margin")
136
+ bpo_ner_output = gr.HTML(label="Visualizzazione Entità")
137
+
138
+ gr.Examples(
139
+ examples=[
140
+ ["Buongiorno, vi scrivo perché la fattura n. 99283 del mese scorso è sbagliata. Non ho consumato così tanto. Il mio codice cliente è 4599201. Attendo rettifica urgente."],
141
+ ["Salve, il servizio non funziona da ieri. Mi dà errore 504 sul router. Risolvete subito per favore!"],
142
+ ["Vorrei disdire il contratto con decorrenza immediata se non mi risolvete il problema."]
143
+ ],
144
+ inputs=bpo_input
145
+ )
146
+
147
+ analyze_btn_bpo.click(
148
+ bpo_dispatch_logic,
149
+ inputs=bpo_input,
150
+ outputs=[bpo_intent_output, bpo_urgency_output, bpo_action_output, bpo_ner_output]
151
+ )
152
+
153
+ # --- TAB 2: Chest X-Ray Diagnostics ---
154
+ with gr.Tab("🩻 Chest X-Ray Diagnostics") as tab_xray:
155
+
156
+ # 1. DISCLAIMER MEDICO (Fondamentale)
157
+ gr.Markdown("""
158
+ # 🩻 Analisi Radiografica Toracica (Supporto Decisionale)
159
+
160
+ **DISCLAIMER:** Questo modulo è un prototipo di ricerca AI. **NON sostituisce il parere di un medico.**
161
+ Il sistema è addestrato per identificare pattern visivi associati a:
162
+ * **Polmonite** (Pneumonia)
163
+ * **Tubercolosi** (Tuberculosis)
164
+
165
+ *Caricare solo immagini radiografiche frontali (Chest X-Ray) o utilizzare gli esempi recuperabili nella sidebar laterale.*
166
+ """)
167
+
168
+ with gr.Row():
169
+ # COLONNA INPUT
170
+ with gr.Column(scale=1):
171
+ image_input = gr.Image(type="numpy", label="Carica Radiografia", height=400)
172
+ analyze_btn_img = gr.Button("🏥 Avvia Diagnosi AI", variant="primary")
173
+
174
+ # COLONNA OUTPUT
175
+ with gr.Column(scale=1):
176
+ with gr.Group():
177
+ gr.Markdown("#### 📋 Referto AI", elem_classes="h4-margin")
178
+ output_label = gr.Label(num_top_classes=4, label="Probabilità Patologia")
179
+
180
+ analyze_btn_img.click(image, inputs=image_input, outputs=output_label)
181
+
182
+ # --- TAB 3: Diabetic Retinopathy ---
183
+ with gr.Tab("👁️ Diabetic Retinopathy") as tab_retina:
184
+ gr.Markdown("""
185
+ # 👁️ Screening Retinopatia Diabetica
186
+ **DISCLAIMER:** Questo modulo è un prototipo di ricerca AI. **NON sostituisce il parere di un medico.** Sistema di supporto decisionale. Analizza scansioni del fondo oculare.
187
+
188
+ *Caricare solo immagini di retinografie digitali o utilizzare gli esempi recuperabili nella sidebar laterale.*
189
+ """)
190
+
191
+ with gr.Row():
192
+ # COLONNA INPUT
193
+ with gr.Column(scale=1):
194
+ image_input_dr = gr.Image(
195
+ type="numpy",
196
+ label="Carica Scansione Retinica",
197
+ height=400,
198
+ sources=["upload", "clipboard"]
199
+ )
200
+ analyze_btn_dr = gr.Button("🏥 Analisi Fondo Oculare", variant="primary")
201
+
202
+ # COLONNA OUTPUT
203
+ with gr.Column(scale=1):
204
+ with gr.Group():
205
+ gr.Markdown("### 📋 Esito Screening", elem_classes="h4-margin")
206
+ # Output 1: La Diagnosi (Testo)
207
+ output_dr_diagnosis = gr.Label(label="Diagnosi AI")
208
+ # Output 2: La Percentuale (Testo/Numero)
209
+ output_dr_prob = gr.Label(label="Livello di Confidenza (Rischio)")
210
+
211
+ analyze_btn_dr.click(
212
+ retina_detector,
213
+ inputs=image_input_dr,
214
+ outputs=[output_dr_diagnosis, output_dr_prob]
215
+ )
216
+
217
+ # --- TAB 4: News Classification (AI Editor) ---
218
+ with gr.Tab("📰 Smart Content Tagger") as tab_news:
219
+
220
+ # 1. HEADER & CONTESTO
221
+ gr.Markdown("""
222
+ # 🏷️ Classificazione Editoriale Automatica
223
+
224
+ Questo modulo simula un **assistente editoriale AI**. Analizza il testo di un articolo o di un lancio di agenzia e suggerisce la categoria tematica corretta per l'archiviazione.
225
+
226
+ * **Categorie Supportate:** `Economia`, `Politica`, `Scienza & Tecnica`, `Sport`, `Storia`.
227
+ * **Tecnologia:** Deep Learning su sequenze di testo (Embedding layer).
228
+ """)
229
+
230
+ with gr.Row():
231
+ # COLONNA INPUT (L'Articolo)
232
+ with gr.Column(scale=3):
233
+ multi_input = gr.Textbox(
234
+ label="Testo dell'articolo",
235
+ placeholder="Incolla qui il titolo o il corpo del testo (es. news ANSA, Reuters...)",
236
+ lines=6
237
+ )
238
+
239
+ # Esempi calibrati sulle tue 5 classi
240
+ gr.Examples(
241
+ examples=[
242
+ ["L'inflazione nell'area euro scende al 2.4%, la BCE valuta il taglio dei tassi di interesse."], # Economia
243
+ ["Il Parlamento ha approvato il nuovo decreto legge con 200 voti favorevoli. Il Premier esprime soddisfazione."], # Politica
244
+ ["La sonda spaziale ha inviato nuove immagini ad alta risoluzione della superficie di Marte, rivelando tracce di antichi fiumi."], # Scienza
245
+ ["Finale incredibile allo stadio: la squadra di casa ribalta il risultato al 90° minuto e vola in testa alla classifica."], # Sport
246
+ ["Durante gli scavi a Pompei sono emersi nuovi affreschi risalenti al I secolo d.C. perfettamente conservati."] # Storia
247
+ ],
248
+ inputs=multi_input,
249
+ label="Prova questi lanci d'agenzia:"
250
+ )
251
+
252
+ analyze_btn_multi = gr.Button("🏷️ Classifica Articolo", variant="primary")
253
 
254
+ # COLONNA OUTPUT (I Tag)
255
+ with gr.Column(scale=2):
256
+ with gr.Group():
257
+ gr.Markdown("### 📊 Categorie Rilevate", elem_classes="h4-margin")
258
+ # Usiamo un Label con top_classes=5 per vedere la distribuzione completa
259
+ multi_output = gr.Label(num_top_classes=5, label="Confidenza del Modello")
260
+
261
+ analyze_btn_multi.click(multi, inputs=multi_input, outputs=multi_output)
 
 
 
 
 
 
 
 
 
 
 
262
 
263
+ # --- TAB 5: Sentiment Analysis (BPO) ---
264
+ with gr.Tab("📢 Sentiment Analysis (BPO)") as tab_sentiment:
265
+
266
+ # 1. HEADER E GUIDA UTENTE
267
+ gr.Markdown("""
268
+ # 😠/😍 Analizzatore di Sentiment (Dominio Helpdesk)
269
+
270
+ **ATTENZIONE:** Questo modello è **altamente specializzato** nel dominio dell'Assistenza Clienti (Telco/Energy).
271
+
272
+ * ✅ **Usa questo modulo per:** Ticket di guasti, lamentele amministrative, feedback su operatori, richieste di disdetta.
273
+ * **NON usare questo modulo per:** Frasi generiche ("Il cielo è blu"), recensioni di film, o linguaggio comune non tecnico.
274
+
275
+ _Il modello potrebbe interpretare frasi generiche positive come negative se non contengono parole chiave del suo vocabolario specifico._
276
+ """)
277
+
278
+ # 2. DETTAGLI TECNICI (Nascosti in un Accordion per pulizia)
279
+ with gr.Accordion("ℹ️ Come funziona questo modello?", open=False):
280
+ gr.Markdown("""
281
+ Questo sistema utilizza una rete neurale leggera addestrata su un dataset proprietario di **1.200 interazioni reali** cliente-operatore.
282
+
283
+ * **Preprocessing:** Lemmatizzazione Spacy + Rimozione Stopwords (con Whitelist per le negazioni).
284
+ * **Architettura:** Dense Neural Network con Dropout e L2 Regularization.
285
+ * **Focus:** È calibrato per rilevare l'urgenza nascosta anche in frasi apparentemente calme.
286
+ """)
287
+
288
+ # 3. INTERFACCIA
289
+ with gr.Row():
290
+ with gr.Column():
291
+ # Input Text
292
+ sentiment_input = gr.Textbox(
293
+ label="Inserisci il testo del ticket o della mail",
294
+ placeholder="Es: Non funziona internet e nessuno mi risponde...",
295
+ lines=3
296
+ )
297
+
298
+ # ESEMPI CLICCABILI (Fondamentali per guidare l'utente!)
299
+ gr.Examples(
300
+ examples=[
301
+ ["L'assistenza ricevuta è stata pessima, sono deluso."],
302
+ ["Il router funziona benissimo, grazie per la velocità."],
303
+ ["Non ho ancora ricevuto la fattura di gennaio."],
304
+ ["Sono due giorni che ho la linea ferma, è inaccettabile!"],
305
+ ["L'operatore Marco è stato gentilissimo e ha risolto tutto."]
306
+ ],
307
+ inputs=sentiment_input,
308
+ label="Prova questi esempi BPO:"
309
+ )
310
+
311
+ sentiment_btn = gr.Button("Analizza Sentiment", variant="primary")
312
+
313
+ with gr.Column():
314
+ # Output Label (Percentuali)
315
+ sentiment_output = gr.Label(num_top_classes=2, label="Risultato Analisi")
316
+
317
+ # 4. COLLEGAMENTO FUNZIONE
318
+ sentiment_btn.click(
319
+ fn=binary,
320
+ inputs=sentiment_input,
321
+ outputs=sentiment_output
322
+ )
323
+
324
+ sidebar_explorer.change(
325
+ fn=utils.global_file_loader,
326
+ inputs=sidebar_explorer,
327
+ outputs=[bpo_input, image_input, image_input_dr, multi_input, sentiment_input]
328
+ )
329
+
330
+ ui_outputs = [main_sidebar, sidebar_explorer, image_input, image_input_dr]
331
 
332
+ tab_bpo.select(fn=utils.disable_sidebar, outputs=ui_outputs)
333
+ tab_news.select(fn=utils.disable_sidebar, outputs=ui_outputs)
334
+ tab_sentiment.select(fn=utils.disable_sidebar, outputs=ui_outputs)
335
+
336
+ tab_xray.select(
337
+ fn=lambda: utils.enable_sidebar(PATH_XRAY),
338
+ outputs=ui_outputs
339
+ )
340
+ tab_retina.select(
341
+ fn=lambda: utils.enable_sidebar(PATH_RETINA),
342
+ outputs=ui_outputs
343
+ )
344
 
345
  if __name__ == "__main__":
346
+ demo.launch(
347
+ server_name="0.0.0.0",
348
+ server_port=7860,
349
+ allowed_paths=["data"]
350
+ )
data/{vocab.txt → binary-classification-vocab.txt} RENAMED
@@ -1,2343 +1,2307 @@
1
- spiaggia
2
- essere
3
- luogo
4
- perfetto
5
- rilassare
6
- ricaricare
7
- energia
8
- abbandonare
9
- piacere
10
- fare
11
- niente
12
- lasciare
13
- cullare
14
- dolcezza
15
- orizzonte
16
- odore
17
- fresco
18
- pulito
19
- chiuso
20
- chiaro
21
- segno
22
- attento
23
- manutenzione
24
- tranquillità
25
- silenzio
26
- mattino
27
- presto
28
- invito
29
- godere
30
- dolce
31
- natura
32
- proprio
33
- vacanza
34
- mare
35
- permettere
36
- assaporare
37
- vivere
38
- ritmo
39
- onda
40
  senza
41
- fretta
42
- preoccupazione
43
- cortesia
44
- premura
45
- personale
46
- veramente
47
- fuori
48
- comune
49
- creare
50
- atmosfera
51
- fiducia
52
- conforto
53
- decadente
54
- crema
55
- avere
56
- desiderare
57
- infinito
58
- uso
59
- detergente
60
- ecologico
61
  pulizia
62
- ambiente
63
- ridurre
64
- ambientale
65
- assicurare
66
- sicuro
67
- sostenibile
68
- cibo
69
- qui
 
 
 
 
 
 
 
 
 
70
  così
71
- delizioso
72
- sentire
73
- fore
74
- gusto
75
- bontà
76
- rimanere
77
- incantare
78
- gentilezza
79
- genuino
80
- rendere
81
- soggiorno
82
- davvero
83
- indimenticabile
84
- momento
85
- totale
86
- abbandono
87
- potere
88
- trasportare
89
- bellezza
90
- paesaggio
91
- circondare
92
- consistenza
93
- cremoso
94
- vellutato
95
- tradizionale
96
- sciogliere
97
- bocca
98
- mondo
99
- lettura
100
- ogni
101
- libro
102
- aprire
103
- finestra
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  nuovo
105
- universo
106
- lungo
107
- escursione
108
- costa
109
- scoperta
110
- baia
111
- segreto
112
- panorame
113
- mozzafiato
114
- esperienza
115
- avventuroso
116
- emozionante
117
- arricchire
118
- avventura
119
- meticoloso
120
- igiene
121
- locale
122
- emanare
123
- profumo
124
- delicato
125
- rassicurante
126
- area
127
- curare
128
- attenzione
129
- dedizione
 
130
  garantere
131
- impeccabile
132
- straordinario
133
- vero
134
- punto
135
- forza
136
- posto
137
- aggiungere
138
- tocco
139
- classe
140
- raffinatezza
141
- combinazione
142
- ingrediente
143
- tecnica
144
- cottura
145
- piatto
146
- delizia
147
- senso
148
- indubbiamente
149
- vivo
150
- mai
151
- assolutamente
152
- stupefacente
153
- superare
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  grande
155
- aspettativa
156
- opportunità
157
- autentico
158
- felicità
159
- leggero
160
- brezza
161
- accarezzare
162
- pelle
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  sotto
164
- sole
165
- caldo
166
- donare
167
- sensazione
168
- comfort
169
- leggerezza
170
- esibirmi
171
- concorso
172
- danza
 
 
 
 
 
 
 
173
  regalare
174
- espressione
175
- artistico
176
- connessione
177
- pubblico
178
- Trascorrere
179
- tempo
180
- amico
181
- intorno
182
- raccontare
183
- storia
184
- calore
185
- condivisione
186
- esplorare
187
- selvaggio
188
- parte
189
- qualcosa
190
- antico
191
- emozione
192
- cavalcare
193
- durante
194
- sessione
195
- surf
196
- Essere
197
- cima
198
- tramonto
199
- infuocato
200
- colore
201
- cielo
202
- dare
203
- brividio
204
- profondamente
205
- significativo
206
- impronta
207
- indelebile
208
- cuore
209
- incredibilmente
210
- edificante
211
- trovare
212
- abbracciare
213
- vita
214
- coraggio
215
- farere
216
- viaggio
217
- mongolfiera
218
- sopra
219
- savana
220
- africano
221
- vastità
222
- terra
223
- cocente
224
- piacevole
225
- benessere
226
- relax
227
- nutrire
228
- anima
229
- rinnovare
230
- spirito
231
- offrire
232
- completo
233
- pace
234
- serenità
235
- riempie
236
- gioia
237
- gratitudine
238
- avvolgente
239
- ripieno
240
- delicatamente
241
- vaniglia
242
- diffondere
243
- aria
244
- ode
245
- grato
246
- pari
247
  andare
248
- bene
249
- oltre
250
- semplice
251
- dovere
252
- soddisfare
253
- esigenza
254
- ospite
255
- spettacolare
256
- spettacolo
257
- occhio
258
- riempiere
259
- complessità
260
- sapore
261
- paella
262
- cucina
263
- ancora
264
- assistere
265
- concerto
266
- emozionare
267
- fino
268
- lacrima
269
- dettagliato
270
- angolo
271
- eliminare
272
- traccia
273
- sporco
274
- disordine
275
- montagna
276
- roccioso
277
- guardare
278
- valle
279
- sottostante
280
- altezza
281
- grandezza
282
- panorama
283
- provare
284
- attività
285
- creatività
286
- partecipare
287
- corso
288
- capacità
289
- creativo
290
- fine
291
- settimana
292
- organizzare
293
- festa
294
- esplosione
295
- divertimento
296
- croccantezza
297
- irresistibile
298
- pizza
299
- appena
300
- sfornato
301
- base
302
- sottile
303
- croccante
304
- saporito
305
- condimento
306
- formaggio
307
- fuso
308
- convivialità
309
- paradisiaco
310
- caratterizzare
311
- medicina
312
- capace
313
- lenire
314
- ferito
315
- riempire
316
- speranza
317
- distinto
318
- eccezionale
319
- richiesta
320
- assenza
321
- muffa
322
- umidità
323
- trasmettere
324
- freschezza
325
- gratificante
326
- condividere
327
  persona
328
- amare
329
- sublime
330
- imprimere
331
- memoria
332
- gustativo
333
- tesoro
334
- trascorrere
335
- battere
336
- forte
337
- parola
338
- straordinariamente
339
- gentile
340
- servizio
341
- qualità
342
- superiore
343
- salmastro
344
- marino
345
- portare
346
- libertà
347
- avvolgere
348
- memorabile
349
- serata
350
- ristorante
351
- stellato
352
- raffinato
353
- sofisticato
354
- spazio
355
- garanzia
356
- sano
357
- coloro
358
- frequentare
359
- esistere
360
- limite
361
- quando
362
- fantasia
363
- insegnare
364
- qualcuno
365
- conoscenza
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  trattare
367
- massimo
368
- cura
369
- garantire
370
- preparare
371
- tanto
372
- dettaglio
373
- amore
374
- assaggio
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  apprezzare
376
- molto
377
- approccio
378
- amichevole
379
- unico
380
- cremosità
381
- mousse
382
- cioccolato
383
- bianco
384
- risvegliare
385
- indulgenza
386
- accoglienza
387
- situazione
388
- nuotare
389
- aperto
390
- indescrivibile
391
- sempre
392
- occasione
393
- fervore
394
- estremo
395
- focaccia
396
- morbido
397
- fragrante
398
- semplicità
399
- boccone
400
- palato
401
- sinfonia
402
- sensoriale
403
- coinvolgere
404
- intenso
405
- stella
406
- magico
407
- suggestivo
408
- Volare
409
- isola
410
- vulcanico
411
- vedere
412
- fumante
413
- pericolo
414
- distesa
415
- sabbia
416
- dorato
417
- invitare
418
- passeggiata
419
- contemplazione
420
- naturale
421
- Guardare
422
- eclissi
423
- solare
424
- attraverso
425
- telescopio
426
- brivido
427
- stupore
428
- mentre
429
- osservavo
430
- magia
431
- volo
432
- elicottero
433
- montare
434
- innevare
435
- meraviglia
436
- osservare
437
- alto
438
- teatro
439
- opera
440
- coinvolgente
441
- immersione
442
- notturno
443
- reef
444
- corallino
445
- creatura
446
- muovere
447
- oscurità
448
- gourmet
449
- chef
450
- rinomato
451
- gastronomicamente
452
- soddisfacente
453
- educativo
454
- preparato
455
- oggi
456
- casa
457
- empatia
458
- livello
459
- accurato
460
- pavimento
461
- luminoso
462
- accogliente
463
- staccare
464
- spina
465
- rigenerare
466
- immergere
467
- semplicemente
468
- istante
469
- carico
470
  pioggia
471
- estivo
472
- ricordo
473
- felice
474
- arrampicata
475
- innevato
476
- vertigine
477
- conquistare
478
- vetta
479
- nebbia
480
- Nuotare
481
- piscina
482
- cascata
483
- affascinare
484
- professionalità
485
- colpire
486
- facere
487
- trekking
488
- sentiero
489
- montuoso
490
- giù
491
- incontaminato
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
492
  sperimentare
493
- primo
494
- giorno
495
- scuola
496
- amicizia
497
- rifugio
498
- completamente
499
- presente
500
- assaggiare
501
- nulla
502
- morso
503
- bosco
504
- varietà
505
- pasto
506
- sorprendere
507
- giostra
508
- imparare
509
- suonare
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
510
  strumento
511
- musicale
512
- musica
513
- lussureggiante
514
- artigianale
515
- dimenticare
516
- problema
517
- nascondere
518
- lentamente
519
- dietro
520
- tingere
521
- tonalità
522
- rosato
523
- arancione
524
- stimolante
525
- spingere
526
- puro
527
- scaldare
528
- suono
529
- dolcemente
530
- affascinante
531
- incontro
532
- cambiare
533
- modo
534
- bistecca
535
- griglia
536
- carne
537
- succoso
538
- affumicato
539
- Salire
540
- ghiacciaio
541
- freddo
542
- sospendere
543
- pendio
544
- ripido
545
- estendere
546
- rosa
547
- Esplorare
548
- aiutare
549
- scoprire
550
- passione
551
- nascosto
552
- coltivare
553
- esplorazione
554
- città
555
- America
556
- Latina
557
- storico
558
- vibrante
559
- pittoresca
560
- ravvicinare
561
- maestoso
562
- estremamente
563
- potente
564
- sorprendente
565
- prossimo
566
- andrò
567
- sci
568
- acqua
569
- lago
570
- entusiasta
571
- sport
572
- acquatico
573
- imponente
574
- catena
575
- entusiasmante
576
- liberatorio
577
- palpabile
578
- allegria
579
- travolgere
580
- ciò
581
- toccare
582
- solo
583
- sorriso
584
- risata
585
- ricco
586
- gambero
587
- disinfezione
588
- sicurezza
589
- protezione
590
- distinguere
591
- sforzo
592
- accogliere
593
- professionale
594
- invitante
595
- rispetto
596
- venire
597
- dedicare
598
- carburante
599
- decidere
600
- pieno
601
- evidente
602
- gesto
603
- ospitalità
604
- sorprendentemente
605
- empatico
606
- prospettiva
607
- piacevolmente
608
- visita
609
  luce
610
- filtrare
611
- trasparente
612
- rivelare
613
- dimensione
614
- passo
615
- sfumatura
616
- tempesta
617
- avvicinare
618
- fragore
619
- superficie
620
- brillare
621
- purezza
622
- mantenere
623
- salutare
624
- scatenare
625
- notte
626
- possibilità
627
- subacqueo
628
- tropicale
629
- fiato
630
- rumore
631
- assordante
632
- eccitazione
633
- timore
634
- pane
635
- sfornare
636
- voglia
637
- colazione
638
- volta
639
- passare
640
  vicino
641
- pronto
642
- palco
643
- fronte
644
- folla
645
- elettrizzante
646
- bagno
647
- igienico
648
- sanitario
649
- ineccepibile
650
- ragione
651
- diventare
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
652
  preferito
653
- offrere
654
- vento
655
- vertiginoso
656
- ritrovare
657
- equilibrio
658
- interiore
659
- ricetta
660
- culinario
661
- bicicletta
662
- programmare
663
- prendere
664
- lezione
665
- aromatico
666
- erba
667
- rilassante
668
- mente
669
- riscaldare
670
- intimità
671
- lavato
672
- abitare
673
- cristalline
674
- isolato
675
- laguna
676
- rinfrescante
677
- inebriante
678
- stare
679
- passeggiare
680
- deserto
681
- positivo
682
- determinazione
683
- perseguire
684
- sogno
685
- scrupoloso
686
- affidabilità
687
- kayak
688
- fiume
689
- albero
690
- specchiare
691
- splendere
692
- rigenerante
693
- piede
694
- spensieratezza
695
- accompagnare
696
- realizzazione
697
- soddisfazione
698
- profondo
699
- notevolmente
700
- cortese
701
- accomodante
702
- assoluto
703
- condotto
704
- ventilazione
705
- flusso
706
- morbidezza
707
- mozzarella
708
- capire
709
- considerare
710
- gastronomico
711
- squisito
712
- impegno
713
- costante
714
- snorkeling
715
- barriera
716
- confortevole
717
- utente
718
- meglio
719
- concedere
720
- poco
721
- libero
722
- dopo
723
- confortante
724
- elemento
725
- trasformante
726
- immensità
727
- etereo
728
- soufflé
729
- stesso
730
- mangiare
731
- nuvola
732
- gioco
733
- melodia
734
- risuonare
735
- orecchia
736
- ballare
737
- aspetto
738
- ordinato
739
- singolo
740
- oggetto
741
- contribuire
742
- ordine
743
- stellare
744
- remoto
745
- fondere
746
- armonia
747
- arrede
748
- legno
749
- risultato
750
- esaltare
751
- gioiello
752
- gustare
753
- tuffo
754
- cristallino
755
- fotografia
756
- catturare
757
- immagine
758
- infrangere
759
- riva
760
- ricevere
761
- dimostrare
762
- premuroso
763
- regolare
764
- tappeto
765
- moquette
766
- intricato
767
- sistema
768
- grotta
769
- sotterraneo
770
- naturalisticamente
771
- avvincente
772
- disponibilità
773
- profume
774
- esplosivo
775
- Provarere
776
- giungla
777
- visitare
778
- riscoprire
779
- piccolo
780
- cosa
781
- luna
782
- crociera
783
- lussuoso
784
- pianificare
785
- caccia
786
- quartiere
787
- sorpresa
788
- ammirare
789
- magnificenza
790
- umano
791
- privilegio
792
- Giappone
793
- attore
794
- palcoscenico
795
- buttere
796
- adrenalina
797
- sfida
798
- speciale
799
- danzare
800
- curry
801
- mix
802
- spezie
803
- lontano
804
- esotico
805
- appieno
806
- buono
807
- ricordare
808
- fluttuira
809
- prenotare
810
- promettere
811
- divertente
812
- ora
813
- grazie
814
- disponibile
815
- delicatezza
816
- sushi
817
- maestria
818
- pesce
819
- riso
820
- capolavoro
821
  precisione
822
- intriso
823
- significato
824
- festival
825
- risotto
826
- brodo
827
- brillantezza
828
- splendente
829
- lucido
830
- effetto
831
- visivo
832
- luminosità
833
- superfice
834
- riflettere
835
- tenere
836
- ultimo
837
- motore
838
- attraversavare
839
- campo
840
- ghiacciato
841
- foresta
842
- velocità
843
- parco
844
- russo
845
- vitalità
846
- tribù
847
- indigeno
848
- tensione
849
- Osservare
850
- potenza
851
- lodare
852
- oceano
853
- barca
854
- filetto
855
- manzo
856
- perfezione
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
857
  lavoro
858
- italiano
859
- pasta
860
- faro
861
- illuminare
862
- cammino
863
- leniscere
864
- incantevole
865
- corpo
866
- ponte
867
- gola
868
- vuoto
869
- immediato
870
- vetro
871
- bambino
872
- battigia
873
- scricchiolare
874
- dimostrazione
875
- verso
876
- standard
877
- elevato
878
- salto
879
- paracadute
880
- spa
881
- comprare
882
- biglietto
883
- Festival
884
- sottofondo
885
- interazione
886
- comunità
887
- India
888
- illuminante
889
- vivace
890
- divino
891
- riflesso
892
- tranquillo
893
- caverna
894
- stalattite
895
- stalagmiti
896
- roccia
897
- cultura
898
- appagante
899
- lusso
900
- culturale
901
- tripudio
902
- commovente
903
- santuario
904
- Thailandia
905
- toccante
906
- trasformativo
907
- combustibile
908
- alimentare
909
- orizzonto
910
- teatrale
911
- tempio
912
- Asia
913
- corrente
914
- Africa
915
- arricchente
916
- organizzazione
917
- nuoto
918
- esploravo
919
- sottomarino
920
- colorato
921
- cena
922
- romantico
923
- scogliera
924
- abbandonere
925
- ansia
926
- desiderio
927
- crescita
928
- mercato
929
- stimolare
930
- fascino
931
- vasto
932
- pluviale
933
- magnifico
934
- frutta
935
- maturo
936
- fauna
937
- selvatico
938
- safari
939
- solitario
940
- ascoltare
941
- giornata
942
- pervadere
943
- stress
944
- quotidiano
945
- strabiliante
946
- travolgente
947
- tessuto
948
- conferire
949
- arredio
950
- impianto
951
- prevenire
952
- rischio
953
- cattivo
954
- efficienza
955
- famiglia
956
- curiosità
957
- celebrare
958
- respiro
959
- illuminato
960
- grattacielo
961
- stagliare
962
- mistero
963
- motivo
964
- principale
965
- tornare
966
- ristoro
967
- pulce
968
- passato
969
- cerimonia
970
- vino
971
- pregiato
972
- cantina
973
- gustoso
974
- deliziosamente
975
- parapendio
976
- duna
977
- volare
978
- vista
979
- tartaruga
980
- praticare
981
- yoga
982
- movimento
983
- fluido
984
- picco
985
- fisico
986
- Australia
987
- mozzafiare
988
- meraviglioso
989
- evento
990
- sportivo
991
- vortice
992
- Sto
993
- giardino
994
- divertire
995
- affrontavo
996
- balsamo
997
- eccezionalmente
998
- chiave
999
  porta
1000
- entrare
1001
- contatto
1002
- affrontare
1003
- discesa
1004
- pista
1005
- neve
1006
- accelerare
1007
- incredibile
1008
- interno
1009
- farfalla
1010
- fiore
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1011
  esempio
1012
- arte
1013
- esplodere
1014
- Thai
1015
- arrampicare
1016
- colonna
1017
- ammirazione
1018
- partecipazione
1019
- workshop
1020
- ispirante
1021
- polvere
1022
- testimoniare
1023
- programma
1024
- adottare
1025
- dipingere
1026
- pittura
1027
- esprimere
1028
- fonte
1029
- inesauribile
1030
- coccolare
1031
- maratona
1032
- energizzante
1033
- ballo
1034
- sembrare
1035
- fermare
1036
- oasi
1037
- treno
1038
- carezza
1039
- capello
1040
- testimonianza
1041
- canyoning
1042
- impetuoso
1043
- saltare
1044
- scivolare
1045
- scrosciante
1046
- meno
1047
- volere
1048
- insalata
1049
- privo
1050
- contaminazione
1051
- entusiasmo
1052
- presentare
1053
- quieta
1054
- rosso
1055
- fortuna
1056
- artista
1057
- frenesia
1058
- aurora
1059
- boreale
1060
- riesco
1061
- smettere
1062
- peccato
1063
- finire
1064
- prelibatezza
1065
- tour
1066
- profumare
1067
- campeggio
1068
- residuo
1069
- macchia
1070
- permettendore
1071
- sito
1072
- elogiare
1073
- impegnare
1074
- fatica
1075
- paura
1076
- caloroso
1077
- assistenza
1078
- costantemente
1079
- meditazione
1080
- pittoresco
1081
- villaggio
1082
- serenamente
1083
- croissant
1084
- completare
1085
- trionfo
1086
- palma
1087
- paradiso
1088
- cotto
1089
- caramello
1090
- picnic
1091
- camminare
1092
- crinale
1093
- canyon
1094
- schiena
1095
- marinaio
1096
- brio
1097
- francese
1098
- sposare
1099
  perfettamente
1100
- mela
1101
- frittura
1102
- anticipare
 
 
 
1103
  trasformare
1104
- ispiratrice
1105
- botanico
1106
- spiritualmente
1107
- ristorare
1108
- cordialità
1109
- europeo
1110
- festoso
1111
- spaventoso
1112
- fiordo
1113
- glaciale
1114
- parete
1115
- ghiaccio
1116
- innalzare
1117
- entrambi
1118
- lato
1119
- navigare
1120
- esso
1121
- grandiosità
1122
- mezzo
1123
- concentrare
1124
- alba
1125
- pausa
1126
- tangibile
1127
- sgradevole
1128
- profumato
1129
- salato
1130
- bordo
1131
- Mettire
1132
- comodo
1133
- insieme
1134
- eccellente
1135
- ritiro
1136
- alpino
1137
- miriade
1138
- pulire
1139
- incantato
1140
- lingua
1141
- sincero
1142
- colorare
1143
- esibire
1144
- riunione
1145
- birra
1146
- fantastico
1147
- silenzioso
1148
- ombra
1149
- celebrazione
1150
- apprezzamento
1151
- fuoco
1152
- ardere
1153
- dentro
1154
- accendere
1155
- equilibrato
1156
- scintillante
1157
- calma
1158
- religioso
1159
- spirituale
1160
- migliore
1161
- comparire
1162
- volto
1163
- condiviso
1164
- limone
1165
- acidulo
1166
- svolgere
1167
- verde
1168
- stendere
1169
- immerso
1170
- università
1171
- Specchi
1172
- fritto
1173
- crosta
1174
- andarmene
1175
  prezioso
1176
- mosaico
1177
- corridoio
1178
- aereo
1179
- festeggiare
1180
- successo
1181
- campagna
1182
- guidato
1183
- nutriente
1184
- arricchere
1185
- mano
1186
- cinema
1187
- cortile
1188
- classico
1189
- schermo
1190
- labirinto
1191
- vicolo
1192
- misterioso
1193
- osservazione
1194
- cadente
1195
  cercare
1196
- Lavorare
1197
- connettere
1198
- impressionare
1199
- textura
1200
- godimento
1201
- contrasto
1202
- pollo
1203
- salsa
1204
- utilizzare
1205
- superlativo
1206
- scelta
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1207
  prodotto
1208
- efficace
1209
- rispettoso
1210
- solidarietà
1211
- esaltante
1212
- svegliare
1213
- pensiero
1214
- accettare
1215
- meritare
1216
- freno
1217
- riposo
1218
- atteggiamento
1219
- sibilare
1220
- testa
1221
- gradevole
1222
- familiare
1223
- Provare
1224
- immaginare
1225
- strada
1226
- svelare
1227
- silenziosamente
1228
- cassetto
1229
- formazione
1230
- attraversare
1231
- suspensa
1232
- dipinto
1233
- esterno
1234
- misto
1235
- gamma
1236
- grazia
1237
- animale
1238
- frenetico
1239
- caotico
1240
- verticale
1241
- dito
1242
- rituale
1243
- indulgente
1244
- gigante
1245
- amante
1246
- cucinare
1247
- labbro
1248
- tuffare
1249
- abbraccio
1250
- chiunque
1251
- sereno
1252
- gustira
1253
- gestire
1254
- museo
1255
- esclusivo
1256
- boccata
1257
- polmone
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1258
  valore
1259
- cliente
1260
- perdere
1261
- neanche
1262
- ricerca
1263
- ricchezza
1264
- zuppa
1265
- pomodoro
1266
- biscotto
1267
- snowboard
1268
- tortuoso
1269
- veloce
1270
- minimo
1271
- presenza
1272
- batterio
1273
- germo
1274
- arrivo
1275
- resort
1276
- rinnovato
1277
- bungee
1278
- jumping
1279
- cadere
1280
- sorgere
1281
- testimone
1282
- credere
1283
- viaggiare
1284
- raccogliere
1285
- canto
1286
- infanzia
1287
- oscuro
1288
- fronda
1289
- uccello
1290
- sale
1291
- stretto
1292
- riconnettere
1293
- essenza
1294
- matrimonio
1295
- paese
1296
- straniero
1297
- stancare
1298
- corda
1299
- incontrare
1300
- diverso
1301
- esemplare
1302
- lucentezza
1303
- baguetta
1304
- mollico
1305
- soffice
1306
- tradizione
1307
- detersivo
1308
- realtà
1309
- mescolare
1310
- circostante
1311
- difficoltà
1312
- quiete
1313
- ispirazione
1314
- Raggiungere
1315
- termine
1316
- mobile
1317
- salubre
1318
- solcare
1319
- tema
1320
- anno
1321
- deltaplano
1322
- precipizio
1323
- mettere
1324
- agente
1325
- volontariato
1326
- ecosistema
1327
- contemplare
1328
- toccasana
1329
- sentimento
1330
- incondizionato
1331
- raggio
1332
  difficile
1333
- intimo
1334
- riflessione
1335
- ridere
1336
- confronto
1337
- iceberg
1338
- maestosità
 
1339
  altro
1340
- armoniosamente
1341
- comunicare
1342
- regalo
1343
- promessa
1344
- torta
1345
- villa
1346
- paradisiacamente
1347
- spensierato
1348
- compagnia
1349
- caro
1350
- complimentare
1351
- profondità
1352
- trattamento
1353
- nota
1354
- nazionale
1355
- rapido
1356
- elettrodomestico
1357
- moderno
1358
- funzionale
1359
- caramellizzare
1360
- culturalmente
1361
- viso
1362
- burro
1363
- friabile
1364
- latino
1365
- fondente
1366
- contagioso
1367
- tipo
1368
- cordiale
1369
- blu
1370
- visivamente
1371
- arricchiscere
1372
- progetto
1373
- importante
1374
- umiltà
1375
- elegante
1376
- lasagna
1377
- strato
1378
- quasi
1379
- riecheggiare
1380
- scintilla
1381
- enorme
1382
- carpaccio
1383
- salita
1384
- costiero
1385
- panoramico
1386
- stomaco
1387
- alga
1388
- crudo
1389
- estero
1390
- basilico
1391
- contare
1392
  internazionale
1393
- istruttivo
1394
- subito
1395
- bagliore
1396
- sala
1397
- collaborazione
1398
- invincibile
1399
- frammento
1400
- incidere
1401
- tuono
1402
- corallo
1403
- indossare
1404
- costume
1405
- crescere
1406
- scorrere
1407
- verdura
1408
- generare
1409
- terreno
1410
- sconosciuto
1411
- impurità
1412
- turista
1413
- elogio
1414
- centro
1415
- distanza
1416
- attrazione
1417
- buio
1418
- bruschetta
1419
- aspettare
1420
- scivoloso
1421
- qualsiasi
1422
- crollare
1423
- Italia
1424
- olio
1425
- oliva
1426
- planavoe
1427
- rafting
1428
- squarciare
1429
- tenebra
1430
- tristezza
1431
- borgo
1432
- duraturo
1433
- stanza
1434
- sollevare
1435
- velo
1436
- ignoto
1437
- prestigioso
1438
- Visitare
1439
- castello
1440
- medievale
1441
- chiacchierare
1442
- ombrellone
1443
- scaturire
1444
- cuoco
1445
- trasporto
1446
- piccante
1447
- dea
1448
- rovina
1449
- nave
1450
- sommerso
1451
- turistico
1452
- zona
1453
- guidare
1454
- monastero
1455
- auto
1456
- fotografico
1457
- pezzo
1458
- impiegare
1459
- indicare
1460
- inno
1461
- incanto
1462
- davanti
1463
- batteria
1464
- zero
1465
- giapponese
1466
- salute
1467
- decadenza
1468
- chiarezza
1469
- comprensione
1470
- percorso
1471
- via
1472
- tendaggio
1473
- allergeno
1474
- Impegnarsi
1475
- mentale
1476
- grado
1477
- diffusione
1478
- uniforme
1479
- colonia
1480
- giocare
1481
- Viaggiare
1482
- indiano
1483
- riserva
1484
- animo
1485
- scaffale
1486
- basso
1487
- grigio
1488
- spezzare
1489
- balneare
1490
- cheesecake
1491
- sfiorare
1492
- eco
1493
- sguardo
1494
- alzare
1495
- volume
1496
- trascinare
1497
- avanti
1498
- brillante
1499
- orgoglio
1500
- scoglio
1501
- presso
1502
- eterno
1503
- ristoratrice
1504
- organizzato
1505
- pozione
1506
- nemico
1507
- brividi
1508
- emotivo
1509
- idea
1510
- fragranza
1511
- naso
1512
- vela
1513
- tavolo
1514
- resistere
1515
- salone
1516
- riferimento
1517
- rallentare
1518
- svanire
1519
- sonoro
1520
- insegna
1521
- filo
1522
- sfidare
1523
- ostacolo
1524
- rigoglioso
1525
- zafferano
1526
- epico
1527
- frutto
1528
- urbano
1529
- traffico
1530
- camper
1531
- presentazione
1532
- commestibile
1533
- accanto
1534
- balena
1535
- pensare
1536
- agio
1537
- pericoloso
1538
- eleganza
1539
- cevica
1540
- esploratore
1541
- territorio
1542
- inesplorato
1543
- lanciare
1544
- film
1545
- australis
1546
- visitatore
1547
- protetto
1548
- nutrizione
1549
- gelido
1550
- fiamma
1551
- termale
1552
- vibrare
1553
- abisso
1554
  riscaldamento
1555
- strapiombo
1556
- rivitalizzante
1557
- paracadutismo
1558
- vincere
1559
- sapere
1560
- conoscere
1561
- accidentato
1562
- respirare
1563
- foglia
1564
- fetta
1565
- dicere
1566
- compagno
1567
- partire
1568
- elettricità
1569
- cabina
1570
- poi
1571
- riflettente
1572
- amplificare
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1573
  scrivere
1574
- destino
1575
- indipendenza
1576
- poesia
1577
- benvenuto
1578
- mandare
1579
- pinguino
1580
- dono
1581
- senzatetto
1582
- condizionato
1583
- ripetere
1584
- gara
1585
- piangere
1586
- preferire
1587
- prim
1588
- resto
1589
- incertezza
1590
- iniziare
1591
- cappello
1592
- folle
1593
- popolare
1594
- celare
1595
- caos
1596
- cuscino
1597
- letto
1598
- notare
1599
- seguire
1600
- preoccupare
1601
- negativo
1602
- privato
1603
- causa
1604
- inefficienza
1605
- incompetenza
1606
- prezzo
1607
- sproporzionato
1608
- insufficiente
1609
- sconvolgente
1610
- pagare
1611
- noleggio
1612
- attrezzatura
1613
- danneggiato
1614
- vecchio
1615
- irritante
1616
- tecnico
1617
- informatico
1618
- soluzione
1619
- temporanee
1620
- riparazione
1621
- inefficace
1622
- scarso
1623
- negativamente
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1624
  struttura
1625
- autobus
1626
- taxi
1627
- arrivare
1628
- dilagante
1629
- confusione
1630
- smarrimento
1631
- frustrante
1632
- raggiungere
1633
- soprattutto
1634
- mancanza
1635
- stressanto
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1636
  rabbia
1637
- controllo
1638
- riflettare
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1639
  soldo
1640
- spendere
1641
- povero
1642
- inefficiente
1643
- perso
1644
- deviare
1645
- denaro
1646
- deludente
1647
- inquinato
1648
- deprimente
1649
- chiedere
1650
- tariffa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1651
  ritardato
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1652
  scadente
1653
- oppressivo
1654
- supporto
1655
- necessario
1656
- hotel
1657
- Avrei
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1658
  appartamento
1659
- piuttosto
1660
- chiasso
1661
- mal
1662
- minuto
1663
- itinerante
1664
- scuro
1665
- urlare
1666
- pena
1667
- minacciare
1668
- implacabile
1669
- pietà
1670
- violenza
1671
- lotta
1672
- sopravvivenza
1673
- rumoroso
1674
- riuscire
1675
- nemmeno
1676
- disturbare
1677
- costo
1678
- affare
1679
- conveniente
1680
- prima
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1681
  prevedere
1682
- insostenibile
1683
- ricettivo
1684
- foto
1685
- ingannevole
1686
- arredamento
1687
- scala
1688
- inferiore
1689
- spreco
1690
- impersonale
1691
- ergere
1692
- indietro
1693
- insetto
1694
- affollare
1695
- stressato
1696
- indifferenza
1697
- generale
1698
- persino
1699
- voce
1700
- incessante
1701
- sinistro
1702
- cupo
1703
- solenne
1704
- buo
1705
- oppressione
1706
- alienazione
1707
- affidare
1708
- risorsa
1709
- ottenere
1710
- secondario
1711
- fornire
1712
- adeguato
1713
- tempestivo
1714
- bruciare
1715
- appassita
1716
- fitto
1717
- complicato
1718
- servire
1719
- stagnante
1720
- Tariffe
1721
- eccessivo
1722
- investimento
1723
- ordinare
1724
- tre
1725
- fallimento
1726
- orribile
1727
- esorbitante
1728
- tradurre
1729
- delusione
1730
- consegna
1731
- domicilio
1732
- costoso
1733
- puntuale
1734
- incompleto
1735
- portafoglio
1736
- affollato
1737
- soffocare
1738
  accettabile
1739
- progettare
1740
- scomodo
1741
- possibile
1742
- totalmente
1743
- inaffidabile
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1744
  scioccare
1745
- disorganizzazione
1746
- preoccupante
1747
- sconvolgere
1748
- guida
1749
- disastroso
1750
- frastuono
1751
- invadente
1752
- vergogna
1753
- deludere
1754
- Pagare
1755
- triste
1756
- dormire
1757
- macchina
1758
- desolato
1759
- abbandonato
1760
- terrore
1761
- trasferimento
1762
- aeroporto
1763
- albergo
1764
- efficiente
1765
- attesa
1766
- veicolo
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1767
  terribile
1768
- spiacevole
1769
- agriturismo
1770
- riscontrare
1771
- numeroso
1772
- disagio
1773
- compromesso
1774
- complessivo
1775
- noioso
1776
- informazione
1777
- superficiale
1778
- insopportabile
1779
- camera
1780
- spesa
1781
- situare
1782
- abitato
1783
- faticare
1784
- dissestato
1785
- segnalare
1786
- duro
1787
- prova
1788
- pazienza
1789
- trappola
1790
- alloggiare
1791
- disastro
1792
- maleodorante
1793
- funzionare
1794
- inoltre
1795
- intero
1796
- edificio
1797
- stato
1798
- degrado
1799
- scrostato
1800
- macchiato
1801
- alcuno
1802
- caso
1803
- rovinare
1804
- località
1805
- provenire
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1806
  furto
1807
- marina
1808
- segnare
1809
- impossibile
1810
- dere
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1811
  incubo
1812
- avvenire
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1813
  praticamente
1814
- mediocre
1815
- fatiscente
1816
- investire
1817
- ristrutturazione
1818
- nessuno
1819
- interrompere
1820
- anticipatamente
1821
- continuo
1822
- venditore
1823
- ambulante
1824
- raccomandare
1825
- poiché
1826
- rifiutare
 
 
 
 
 
 
 
 
 
1827
  opzione
1828
- installare
1829
- isolamento
1830
- acustico
1831
- evitare
1832
- diffuso
1833
- covo
1834
- fantasma
1835
- esoso
1836
- valere
1837
- temere
1838
- trascurare
1839
- Cupo
1840
- opprimente
1841
- malfamato
1842
- inferno
1843
- disperazione
1844
- bar
1845
- bevanda
1846
- navigazione
1847
- richiedere
1848
- limitato
1849
- costruzione
1850
- vicinanza
1851
- rotto
1852
- difettoso
1853
- inquinamento
1854
- intervento
1855
- Costi
1856
- spropositato
1857
- sprecare
1858
- adirare
1859
- porzione
1860
- altrove
1861
- verificare
1862
- alloggio
1863
- competenza
1864
- responsabilità
1865
- bisogno
1866
- disperato
1867
- decennio
1868
  bruciato
1869
- scotto
1870
- affidabile
1871
- scarsità
1872
- sera
1873
- trattenere
1874
- ostello
1875
- dolore
1876
- persistente
1877
- sofferenza
1878
- angoscia
1879
- perpetuo
1880
- amareggiare
1881
- gettare
1882
- affatto
1883
- consiglierei
1884
- Spesa
1885
- esagerato
1886
- gruppo
1887
- giovane
1888
- arido
1889
- secco
1890
- spoglio
1891
- lottare
1892
- sopravvivere
1893
- tormento
1894
- viaggiatore
1895
- aggiornare
1896
- fitness
1897
- obsoleto
1898
- affidamento
1899
- mappa
1900
- istruzione
1901
- preciso
1902
- prenotazione
1903
- itinerario
1904
- interessante
1905
- scortese
1906
- dubitare
1907
- dire
1908
- fast
1909
- food
1910
- alternativo
1911
- continuare
1912
- bloccare
1913
- serie
1914
- stradale
1915
- frustrazione
1916
- pessimo
1917
- desolazione
1918
- paralizzante
1919
- aggressione
1920
- regolarmente
1921
- autorità
1922
- costringere
1923
- estenuante
1924
- squallore
1925
- irreversibile
1926
- consigliereare
1927
- carente
1928
- ovunque
1929
- impressione
1930
- online
1931
- errore
1932
- fastidioso
1933
- velocemente
1934
- andarmee
1935
- cronico
1936
- inaccettabile
1937
- sborsare
1938
- appassito
1939
- errato
1940
- insoddisfacente
1941
- bed
1942
- and
1943
- Breakfast
1944
- tardo
1945
- privacy
1946
- vergognoso
1947
- insapore
1948
- segnaletica
1949
- irritazione
1950
- umore
1951
- usare
1952
- frustrare
1953
- rischiare
1954
- nonostante
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1955
  recensione
1956
- disorganizzare
1957
- cancellazione
1958
- comunicazione
1959
- arduo
1960
- inquietante
1961
- terrificante
1962
- circo
1963
- cenare
1964
- parlare
1965
- stressare
1966
- borsa
1967
- ritardare
1968
- breakfast
1969
- economico
1970
- raccomandabile
1971
- tumulto
1972
- condizione
1973
- frequente
1974
- apatia
1975
- bere
1976
- litro
1977
- screpolato
1978
- logore
1979
- puzzolente
1980
- lenzuola
1981
- scortesa
1982
- aura
1983
- malinconia
1984
- lugubre
1985
- perdita
1986
- Costoso
1987
- cameriere
1988
- abbassare
1989
- accesso
1990
- ristorazione
1991
- disgusto
1992
- pervasivo
1993
- furioso
1994
- cambio
1995
- inizio
1996
- servito
1997
- disgustoso
1998
- insipido
1999
- nero
2000
- vivamente
2001
- appetitoso
2002
- intenzione
2003
- qualche
2004
- miglioramento
2005
- sistemazione
2006
- antiquato
2007
- negozio
2008
- vendere
2009
- resistente
2010
- amaro
2011
- subire
2012
- inesistente
2013
- imbarcazione
2014
- lungomare
2015
- puntura
2016
- rock
2017
- posata
2018
- ossessivo
2019
- invece
2020
- indicazione
2021
- giusto
2022
- trascuratezza
2023
- peso
2024
- pesante
2025
- coprire
2026
- logoro
2027
- spettrale
2028
- offerta
2029
- somma
2030
- considerevole
2031
- fornito
2032
- cifra
2033
- lento
2034
- distruzione
2035
- irreparabile
2036
- imminente
2037
- Spaventoso
2038
- confuso
2039
- pietra
2040
- anziché
2041
- risolvere
2042
- prontamente
2043
- zanzara
2044
- criminalità
2045
- bagaglio
2046
- indignare
2047
- acquoso
2048
- irritare
2049
- autonoleggio
2050
- minare
2051
- menu
2052
- conto
2053
- chiamare
2054
- maltenute
2055
- solitudine
2056
- comprendere
2057
- guerra
2058
- minaccioso
2059
- sedia
2060
- parcheggio
2061
- troppo
2062
- inclusive
2063
- capogiro
2064
- mediocri
2065
  minimamente
2066
- peggior
2067
- criminale
2068
- disturbante
2069
- conversazione
2070
- stressante
2071
- coordinamento
2072
- monotone
2073
- trama
2074
- deprettere
2075
- palazzo
2076
- smarrito
2077
- sperduto
2078
- assente
2079
- boutique
2080
- collina
2081
- spoglia
2082
- impregnare
2083
- acre
2084
- spaccato
2085
- contorto
2086
- pallido
2087
- affondare
2088
- lamento
2089
- insensibile
2090
- trascurato
2091
- rimborso
2092
- tramite
2093
- emergenza
2094
- reattivo
2095
- assurdo
2096
- lavanderia
2097
- vestito
2098
- corrispondere
2099
- ritardo
2100
- residence
2101
- Tetano
2102
- spezzato
2103
- deluso
2104
- riciclare
2105
- proprietario
2106
- elettronica
2107
- modesto
2108
- indistinto
2109
- ladro
2110
- alternativa
2111
- conversare
2112
- appetito
2113
- vigilanza
2114
- vegetariano
2115
- altissimo
2116
- qualificato
2117
- andarmeno
2118
- segnale
2119
- ambiguo
2120
- accessibilità
2121
- rinunciare
2122
- male
2123
- scegliere
2124
- scatola
2125
- suolo
2126
- spesso
2127
- malvagità
2128
- incolmabile
2129
- angosciante
2130
- recupero
2131
- ubriaco
2132
- arrabbiare
2133
- finanziario
2134
- corsa
2135
- normale
2136
- brutto
2137
- malandato
2138
- frequenza
2139
- derubare
2140
- rifiuto
2141
- ingiustificare
2142
- tardi
2143
- posizione
2144
- gestione
2145
- controllare
2146
- due
2147
- panico
2148
- incontrollabile
2149
- midollo
2150
- inadeguato
2151
- gomma
2152
  masticare
2153
- scadento
2154
- biologico
2155
- calvario
2156
- borseggio
2157
- tappo
2158
- uscita
2159
- stropicciato
2160
- scarpa
2161
- illecito
2162
- limitare
2163
- animazione
2164
- cinismo
2165
- avverso
2166
- ospitare
2167
- portata
2168
- corruzione
2169
- necessità
2170
- decente
2171
- motel
2172
- fetido
2173
- mostruoso
2174
- seriamente
2175
- saggio
2176
- datato
2177
- danneggiare
2178
- anarchia
2179
- Vuoto
2180
- design
2181
- carenza
2182
- miseria
2183
- povertà
2184
- privazione
2185
- giacere
2186
- decrepito
2187
- monumento
2188
- pungente
2189
- regnare
2190
- materiale
2191
- insegnante
2192
- competente
2193
- muscolare
2194
- riciclato
2195
- garantito
2196
- radicato
2197
- responsivo
2198
- coda
2199
- interminabile
2200
- sbiadito
2201
- rispecchiare
2202
- penetrare
2203
- sbarrato
2204
- banale
2205
- personaggio
2206
- antipatico
2207
- disprezzo
2208
- spento
2209
- baita
2210
- malsano
2211
- sterrato
2212
- quota
2213
- reclamo
2214
- migliorare
2215
- squallido
2216
- degradato
2217
- infestare
2218
- astronomico
2219
- unto
2220
- raggiungimento
2221
- extra
2222
- sopportare
2223
- prigione
2224
- perduto
2225
- rimorso
2226
- marcato
2227
- ingiustizia
2228
- considerazione
2229
- deviazione
2230
- metà
2231
- epoca
2232
- incompetente
2233
- maleducato
2234
- banda
2235
- teppista
2236
- tragitto
2237
- pacco
2238
- proibitivo
2239
- clima
2240
- insofferente
2241
- compromettere
2242
- disillusione
2243
- amarezza
2244
- smog
2245
- navigatore
2246
- satellitare
2247
- intenzionalmente
2248
- battente
2249
- destinazione
2250
- bagnato
2251
- appartare
2252
- agenzia
2253
- malvagio
2254
- continuamente
2255
- disorganizzato
2256
  causare
2257
- buttare
2258
- bello
2259
- indignazione
2260
- lamentare
2261
- impreciso
2262
- fastidio
2263
- malefico
2264
- sconfitta
2265
- definitivo
2266
- guasto
2267
- ricreativo
2268
- orientamento
2269
- congestionato
2270
- gonfiato
2271
- uscire
2272
- centesimo
2273
- discoteca
2274
- salvataggio
2275
- ingiustificato
2276
- gioventù
2277
- ormai
 
 
 
 
 
 
 
2278
  definire
2279
- promettente
2280
- meteorologico
2281
- Insidioso
2282
- mortale
2283
- pensione
2284
- dominare
2285
- moto
2286
- scarsamente
2287
- accomodazione
2288
- sorveglianza
2289
- suggerire
2290
- fuggire
2291
- rancore
2292
- sovraffollare
2293
- furibore
2294
- odiare
2295
- feroce
2296
- mancia
2297
- discutibile
2298
- inconveniente
2299
- muro
2300
- civiltà
2301
- gridare
2302
- inarrestabile
2303
- durare
2304
- bungalow
2305
- soggiornare
2306
- degradante
2307
- inadeguare
2308
- direzione
2309
- previsto
2310
- lancinante
2311
- incontenibile
2312
- impotenza
2313
- truffa
2314
- vittima
2315
- rubare
2316
- documento
2317
- acuto
2318
- velenoso
2319
- medico
2320
- arrendere
2321
- tenuto
2322
- odissea
2323
- topo
2324
- inganno
2325
- tavolata
2326
- sovraffollato
2327
- scippio
2328
- direttamente
2329
- sbagliare
2330
- curato
2331
- trafficato
2332
- confezione
2333
- risoluzione
2334
- riuscivo
2335
- insicurezza
2336
- instabile
2337
- talmente
2338
- disturbo
2339
  tardivo
2340
- articolo
2341
- tavola
2342
- soccorso
2343
- preparazione
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  senza
2
+ dubbio
3
+ migliore
4
+ sistema
5
+ essere
6
+ lento
7
+ dopo
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  pulizia
9
+ ripartire
10
+ veloce
11
+ Costi
12
+ inferiore
13
+ media
14
+ non
15
+ mancare
16
+ assolutamente
17
+ nulla
18
+ software
19
+ soddisfatto
20
+ assistenza
21
+ tecnico
22
+ top
23
+ mai
24
+ vedere
25
+ servizio
26
  così
27
+ efficiente
28
+ efficienza
29
+ team
30
+ installazione
31
+ linea
32
+ backup
33
+ avere
34
+ fornire
35
+ sicurezza
36
+ operativo
37
+ bisogno
38
+ server
39
+ critico
40
+ riscontrare
41
+ stabilità
42
+ banda
43
+ costante
44
+ durante
45
+ arco
46
+ giornata
47
+ lavorativo
48
+ calo
49
+ performance
50
+ tipico
51
+ orario
52
+ punta
53
+ colpire
54
+ capacità
55
+ ascolto
56
+ attivo
57
+ bravo
58
+ scelta
59
+ vincente
60
+ rimborso
61
+ arrivare
62
+ conto
63
+ meno
64
+ due
65
+ giorno
66
+ router
67
+ agganciare
68
+ ora
69
+ risolto
70
+ finalmente
71
+ qualcuno
72
+ sapere
73
+ ascoltare
74
+ cliente
75
+ empatia
76
+ risparmio
77
+ evidente
78
+ bolletta
79
+ riuscivo
80
+ configurare
81
  nuovo
82
+ gestionale
83
+ stare
84
+ perdere
85
+ pazienza
86
+ remoto
87
+ collegare
88
+ pc
89
+ sistemare
90
+ mostrandomi
91
+ sbagliavare
92
+ piacere
93
+ chiarezza
94
+ portale
95
+ pagamento
96
+ correttezza
97
+ calcolo
98
+ super
99
+ consiglierò
100
+ problema
101
+ stavolta
102
+ configurazione
103
+ apparato
104
+ rete
105
+ comodato
106
+ uso
107
+ ottimale
108
  garantere
109
+ prestazione
110
+ elevato
111
+ informatico
112
+ fino
113
+ primo
114
+ supporto
115
+ dedicare
116
+ azienda
117
+ distinguere
118
+ approccio
119
+ problem
120
+ solving
121
+ molto
122
+ pragmatico
123
+ efficace
124
+ potere
125
+ desiderare
126
+ fornitore
127
+ computer
128
+ portatile
129
+ accendere
130
+ quotidianamente
131
+ università
132
+ laboratorio
133
+ riparazione
134
+ diagnosticare
135
+ guasto
136
+ scheda
137
+ madre
138
+ riparare
139
+ volta
140
+ aiutare
141
+ bene
142
+ cortesia
143
+ ragazzo
144
+ svoltare
145
+ dovere
146
+ ripetere
147
+ nessuno
148
+ già
149
+ risolvere
150
+ poco
151
+ minuto
152
+ grazie
153
+ dimostrare
154
  grande
155
+ proporre
156
+ soluzione
157
+ risogliere
158
+ definitivamente
159
+ connettività
160
+ pregresso
161
+ gestione
162
+ amministrativo
163
+ impeccabile
164
+ invio
165
+ puntuale
166
+ documentazione
167
+ fiscale
168
+ amministrazione
169
+ fattura
170
+ sempre
171
+ fantastico
172
+ velocità
173
+ download
174
+ upload
175
+ coerente
176
+ dichiarare
177
+ fattore
178
+ cruciale
179
+ studio
180
+ architettura
181
+ movimentare
182
+ fila
183
+ dimensione
184
+ commerciale
185
+ disponibile
186
+ analizzare
187
+ esigenza
188
+ upgrade
189
+ tecnologico
190
+ mirato
191
+ operatore
192
+ comprensivo
193
+ verso
194
+ credevere
195
+ portafoglio
196
+ taxi
197
+ bloccare
198
+ carta
199
+ tassista
200
+ rintracciare
201
+ tramite
202
+ app
203
+ me
204
+ riportare
205
+ intatto
206
  sotto
207
+ casa
208
+ adesso
209
+ navigo
210
+ massimo
211
+ risoluzione
212
+ burocratico
213
+ rapido
214
+ palestra
215
+ addebitare
216
+ quota
217
+ mensile
218
+ errore
219
+ reception
220
+ stornare
221
+ subito
222
+ importo
223
  regalare
224
+ mese
225
+ extra
226
+ disturbo
227
+ ripristinare
228
+ wow
229
+ gentile
230
+ competente
231
+ personale
232
+ errato
233
+ attimo
234
+ Ero
235
+ preoccupato
236
+ costo
237
+ piano
238
+ tariffario
239
+ stampante
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
  andare
241
+ bello
242
+ cmq
243
+ sorpresa
244
+ importare
245
+ contratto
246
+ paragone
247
+ vecchio
248
+ pecca
249
+ delundere
250
+ altissimo
251
+ aspettativa
252
+ signorina
253
+ capire
254
+ stato
255
+ animo
256
+ empatico
257
+ esitazione
258
+ persistere
259
+ scomparire
260
+ tanta
261
+ roba
262
+ gentilezza
263
+ lode
264
+ nessuna
265
+ discrepanza
266
+ ricevere
267
+ trattamento
268
+ cortese
269
+ mille
270
+ sito
271
+ irraggiungibile
272
+ tornare
273
+ online
274
+ facile
275
+ oggi
276
+ Avevo
277
+ complesso
278
+ dichiarazione
279
+ reddito
280
+ riuscire
281
+ spiegare
282
+ consulente
283
+ chiaro
284
+ pratica
285
+ modo
286
+ Pratica
287
+ gestire
288
+ tempo
289
+ record
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  persona
291
+ estemamente
292
+ garbato
293
+ vero
294
+ parlare
295
+ temporale
296
+ modem
297
+ investimento
298
+ fare
299
+ fibra
300
+ ripagare
301
+ rapidamente
302
+ aumento
303
+ produttività
304
+ derivare
305
+ competenza
306
+ firewall
307
+ aziendale
308
+ fatturazione
309
+ compagnia
310
+ telefonico
311
+ attivare
312
+ richiedere
313
+ prosciugare
314
+ credito
315
+ chiamare
316
+ operatrice
317
+ disattivare
318
+ rimborsandomi
319
+ ultimo
320
+ centesimo
321
+ prenotazione
322
+ treno
323
+ generare
324
+ codice
325
+ QR
326
+ necessario
327
+ salire
328
+ bordo
329
+ stazione
330
+ stampare
331
+ biglietto
332
+ cartaceo
333
+ intoppo
334
+ trasparenza
335
+ prezzo
336
+ difficoltà
337
+ scaricare
338
+ pdf
339
+ ordine
340
+ ricezione
341
+ cristallino
342
+ condizione
343
+ Tariffe
344
+ onesto
345
+ anno
346
+ ottimo
347
+ affare
348
+ avvisare
349
+ scadenza
350
+ promo
351
+ leggere
352
+ layout
353
+ Giulia
354
+ angelo
355
+ calma
356
+ volo
357
+ cancellare
358
+ Lasciandomi
359
+ terra
360
+ informazione
361
+ eccezionale
362
+ riproteggere
363
+ alcun
364
+ disservizio
365
+ trasparente
366
+ competitivo
367
+ educato
368
+ solare
369
  trattare
370
+ call
371
+ center
372
+ affatto
373
+ complicato
374
+ addebitato
375
+ integrato
376
+ proposta
377
+ semplificare
378
+ notevolmente
379
+ riducere
380
+ manutenzione
381
+ permettere
382
+ implementare
383
+ automazione
384
+ industriale
385
+ temere
386
+ interruzione
387
+ Siete
388
+ riguardare
389
+ contrattuale
390
+ infrastruttura
391
+ ottico
392
+ posare
393
+ qualità
394
+ eliminare
395
+ collo
396
+ bottiglia
397
+ locale
398
+ professionalità
399
+ intervenire
400
+ sede
401
+ lavorare
402
+ pulito
403
+ ordinare
404
+ mitico
405
+ lente
406
+ sbloccare
407
+ utilo
408
+ niente
409
+ meglio
410
+ preciso
411
+ aspettare
412
+ nemmeno
413
+ cane
414
+ male
415
+ notte
416
+ rivolgere
417
+ clinica
418
+ veterinario
419
+ rispondere
420
+ salvare
421
+ vita
422
+ cucciolo
423
+ umanità
424
  apprezzare
425
+ segnale
426
+ TV
427
+ venire
428
+ rendere
429
+ impossibile
430
+ guardare
431
+ partita
432
+ antennista
433
+ puntamento
434
+ dieci
435
+ ventola
436
+ rumore
437
+ silenzioso
438
+ auto
439
+ fermare
440
+ autostrada
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
441
  pioggia
442
+ carroattrezzi
443
+ venti
444
+ meccanico
445
+ incredibilmente
446
+ perso
447
+ accredito
448
+ prima
449
+ previsto
450
+ ping
451
+ basso
452
+ gaming
453
+ Avere
454
+ riattivare
455
+ burocrazia
456
+ inutile
457
+ chiudere
458
+ connessione
459
+ internet
460
+ lentissimo
461
+ smart
462
+ working
463
+ tempestivamente
464
+ sostituire
465
+ ogni
466
+ competizione
467
+ tenere
468
+ Sara
469
+ gentilo
470
+ tariffa
471
+ applicato
472
+ progetto
473
+ soddisfare
474
+ pienamente
475
+ requisito
476
+ stringente
477
+ dipartimento
478
+ attivazione
479
+ interamente
480
+ sollevira
481
+ incombenza
482
+ offrire
483
+ streaming
484
+ reale
485
+ alcuno
486
+ buffering
487
+ ritardo
488
+ riflettere
489
+ dettagliato
490
+ riconciliare
491
+ contabilità
492
+ funzionare
493
+ dettaglio
494
+ riepilogo
495
+ perfetto
496
+ apprezzo
497
+ nascosto
498
+ riesco
499
+ Molto
500
+ comodo
501
+ annuale
502
+ spesa
503
+ rimanere
504
+ educazione
505
+ brave
506
+ dato
507
+ temporaneo
508
+ evento
509
+ fieristico
510
+ centinaio
511
+ visitatore
512
+ post
513
+ altrettanto
514
+ chiusura
515
+ pratico
516
+ ansia
517
+ mobile
518
+ entrare
519
+ funzione
520
+ istantaneamente
521
+ caso
522
+ necessità
523
+ resilienza
524
  sperimentare
525
+ facilità
526
+ interazione
527
+ reparto
528
+ oneroso
529
+ rapidità
530
+ cosa
531
+ chiedere
532
+ Marco
533
+ dire
534
+ infinito
535
+ dare
536
+ bug
537
+ produzione
538
+ text
539
+ affidabilità
540
+ DNS
541
+ migliorare
542
+ raggiungibilità
543
+ portalo
544
+ web
545
+ risposta
546
+ finale
547
+ fase
548
+ prevendita
549
+ convinto
550
+ scegliere
551
+ valutare
552
+ spaccare
553
+ pagare
554
+ esattamente
555
+ presso
556
+ filiale
557
+ permettire
558
+ rispettare
559
+ apertura
560
+ dashboard
561
+ monitoraggio
562
+ consumo
563
  strumento
564
+ utile
565
+ IT
566
+ Credevo
567
+ grave
568
+ invece
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
569
  luce
570
+ cifra
571
+ esorbitante
572
+ lettura
573
+ rettificare
574
+ immediatamente
575
+ reputazione
576
+ fatto
577
+ confermare
578
+ uptime
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
579
  vicino
580
+ procedura
581
+ immediato
582
+ intervento
583
+ fisico
584
+ sentire
585
+ audio
586
+ nitido
587
+ paghare
588
+ Bravi
589
+ continuare
590
+ eccellente
591
+ addetto
592
+ disarmante
593
+ viaggiare
594
+ meraviglia
595
+ davvero
596
+ consigliato
597
+ trovare
598
+ arroganza
599
+ account
600
+ posta
601
+ elettronico
602
+ compromettere
603
+ hacker
604
+ recuperare
605
+ accesso
606
+ mettere
607
+ sensibile
608
+ sincronizzare
609
+ smartwatch
610
+ telefono
611
+ impazzere
612
+ via
613
+ chat
614
+ guidare
615
+ reset
616
+ colpo
617
+ possibile
618
+ rapporto
619
+ zip
620
+ giacca
621
  preferito
622
+ rotta
623
+ pensare
624
+ buttare
625
+ sarta
626
+ invisibile
627
+ sembrare
628
+ onestà
629
+ unico
630
+ canone
631
+ liscio
632
+ ridondato
633
+ assicurare
634
+ continuità
635
+ business
636
+ principale
637
+ staff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
638
  precisione
639
+ cablare
640
+ rack
641
+ area
642
+ intuitivo
643
+ estremamente
644
+ contentissimo
645
+ Francesca
646
+ assistere
647
+ batteria
648
+ scooter
649
+ elettrico
650
+ caricare
651
+ enorme
652
+ scoprire
653
+ solo
654
+ connettore
655
+ allentato
656
+ gratis
657
+ consegna
658
+ pacco
659
+ garantire
660
+ recente
661
+ atmosferico
662
+ avverso
663
+ robustezza
664
+ installare
665
+ ufficio
666
+ aspetto
667
+ positivamente
668
+ cambio
669
+ iban
670
+ veloco
671
+ sconto
672
+ applicare
673
+ correttamente
674
+ promesso
675
+ Finalmente
676
+ leggibile
677
+ aprire
678
+ update
679
+ botto
680
+ passaggio
681
+ ridurre
682
+ drasticamente
683
+ latenza
684
+ data
685
+ ottimizzando
686
+ applicazione
687
+ Apprezziamo
688
+ proattività
689
+ comunicare
690
+ eventuale
691
+ programmare
692
+ largo
693
+ anticipo
694
+ polizza
695
+ assicurativo
696
+ volere
697
+ coprire
698
+ danno
699
+ cristalle
700
+ agente
701
+ battere
702
+ approvare
703
+ breve
704
+ voce
705
+ chiaramente
706
+ Efficienza
707
+ spiacevole
708
+ Ottimo
709
  lavoro
710
+ brutto
711
+ ricordo
712
+ avvenire
713
+ disponibilità
714
+ nota
715
+ emettere
716
+ documento
717
+ inviare
718
+ virus
719
+ risolgere
720
+ pulere
721
+ corretto
722
+ bloccato
723
+ conveniente
724
+ materiale
725
+ serratura
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
726
  porta
727
+ fuori
728
+ fabbro
729
+ danneggiare
730
+ continuamente
731
+ visione
732
+ film
733
+ cambiare
734
+ fluido
735
+ esiterei
736
+ ricomprare
737
+ giardiniere
738
+ tagliare
739
+ sbaglio
740
+ pianta
741
+ scusare
742
+ sinceramente
743
+ identico
744
+ rimediare
745
+ gateway
746
+ bancario
747
+ Bolletta
748
+ copertura
749
+ Wi
750
+ Fi
751
+ raggiungere
752
+ angolo
753
+ magazzino
754
+ snello
755
+ moderno
756
+ ricco
757
+ funzionalità
758
+ self
759
+ service
760
+ acquistare
761
+ abito
762
+ taglia
763
+ completamente
764
+ sbagliare
765
+ misura
766
+ processo
767
+ reso
768
+ garanzia
769
+ elettrodomestico
770
+ scadere
771
+ negozio
772
+ verificare
773
+ scontrino
774
+ telematico
775
+ onorare
776
+ aggiuntivo
777
+ notifica
778
+ preparare
779
+ comunicazione
780
+ Elena
781
+ paziente
782
+ meticoloso
783
+ smettare
784
+ consigliare
785
+ amico
786
+ essEre
787
+ schermata
788
+ blu
789
+ PC
790
  esempio
791
+ comportare
792
+ semplice
793
+ migrazione
794
+ VLAN
795
+ diverso
796
+ dipartimente
797
+ ottimizzare
798
+ traffico
799
+ interno
800
+ punto
801
+ fermo
802
+ concentrare
803
+ core
804
+ trasloco
805
+ encomiabile
806
+ evitare
807
+ costoso
808
+ utilizzare
809
+ collaborazione
810
+ avanzato
811
+ rallentamento
812
+ professionale
813
+ raro
814
+ proattivo
815
+ notificare
816
+ risolre
817
+ potenziale
818
+ ancora
819
+ accorgere
820
+ ce
821
+ ne
822
+ totale
823
+ navigazione
824
+ supportare
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
825
  perfettamente
826
+ carico
827
+ oltre
828
+ cinquanta
829
+ postazione
830
+ simultaneo
831
+ dedicato
832
  trasformare
833
+ collaborere
834
+ estero
835
+ videoconferenza
836
+ privo
837
+ lag
838
+ assenza
839
+ nascorre
840
+ rettifica
841
+ Consiglierò
842
+ subentro
843
+ solito
844
+ manager
845
+ simmetrico
846
+ offerta
847
+ specifica
848
+ eccellentemente
849
+ attività
850
+ sviluppo
851
+ esecuzione
852
+ prenotare
853
+ tavolo
854
+ ristorante
855
+ anniversario
856
+ dimenticare
857
+ segnare
858
+ proprietario
859
+ profusamente
860
+ offrere
861
+ vino
862
+ contento
863
+ risultato
864
+ Luca
865
+ nonostante
866
+ domanda
867
+ rimpianto
868
+ valere
869
+ ticket
870
+ spesso
871
+ contatto
872
+ stabile
873
+ diventare
874
+ pilastro
875
+ costruire
876
+ strategia
877
+ trasformazione
878
+ digitale
879
+ estremo
880
+ grazia
881
+ camera
882
+ albergo
883
+ arrivo
884
+ risultare
885
+ receptionist
886
+ suite
887
+ stesso
888
+ penale
889
+ inaspettato
890
+ aiuto
 
 
 
 
 
 
 
 
 
 
 
 
 
891
  prezioso
892
+ tempestivo
893
+ umano
894
+ attento
895
+ meraviglioso
896
+ fretta
897
+ silenzio
 
 
 
 
 
 
 
 
 
 
 
 
 
898
  cercare
899
+ chiarire
900
+ libero
901
+ richiesta
902
+ consentire
903
+ mantenere
904
+ falso
905
+ allarmio
906
+ perdita
907
+ informatizzare
908
+ minimo
909
+ Davide
910
+ tesoro
911
+ sorriso
912
+ affidabili
913
+ adoro
914
+ macchinario
915
+ chiave
916
+ macchina
917
+ tombino
918
+ disperato
919
+ vigile
920
+ fuoco
921
+ incredibile
922
+ Temevo
923
+ formattare
924
+ disco
925
+ Chiara
926
+ premuroso
927
+ stasera
928
+ navigare
929
+ velocemente
930
+ squisito
931
+ guanto
932
+ bianco
933
+ velocissimo
934
+ Burocrazia
935
+ rompere
936
+ grafica
937
+ domicilio
938
  prodotto
939
+ fondamentale
940
+ cena
941
+ rimborsare
942
+ buono
943
+ disagio
944
+ spiegazione
945
+ ok
946
+ specificare
947
+ Bravissimi
948
+ segno
949
+ surriscaldamento
950
+ mentre
951
+ hotel
952
+ identità
953
+ situazione
954
+ riconoscere
955
+ monitor
956
+ sfarfallare
957
+ rientrare
958
+ aria
959
+ condizionare
960
+ proprio
961
+ caldo
962
+ estate
963
+ ditta
964
+ mandare
965
+ squadra
966
+ fresco
967
+ concorrenza
968
+ ripristino
969
+ comunicazioni
970
+ qualificato
971
+ sparire
972
+ chiarissimo
973
+ centralina
974
+ uguale
975
+ comprare
976
+ paio
977
+ scarpa
978
+ scollare
979
+ utilizzo
980
+ negoziante
981
+ storia
982
+ controllato
983
+ quando
984
+ sottoscrivere
985
+ notare
986
+ incremento
987
+ sostanziale
988
+ facilitare
989
+ enormemente
990
+ trasferimento
991
+ archivio
992
+ risolutivo
993
+ gestere
994
+ PIN
995
+ bancomat
996
+ urgente
997
+ prelevare
998
+ contante
999
+ impostare
1000
+ centralizzare
1001
+ riducire
1002
+ hardware
1003
+ reattività
1004
+ contare
1005
+ mangiare
1006
+ Matteo
1007
+ passo
1008
+ settore
1009
+ telecomunicazione
1010
  valore
1011
+ aggiunto
1012
+ notevole
1013
+ flusso
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1014
  difficile
1015
+ chiamata
1016
+ difetto
1017
+ produrre
1018
+ tratto
1019
+ distintivo
1020
+ rinnovare
1021
+ fornitura
1022
  altro
1023
+ tre
1024
+ performante
1025
+ crescita
1026
+ organico
1027
+ plauso
1028
+ dolcezza
1029
+ signore
1030
+ blackout
1031
+ grandissima
1032
+ debole
1033
+ operato
1034
+ mix
1035
+ calore
1036
+ scompore
1037
+ contabile
1038
+ ineccepibile
1039
+ canale
1040
+ antenna
1041
+ lavatrice
1042
+ allagare
1043
+ bagno
1044
+ domenica
1045
+ mattina
1046
+ idraulico
1047
+ emergenza
1048
+ mezzo
1049
+ volto
1050
+ check
1051
+ complicazione
1052
+ setup
1053
+ iniziale
1054
+ bagaglio
1055
+ smarrire
1056
+ scalo
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1057
  internazionale
1058
+ rivedere
1059
+ aereo
1060
+ localizzare
1061
+ consegnare
1062
+ seguente
1063
+ pasticcio
1064
+ accedere
1065
+ credenziale
1066
+ stamattina
1067
+ banca
1068
+ crashare
1069
+ provare
1070
+ bonifico
1071
+ sviluppatore
1072
+ rilasciare
1073
+ aggiornamento
1074
+ richiamare
1075
+ scorteso
1076
+ anzi
1077
+ processare
1078
+ tecnica
1079
+ indiscutibile
1080
+ complimenti
1081
+ nascondere
1082
+ IP
1083
+ trasmettere
1084
+ portabilità
1085
+ numero
1086
+ troppo
1087
+ spam
1088
+ filtro
1089
+ domiciliazione
1090
+ fine
1091
+ Corretti
1092
+ settimana
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1093
  riscaldamento
1094
+ smettere
1095
+ ondata
1096
+ gelo
1097
+ forte
1098
+ pezzo
1099
+ difettoso
1100
+ attesa
1101
+ inesistente
1102
+ panico
1103
+ commerce
1104
+ offline
1105
+ Black
1106
+ friday
1107
+ vendita
1108
+ interferenza
1109
+ cavo
1110
+ tardo
1111
+ scheggia
1112
+ transizione
1113
+ esemplare
1114
+ minimizzare
1115
+ qualsiasi
1116
+ impatto
1117
+ giornaliero
1118
+ particolarmente
1119
+ applicativo
1120
+ cloud
1121
+ infiltrazione
1122
+ acqua
1123
+ soffitto
1124
+ rovinare
1125
+ parquet
1126
+ amministratore
1127
+ condominio
1128
+ cadere
1129
+ multa
1130
+ ingiusta
1131
+ tagliando
1132
+ parcheggio
1133
+ scivolare
1134
+ sedile
1135
+ contestazione
1136
+ ragionevole
1137
+ annullare
1138
+ sanzione
1139
+ foto
1140
+ dolco
1141
+ anziano
1142
+ puntualità
1143
+ sopralluogo
1144
+ garantito
1145
+ effettivo
1146
+ molteplice
1147
+ video
1148
+ alto
1149
+ definizione
1150
+ simultaneamente
1151
+ Raga
1152
+ rateale
1153
+ doppio
1154
+ telefonata
1155
+ rivale
1156
+ mercato
1157
+ attuale
1158
+ giusto
1159
+ nome
1160
+ digitazione
1161
+ correggere
1162
+ gratuitamente
1163
+ nessun
1164
+ motivo
1165
+ disdetta
1166
+ ragazza
1167
+ finire
1168
+ stupire
1169
+ positivo
1170
+ preparato
1171
+ confuso
1172
+ tranquillità
1173
+ partnership
1174
+ instaurato
1175
+ avanguardia
1176
+ livello
1177
+ indipendentemente
1178
+ momentaneo
1179
+ interrompere
1180
+ pieno
1181
+ regime
1182
+ traccia
1183
+ ieri
1184
+ lasciare
1185
+ disordine
1186
+ sessione
1187
+ formazione
1188
+ eroghare
1189
+ deluso
1190
+ flessibile
1191
+ adattare
1192
+ dinamica
1193
+ mutevole
1194
+ tanto
1195
+ confusione
1196
+ procedere
1197
+ hosting
1198
+ piattaforma
1199
+ eseguire
1200
+ pianificazione
1201
+ unificato
1202
+ risparmiare
1203
+ VoIP
1204
+ interaziendale
1205
+ fruscii
1206
+ caduta
1207
+ centralino
1208
+ brevo
1209
+ operazione
1210
+ flessibilità
1211
+ base
1212
+ picco
1213
+ stagionale
1214
+ loggare
1215
+ blocco
1216
+ vaccino
1217
+ sanitario
1218
+ sportello
1219
+ urgenza
1220
+ inserire
1221
+ manualmente
1222
+ lista
1223
+ operare
1224
+ finanziario
1225
+ timore
1226
+ disconnessione
1227
+ improvviso
1228
+ customer
1229
+ caro
1230
+ piccolo
1231
+ regalo
1232
+ personalizzato
1233
  scrivere
1234
+ sopra
1235
+ venditore
1236
+ rifare
1237
+ zero
1238
+ spedire
1239
+ corriere
1240
+ espresso
1241
+ fatica
1242
+ ottenere
1243
+ disperare
1244
+ importante
1245
+ elettronica
1246
+ usare
1247
+ specifico
1248
+ mandiare
1249
+ mail
1250
+ imperfezione
1251
+ disperso
1252
+ finora
1253
+ attendere
1254
+ Modulistica
1255
+ osso
1256
+ semplicemente
1257
+ accessorio
1258
+ parecchio
1259
+ dominio
1260
+ pannello
1261
+ controllo
1262
+ registrar
1263
+ rinnovo
1264
+ solido
1265
+ implementazione
1266
+ ERP
1267
+ basato
1268
+ preparazione
1269
+ zona
1270
+ promozione
1271
+ consigliere
1272
+
1273
+ caffè
1274
+ creare
1275
+ collega
1276
+ mattinata
1277
+ scorta
1278
+ cialde
1279
+ omaggio
1280
+ impressionante
1281
+ esperienza
1282
+ pacchetto
1283
+ enterprise
1284
+ sottoscritto
1285
+ decisamente
1286
+ vantaggioso
1287
+ rispetto
1288
+ inizio
1289
+ Velocità
1290
+ pazzesco
1291
+ Paolo
1292
+ meritare
1293
+ assoluto
1294
+ partire
1295
+ abbonamento
1296
+ rivista
1297
+ abbonamente
1298
+ database
1299
+ arretrato
1300
+ videochiamata
1301
+ sacco
1302
+ limite
1303
+ commovente
1304
+ ombra
1305
+ Pensavo
1306
+ hard
1307
+ disk
1308
+ esterno
1309
+ accidentale
1310
+ fortunatamente
1311
+ centro
1312
+ singolo
1313
+ file
1314
+ scortesia
1315
+ totalmente
1316
+ disagi
1317
  struttura
1318
+ organizzativo
1319
+ effettuare
1320
+ notturno
1321
+ timeout
1322
+ netto
1323
+ miglioramento
1324
+ VPN
1325
+ dipendente
1326
+ feedback
1327
+ avanzamento
1328
+ tantissimo
1329
+ password
1330
+ procedure
1331
+ altrove
1332
+ istantaneo
1333
+ interfaccia
1334
+ binomio
1335
+ cambierei
1336
+ simile
1337
+ fulmineo
1338
+ agio
1339
+ delizioso
1340
+ centrale
1341
+ significativo
1342
+ partner
1343
+ passato
1344
+ distinto
1345
+ parte
1346
+ rassicurante
1347
+ tentativo
1348
+ fallito
1349
+ danneggiato
1350
+ frustrato
1351
+ compleanno
1352
+ forno
1353
+ vetro
1354
+ rotto
1355
+ causa
1356
+ trasporto
1357
+ produttore
1358
+ serissimo
1359
+ dispositivo
1360
+ surriscaldare
1361
+ mostruoso
1362
+ pentire
1363
+ secondo
1364
+ approfondita
1365
+ problematico
1366
+ routing
1367
+ operatività
1368
+ mago
1369
+ cuore
1370
+ sollecito
1371
+ FTTH
1372
+ portare
1373
+ superiore
1374
+ interpretare
1375
+ scalabile
1376
+ acquisto
1377
+ pensiero
1378
+ cura
1379
  rabbia
1380
+ olimpico
1381
+ azzerare
1382
+ sincronizzazione
1383
+ fallivo
1384
+ fedele
1385
+ preventivo
1386
+ Alessandro
1387
+ sensibilità
1388
+ comune
1389
+ saltare
1390
+ segnalazione
1391
+ driver
1392
+ serata
1393
+ evasione
1394
+ potenziamento
1395
+ sorprendente
1396
+ raggiungibile
1397
+ lungo
1398
+ consumer
1399
+ piacevolmente
1400
+ sorprendere
1401
+ stimare
1402
+ contrattualmente
1403
+ ultra
1404
+ pesante
1405
+ ambito
1406
+ multimediale
1407
+ virgola
1408
+ posto
1409
+ costringere
1410
+ fedeltà
1411
+ premiare
1412
+ pessima
1413
+ profondamente
1414
+ fondazione
1415
+ merito
1416
+ rimpallare
1417
+ entro
1418
+ consideratemi
1419
+ ex
1420
+ Siere
1421
+ ladre
1422
+ piovere
1423
+ aveto
1424
+ spegnere
1425
+ riavvi
1426
+ manuale
1427
+ sostenere
1428
+ normale
1429
+ usura
1430
+ rifiutare
1431
+ Rispondono
1432
+ svogliato
1433
+ stere
1434
+ favore
1435
+ peggiorare
1436
+ storico
1437
+ giustificare
1438
+ dispiacere
1439
+ decente
1440
+ intestazione
1441
+ Continuo
1442
+ però
1443
+ scalare
1444
+ successivo
1445
+ addebito
1446
+ viaggare
1447
+ binario
1448
+ separato
1449
+ Zero
1450
+ fossare
1451
+ assurdo
1452
+ pari
1453
+ pessimo
1454
+ svegliare
1455
+ gentilissima
1456
+ unilateralmente
1457
+ pago
1458
+ capace
1459
+ rosso
1460
+ giurare
1461
+ port
1462
+ forwarding
1463
+ firmware
1464
+ impedire
1465
+ modifica
1466
+ admin
1467
+ peggiore
1468
+ occupare
1469
+ capiscapere
1470
  soldo
1471
+ legale
1472
+ furioso
1473
+ Continuare
1474
+ stimato
1475
+ presunto
1476
+ regolarmente
1477
+ autolettura
1478
+ differenza
1479
+ attenzione
1480
+ Sto
1481
+ scorso
1482
+ grado
1483
+ aggiornare
1484
+ dobbiate
1485
+ puro
1486
+ rigidità
1487
+ fallire
1488
+ ritrovare
1489
+ provvisorio
1490
+ conoscere
1491
+ disattivato
1492
+ passare
1493
+ entrambi
1494
+ responsabilità
1495
+ rimango
1496
+ isolato
1497
+ comprensione
1498
+ lingua
1499
+ italiano
1500
+ fisso
1501
+ muto
1502
+ isolare
1503
+ mondo
1504
+ vergogna
1505
+ loco
1506
+ controllare
1507
+ irrisolto
1508
+ insoluto
1509
+ intenzione
1510
+ restituire
1511
+ sospendere
1512
+ periodo
1513
+ rientro
1514
+ fatturare
1515
+ sospensione
1516
+ congelare
1517
+ accumulare
1518
+ indicato
1519
+ eppure
1520
+ interesse
1521
+ mora
1522
  ritardato
1523
+ penalizzare
1524
+ fa
1525
+ Qualità
1526
+ fiducia
1527
+ dodici
1528
+ Procederò
1529
+ cancellazione
1530
+ chiederare
1531
+ disastro
1532
+ dirigere
1533
+ disguido
1534
+ comportamento
1535
+ inaccettabile
1536
+ spingere
1537
+ alternativa
1538
+ vuoto
1539
+ realtà
1540
+ presentare
1541
+ appuntamento
1542
+ concordato
1543
+ prendere
1544
+ feria
1545
+ beffa
1546
+ cinque
1547
+ tollerare
1548
+ mancanza
1549
+ appena
1550
+ alzare
1551
+ disperazione
1552
+ cauzione
1553
+ versare
1554
+ definitivo
1555
+ trattenere
1556
+ indebitamente
1557
+ illegale
1558
+ procedare
1559
+ finta
1560
+ giù
1561
+ atmosfera
1562
+ funerale
1563
+ valido
1564
+ disturbare
1565
+ urlare
1566
+ quindici
1567
+ ingiustificato
1568
+ doccia
1569
+ freddo
1570
+ contattare
1571
+ intendere
1572
+ accettare
1573
+ unilaterale
1574
+ vendere
1575
+ tirare
1576
+ doppino
1577
+ rame
1578
+ truffare
1579
+ tecnologia
1580
+ DSL
1581
+ esaustivo
1582
+ Manca
1583
+ serietà
1584
+ vincere
1585
+ premio
1586
+ decisione
1587
+ orribile
1588
+ truffa
1589
+ gravo
1590
+ serio
1591
+ rimbalzare
1592
+ recesso
1593
  scadente
1594
+ ridicolo
1595
+ assente
1596
+ sgarbatezza
1597
+ inaudito
1598
+ vario
1599
+ puzza
1600
+ fregatura
1601
+ Risposta
1602
+ preconfezionato
1603
+ idea
1604
+ luglio
1605
+ vergognoso
1606
+ ammissibile
1607
+ prolungare
1608
+ avviso
1609
+ colpa
1610
+ incompetenza
1611
+ promessa
1612
+ mostrare
1613
+ allarme
1614
+ tilt
1615
+ mere
1616
+ preavviso
1617
+ priorità
1618
+ residenziale
1619
+ debolo
1620
+ stanza
1621
+ verifica
1622
+ sgarbatamente
1623
+ ripetitore
1624
  appartamento
1625
+ metro
1626
+ quadro
1627
+ fermacarte
1628
+ corrente
1629
+ indicare
1630
+ PDF
1631
+ email
1632
+ lamentare
1633
+ imbarazzante
1634
+ spendere
1635
+ euro
1636
+ musichetta
1637
+ wifi
1638
+ combinare
1639
+ successa
1640
+ sappia
1641
+ vengo
1642
+ ricontattare
1643
+ responsabile
1644
+ Voglio
1645
+ impegno
1646
+ guaio
1647
+ firmare
1648
+ Bellissima
1649
+ peccato
1650
+ capiscere
1651
+ abbonare
1652
+ sorvolare
1653
+ imperdonabile
1654
+ credere
1655
+ cambierò
1656
+ dovreste
1657
+ aumentare
1658
+ maleducazione
1659
+ goccia
1660
+ traboccare
1661
+ vaso
1662
+ lunedì
1663
+ LTE
1664
+ improvvisamente
1665
+ cella
1666
+ campagna
1667
+ durare
1668
+ posizione
1669
+ armeggiare
1670
+ spalluccia
1671
+ peggio
1672
+ continuo
1673
+ residuo
1674
+ giro
1675
+ consiglierei
1676
+ peggior
1677
+ nemico
1678
+ ricalcolare
1679
+ domani
1680
+ Parlano
1681
+ raccomandare
1682
+ ormai
1683
+ cartacea
1684
+ cabina
1685
+ stradale
1686
+ buca
1687
+ strada
1688
+ aperto
1689
+ transennato
1690
+ pagina
1691
+ metà
1692
+ capitare
1693
+ sufficienza
1694
+ considerazione
1695
+ sim
1696
+ superare
1697
+ soglia
1698
+ esistere
1699
+ illimitato
1700
+ screenshot
1701
+ ignorare
1702
+ disorganizzato
1703
+ instabile
1704
+ partecipare
1705
+ disconnimere
1706
+ log
1707
+ messaggio
1708
+ preimpostato
1709
+ conciliazione
1710
+ stabilire
1711
+ bollettino
1712
+ postale
1713
+ minaccia
1714
+ applauso
1715
+ terzo
1716
+ fruscio
1717
+ ADSL
1718
+ segnalare
1719
+ test
1720
+ parametro
1721
+ norma
1722
+ Geniale
1723
+ Pessima
1724
+ State
1725
+ finto
1726
+ ko
1727
+ parola
1728
+ vento
1729
+ quaranta
1730
+ sostitutivo
1731
+ destinazione
1732
+ recita
1733
+ sincerità
1734
+ optional
1735
+ Vergognoso
1736
+ ricevuto
1737
+ chiudono
1738
+ Cliente
1739
+ terze
1740
+ riguardo
1741
+ Trovo
1742
+ legalità
1743
+ pretere
1744
+ ricalcolo
1745
+ illimitare
1746
+ pagherò
1747
  prevedere
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1748
  accettabile
1749
+ decennale
1750
+ incompetente
1751
+ Avete
1752
+ presto
1753
+ perderete
1754
+ muro
1755
+ scappare
1756
+ puntualmente
1757
+ esiterò
1758
+ parabola
1759
+ tetto
1760
+ precario
1761
+ completo
1762
+ pericolo
1763
+ tempistica
1764
+ tassa
1765
+ incluso
1766
+ calcolare
1767
+ riconoscare
1768
+ estratto
1769
+ promettere
1770
+ indirizzo
1771
+ causandomi
1772
+ relativo
1773
+ anagrafico
1774
+ giardino
1775
+ condominiale
1776
+ tranciare
1777
+ interrato
1778
+ profondità
1779
+ chirurgico
1780
+ IVA
1781
+ tassare
1782
+ affidare
1783
+ weekend
1784
+ frustrante
1785
+ bastare
1786
+ script
1787
+ ragione
1788
+ gratuito
1789
+ pattuire
1790
+ aggiungere
1791
+ assicurazione
1792
+ esplicitamente
1793
+ opzionale
1794
+ firma
1795
+ consenso
1796
+ registrato
1797
+ incomprensibile
1798
+ codico
1799
+ corrispondere
1800
+ descrivere
1801
+ apposta
1802
+ autorizzazione
1803
+ proponere
1804
+ ricatto
1805
+ dritto
1806
+ braccio
1807
+ geniale
1808
+ tasto
1809
+ accanto
1810
+ Fantastico
1811
+ cibo
1812
+ sapore
1813
+ cartone
1814
+ resettare
1815
+ successo
1816
+ stufo
1817
+ addirittura
1818
+ avviare
1819
+ costare
1820
+ rene
1821
+ nero
1822
+ disattivazione
1823
+ delibera
1824
+ autorità
1825
+ garante
1826
+ segnalerò
1827
+ abuso
1828
+ organo
1829
+ tutela
1830
+ consumatore
1831
+ scoperto
1832
+ penzolare
1833
+ salotto
1834
+ canalina
1835
+ adatto
1836
+ completare
1837
+ estetico
1838
+ standard
1839
+ simpatia
1840
+ commesso
1841
+ mordere
1842
+ normalità
1843
+ ventiquattro
1844
+ Led
1845
+ lampeggiare
1846
+ contenere
1847
+ generico
1848
+ riscontro
1849
+ originale
1850
+ analitico
1851
+ saldo
1852
+ gravità
1853
  scioccare
1854
+ specialmente
1855
+ considerare
1856
+ sette
1857
+ scusa
1858
+ porto
1859
+ decesso
1860
+ intestatario
1861
+ defunto
1862
+ organizzazione
1863
+ fornito
1864
+ intanto
1865
+ Risolvete
1866
+ includere
1867
+
1868
+ autorizzare
1869
+ Esigo
1870
+ storno
1871
+ somma
1872
+ futuro
1873
+ anticipare
1874
+ possibilità
1875
+ disdire
1876
+ associazione
1877
+ ricevare
1878
+ sgarbato
1879
+ pace
1880
+ consecutivo
1881
+ aderire
1882
+ adeguamento
1883
+ inflazione
1884
+ pubblicità
1885
+ ingannevole
1886
+ violazione
1887
+ palese
1888
+ scala
1889
+ cassetta
1890
+ derivazione
1891
+ attrezzato
1892
+ sporcare
1893
+ pavimento
1894
+ poi
1895
+ scocciare
1896
+ pomeriggio
1897
+ SMS
1898
+ quindi
1899
+ decidere
1900
+ abitazione
1901
+ riagganciare
1902
+ quattordici
1903
+ ringraziamento
1904
+ scortese
1905
+ arrangiare
1906
+ Considerate
1907
+ chiuso
1908
+ richiesti
1909
+ combattere
1910
+ geroglifico
1911
+ antico
1912
  terribile
1913
+ vista
1914
+ fastidio
1915
+ mancato
1916
+ restituzione
1917
+ disinstallare
1918
+ evidentemente
1919
+ registrare
1920
+ ritiro
1921
+ saldare
1922
+ otto
1923
+ implorare
1924
+ sostituzione
1925
+ competitor
1926
+ Chat
1927
+ disconnettere
1928
+ termine
1929
+ vergognare
1930
+ Maleducati
1931
+ pure
1932
+ arrogante
1933
+ Wow
1934
+ imperdibile
1935
+ stipula
1936
+ detrarre
1937
+ attribuire
1938
+ impianto
1939
+ domestico
1940
+ elettricista
1941
+ privato
1942
+ uscire
1943
+ maltempo
1944
+ store
1945
+ insultare
1946
+ sottovoce
1947
+ progresso
1948
+ scherzare
1949
+ Provvederò
1950
+ automatico
1951
+ avanti
1952
+ pagante
1953
+ spostare
1954
+ riaprire
1955
+ fidato
1956
+ sparlare
1957
+ geologico
1958
+ offerto
1959
+ contenuto
1960
+ premium
1961
+ cliccare
1962
+ banner
1963
+ Dovreste
1964
+ default
1965
+ servire
1966
+ Los
1967
+ lampeggiante
1968
+ gioia
1969
+ bot
1970
+ Appena
1971
+ consiglio
1972
+ contestualmente
1973
+ cessazione
1974
+ panoramico
1975
+ cemento
1976
+ irreperibile
1977
+ diciotto
1978
+ lettera
1979
+ messa
1980
+ insulto
1981
+ formale
1982
+ chiudo
1983
+ insoddisfatte
1984
+ evasivo
1985
+ inviato
1986
+ vado
1987
+ conguaglio
1988
+ spropositare
1989
+ consumare
1990
+ Pessimo
1991
+ certo
1992
+ prendire
1993
+ minacciare
1994
+ distacco
1995
+ morire
1996
+ bellissimo
1997
+ detestare
1998
+ spedizione
1999
+ moltiplicare
2000
+ rappresentare
2001
  furto
2002
+ prossimo
2003
+ reclamo
2004
+ persa
2005
+ range
2006
+ extender
2007
+ noleggiare
2008
+ davanti
2009
+ gomma
2010
+ politica
2011
+ arbitrariamente
2012
+ Essere
2013
+ gestore
2014
+ ricevuta
2015
+ Corriere
2016
+ attestare
2017
+ denuncio
2018
+ raddoppiare
2019
+ stufe
2020
+ violare
2021
+ accordo
2022
+ sottoscrizione
2023
+ sostenitore
2024
+ ingiustificabile
2025
+ rammarico
2026
+ lentezzare
2027
+ Formate
2028
+ gente
2029
+ neanche
2030
+ tizio
2031
+ segreteria
2032
+ occulto
2033
+ apparire
2034
+ descrizione
2035
+ ragnatela
2036
+ tocco
2037
+ vintage
2038
+ chic
2039
  incubo
2040
+ statene
2041
+ distruggere
2042
+ Gold
2043
+ prioritario
2044
+ stanco
2045
+ addio
2046
+ inerzia
2047
+ intollerabile
2048
+ principio
2049
+ questione
2050
+ diavolo
2051
+ succedere
2052
+ rapina
2053
+ mano
2054
+ armato
2055
+ contestare
2056
+ tutelare
2057
  praticamente
2058
+ atteggiamento
2059
+ porterò
2060
+ sgradevole
2061
+ lumaca
2062
+ Dovere
2063
+ possiate
2064
+ fenomeno
2065
+ speciale
2066
+ sicuro
2067
+ presenza
2068
+ nn
2069
+ quinto
2070
+ specializzato
2071
+ degnare
2072
+ sollecitare
2073
+ fissare
2074
+ urgenter
2075
+ login
2076
+ leader
2077
+ sai
2078
+ delegare
2079
+ richiamo
2080
  opzione
2081
+ giocare
2082
+ decentemente
2083
+ saturo
2084
+ ammettere
2085
+ aveerm
2086
+ tecnicamente
2087
+ erogare
2088
+ scottare
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2089
  bruciato
2090
+ no
2091
+ insaputa
2092
+ toglietela
2093
+ condividere
2094
+ crollare
2095
+ seriamente
2096
+ copione
2097
+ terminale
2098
+ inutilizzabile
2099
+ risolvete
2100
+ promozionale
2101
+ scaduto
2102
+ trasformandola
2103
+ esplicito
2104
+ scorretto
2105
+ retroattivo
2106
+ argomento
2107
+ Tutto
2108
+ Incluso
2109
+ togliere
2110
+ mega
2111
+ mezza
2112
+ recapito
2113
+ telefonicamente
2114
+ intero
2115
+ pro
2116
+ rata
2117
+ temporis
2118
+ forma
2119
+ allineare
2120
+ insistere
2121
+ rassicurazione
2122
+ Continuano
2123
+ statico
2124
+ fidare
2125
+ delusione
2126
+ transazione
2127
+ numeroso
2128
+ uscita
2129
+ stabilito
2130
+ accreditare
2131
+ xkè
2132
+ attrezzatura
2133
+ corridoio
2134
+ menzogna
2135
+ vantare
2136
+ negare
2137
+ evidenza
2138
+ chiuderare
2139
+ società
2140
+ privatamente
2141
+ proprietà
2142
+ Dovete
2143
+ noleggio
2144
+ oggetto
2145
+ tredici
2146
+ instabilità
2147
+ insostenibile
2148
+ margine
2149
+ capolavoro
2150
+ dormire
2151
+ Pagare
2152
+ tornerò
2153
+ indietro
2154
+ difendere
2155
+ indennizzo
2156
+ chiudare
2157
+ sperare
2158
+ pubblicizzare
2159
+ specchietto
2160
+ allodola
2161
+ riavviare
2162
+ girare
2163
+ tondo
2164
+ battiscopa
2165
+ gliel
2166
+ presa
2167
+ montare
2168
+ storto
2169
+ bimestrale
2170
+ preventivare
2171
+ Avreste
2172
+ variazione
2173
+ periodicità
2174
+ spia
2175
+ assumere
2176
+ ovvio
2177
+ provider
2178
+ modello
2179
+ giga
2180
+ distare
2181
+ chilometro
2182
+ abbonato
2183
+ suicida
2184
+ pec
2185
+ azione
2186
+ decennio
2187
+ esaurire
2188
+ conservo
2189
+ recupero
2190
+ aggressivo
2191
+ aggiornato
2192
+ sopportare
2193
+ policy
2194
+ restrittivo
2195
+ utente
2196
+ incapacità
2197
+ famiglia
2198
+ tradire
2199
+ ridere
2200
+ chef
2201
+ carne
2202
+ carbonizzare
2203
+ taglio
2204
+ prolungato
2205
+ titolare
2206
+ staccare
2207
+ sbagliato
2208
+ vorere
2209
+ malapena
2210
+ truffatore
2211
+ diritto
2212
+ misteriosamente
2213
+ rimandare
2214
+ emissione
2215
+ correttivo
2216
+ concordare
2217
+ rateizzazione
2218
+ spalmare
2219
+ attaccare
2220
  recensione
2221
+ negativo
2222
+ undici
2223
+ sereno
2224
+ ovunque
2225
+ tassazione
2226
+ dovuto
2227
+ commercialista
2228
+ palesemente
2229
+ riuscito
2230
+ intermittente
2231
+ stabilizzare
2232
+ allora
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2233
  minimamente
2234
+ onorato
2235
+ piede
2236
+ momento
2237
+ arrecato
2238
+ disdicare
2239
+ dipendere
2240
+ concreto
2241
+ supponente
2242
+ voglia
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2243
  masticare
2244
+ quattro
2245
+ finché
2246
+ automaticamente
2247
+ capiscare
2248
+ schifare
2249
+ indifferenza
2250
+ migliaio
2251
+ andre
2252
+ vincolo
2253
+ criminale
2254
+ lineo
2255
+ Pretendo
2256
+ fondo
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2257
  causare
2258
+ attere
2259
+ rettificato
2260
+ stratega
2261
+ genio
2262
+ lampada
2263
+ spento
2264
+ Business
2265
+ indifferente
2266
+ chire
2267
+ approssimativo
2268
+ retention
2269
+ Preparatevi
2270
+ incasso
2271
+ rare
2272
+ metodo
2273
+ preferenziale
2274
+ Disdetta
2275
+ sistematicamente
2276
+ sera
2277
+ regolarità
2278
+ crasha
2279
+ capisco
2280
+ rivolgare
2281
+ avvocato
2282
+ madornale
2283
+ superficiale
2284
+ ulteriore
2285
+ vago
2286
  definire
2287
+ onere
2288
+ riferire
2289
+ coordinare
2290
+ compilare
2291
+ modulo
2292
+ inaffidabile
2293
+ modificare
2294
+ forre
2295
+ nove
2296
+ frase
2297
+ macchinetta
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2298
  tardivo
2299
+ rateizzato
2300
+ modalità
2301
+ cassa
2302
+ fortuna
2303
+ suonare
2304
+ chare
2305
+ paralizzare
2306
+ allaccio
2307
+ porre
data/model/binary-classification.h5 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:144360dfcdcd15d00b8fd16e132a4dad758bc4ee93274e0b9784a34ee5d50d82
3
- size 1421232
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cd07e9fa9198888732c0bc05a338b1ef0d1693beb42299fceb00c82171746476
3
+ size 900328
data/model/binary-classification.keras CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a50abd61f0e541056d942290594338f10452c23ea2e26b960a5eba828bae1b64
3
- size 595304
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cd07e9fa9198888732c0bc05a338b1ef0d1693beb42299fceb00c82171746476
3
+ size 900328
data/tokenizer/binary-classification-tokenizer.json CHANGED
The diff for this file is too large to render. See raw diff
 
modules/binary_classification.py CHANGED
@@ -6,10 +6,10 @@ import nltk
6
  import modules.utilities.utils as utils
7
 
8
  BASE_PATH = './data/'
9
- VOCAB = BASE_PATH + 'vocab.txt'
10
- MODEL = BASE_PATH + 'model/'
11
  WEIGHTS = BASE_PATH + 'weights/'
12
- TOKEN = BASE_PATH + 'tokenizer/'
13
 
14
  def init():
15
  nltk.download('stopwords')
@@ -33,20 +33,24 @@ def splitWords(l):
33
  yield from words.split()
34
 
35
  def clean_doc(doc):
36
- # split into tokens by white space
 
37
  tokens = doc.split()
38
- # prepare regex for char filtering
39
- #re_punc = re.compile('[%s]' % re.escape(string.punctuation)) # remove punctuation from each word
40
- #tokens = [re_punc.sub('', w) for w in tokens]
41
  tokens = [re.sub(r'[^\w\s]', ' ', w) for w in tokens]
 
42
  tokens = list(splitWords(tokens))
43
- # remove remaining tokens that are not alphabetic
44
  tokens = [word for word in tokens if word.isalpha()]
45
- # filter out stop words
46
  stop_words = set(stopwords.words('italian'))
47
- tokens = [w for w in tokens if not w in stop_words]
48
- # filter out short tokens
49
- tokens = [word for word in tokens if len(word) > 2]
 
 
 
 
50
  return tokens
51
 
52
  def predict_sentiment(review, vocab, tokenizer, model):
@@ -57,7 +61,7 @@ def predict_sentiment(review, vocab, tokenizer, model):
57
  # convert to line
58
  line = ' '.join(tokens)
59
  # encode
60
- encoded = tokenizer.texts_to_matrix([line], mode='binary')
61
  # predict sentiment
62
  yhat = model.predict(encoded, verbose=0)
63
  # retrieve predicted percentage and label
@@ -80,14 +84,12 @@ def predict(model_path, weights_path, tokenizer_path, text, debug) :
80
 
81
  def binary_classification(text):
82
  init()
83
- model = MODEL + 'binary-classification.h5'
84
  weights = ''
85
- tokenizer = TOKEN + 'binary-classification-tokenizer.json'
86
  try:
87
  if(text == "") : raise Exception
88
  except :
89
  return {"error": "Sentence is required"}, 415
90
- doc, sentiment, percent = predict(model, weights, tokenizer, text, False)
91
  positive = 0
92
  negative = 0
93
  if(sentiment == 'POSITIVE'):
 
6
  import modules.utilities.utils as utils
7
 
8
  BASE_PATH = './data/'
9
+ VOCAB = BASE_PATH + 'binary-classification-vocab.txt'
10
+ MODEL = BASE_PATH + 'model/binary-classification.h5'
11
  WEIGHTS = BASE_PATH + 'weights/'
12
+ TOKEN = BASE_PATH + 'tokenizer/binary-classification-tokenizer.json'
13
 
14
  def init():
15
  nltk.download('stopwords')
 
33
  yield from words.split()
34
 
35
  def clean_doc(doc):
36
+ # 1. Pulizia Standard
37
+ doc = lemma_text(doc)
38
  tokens = doc.split()
39
+ # Rimuovi punteggiatura
 
 
40
  tokens = [re.sub(r'[^\w\s]', ' ', w) for w in tokens]
41
+ # Flattening della lista se splitWords ha creato sottoliste
42
  tokens = list(splitWords(tokens))
43
+ # Solo alfabetici
44
  tokens = [word for word in tokens if word.isalpha()]
45
+ # 2. STOPWORDS INTELLIGENTI
46
  stop_words = set(stopwords.words('italian'))
47
+ # Parole da SALVARE (Whitelist)
48
+ whitelist = {'non', 'né', 'ne', 'mai', 'nessuno', 'niente', 'nulla', 'contro', 'senza'}
49
+ final_stop_words = stop_words - whitelist
50
+ # Filtra
51
+ tokens = [w for w in tokens if not w in final_stop_words]
52
+ # Accetta parole anche di 2 lettere (es. "ne", "no")
53
+ tokens = [word for word in tokens if len(word) > 1]
54
  return tokens
55
 
56
  def predict_sentiment(review, vocab, tokenizer, model):
 
61
  # convert to line
62
  line = ' '.join(tokens)
63
  # encode
64
+ encoded = tokenizer.texts_to_matrix([line], mode='tfidf')
65
  # predict sentiment
66
  yhat = model.predict(encoded, verbose=0)
67
  # retrieve predicted percentage and label
 
84
 
85
  def binary_classification(text):
86
  init()
 
87
  weights = ''
 
88
  try:
89
  if(text == "") : raise Exception
90
  except :
91
  return {"error": "Sentence is required"}, 415
92
+ doc, sentiment, percent = predict(MODEL, weights, TOKEN, text, False)
93
  positive = 0
94
  negative = 0
95
  if(sentiment == 'POSITIVE'):
modules/bpo_dispatcher.py CHANGED
@@ -133,41 +133,65 @@ class BPODispatcher:
133
  Combina la gravità del problema con lo stato d'animo del cliente.
134
  """
135
  urgency = "Bassa"
 
136
 
137
- # 1. Analisi Sentiment (Se disponibile)
138
  sentiment_score_neg = 0.0
 
 
139
  if binary_classification:
140
  try:
141
- # binary_classification restituisce un dict {'POSITIVE': 0.x, 'NEGATIVE': 0.y}
142
  sent_result = binary_classification(text)
143
- sentiment_score_neg = sent_result.get('NEGATIVE', 0.0)
 
144
  except Exception:
145
- sentiment_score_neg = 0.5 # Fallback neutro
146
-
147
- # 2. Matrice Decisionale
148
 
 
 
149
  # CASO A: CHURN (Disdetta) -> Sempre Critico
 
150
  if intent_label == "Retention / Churn Risk":
151
  return "CRITICA (Rischio Abbandono)"
152
 
153
  # CASO B: SUPPORTO TECNICO
154
  elif intent_label == "Supporto Tecnico":
155
- if sentiment_score_neg > 0.9: # Molto arrabbiato
 
156
  return "ALTA (Tecnico + Cliente Furioso)"
157
- elif "fermo" in text.lower() or "blocco" in text.lower():
 
 
 
158
  return "ALTA (Fermo Servizio)"
 
 
 
159
  else:
 
160
  return "MEDIA (Guasto Standard)"
161
 
162
- # CASO C: AMMINISTRAZIONE
163
  elif intent_label == "Amministrazione / Billing":
164
- if sentiment_score_neg > 0.95: # Furioso per i soldi
 
165
  return "ALTA (Contestazione Aggressiva)"
166
- elif "scadenza" in text.lower() or "stacco" in text.lower():
 
 
 
 
 
167
  return "MEDIA (Rischio Amministrativo)"
168
  else:
169
  return "BASSA (Info / Richiesta)"
170
 
 
 
 
 
 
 
171
  return urgency
172
 
173
  def predict(self, text):
 
133
  Combina la gravità del problema con lo stato d'animo del cliente.
134
  """
135
  urgency = "Bassa"
136
+ text_lower = text.lower()
137
 
138
+ # 1. Analisi Sentiment
139
  sentiment_score_neg = 0.0
140
+ sentiment_score_pos = 0.0
141
+
142
  if binary_classification:
143
  try:
 
144
  sent_result = binary_classification(text)
145
+ sentiment_score_neg = float(sent_result.get('negative', 0.0))
146
+ sentiment_score_pos = float(sent_result.get('positive', 0.0))
147
  except Exception:
148
+ sentiment_score_neg = 0.5 # Fallback neutro
 
 
149
 
150
+ # --- LOGICA DECISIONALE ---
151
+
152
  # CASO A: CHURN (Disdetta) -> Sempre Critico
153
+ # Indipendentemente dal tono, se uno vuole andare via è priorità assoluta.
154
  if intent_label == "Retention / Churn Risk":
155
  return "CRITICA (Rischio Abbandono)"
156
 
157
  # CASO B: SUPPORTO TECNICO
158
  elif intent_label == "Supporto Tecnico":
159
+ # Se il cliente è FURIOSO
160
+ if sentiment_score_neg > 0.9:
161
  return "ALTA (Tecnico + Cliente Furioso)"
162
+ elif sentiment_score_neg > 0.8:
163
+ return "MEDIA (Tecnico + Cliente Irritato)"
164
+ # Keywords critiche (Fermo tecnico)
165
+ elif any(w in text_lower for w in ["fermo", "blocco", "guasto totale", "non funziona nulla"]):
166
  return "ALTA (Fermo Servizio)"
167
+ # Se il sentiment è chiaramente POSITIVO (es. "Tutto risolto grazie"), abbassiamo l'urgenza
168
+ elif sentiment_score_pos > 0.6:
169
+ return "BASSA (Feedback Positivo / Chiusura)"
170
  else:
171
+ # Caso standard: "Ho un problema col wifi" (Neutro/Lievemente negativo)
172
  return "MEDIA (Guasto Standard)"
173
 
174
+ # CASO C: AMMINISTRAZIONE / BILLING
175
  elif intent_label == "Amministrazione / Billing":
176
+ # Le questioni di soldi scaldano gli animi.
177
+ if sentiment_score_neg > 0.9:
178
  return "ALTA (Contestazione Aggressiva)"
179
+ elif sentiment_score_neg > 0.8:
180
+ return "MEDIA (Cliente Irritato)"
181
+ # Keywords legali/gravi
182
+ elif any(w in text_lower for w in ["truffa", "avvocato", "legale", "denuncia", "stacco"]):
183
+ return "ALTA (Minaccia Legale/Distacco)"
184
+ elif any(w in text_lower for w in ["scadenza", "errore", "sbaglio"]):
185
  return "MEDIA (Rischio Amministrativo)"
186
  else:
187
  return "BASSA (Info / Richiesta)"
188
 
189
+ # Fallback per altri intenti (es. Info Generiche)
190
+ if sentiment_score_neg > 0.9:
191
+ return "MEDIA (Richiesta Generica ma Tono Aggressivo)"
192
+ elif sentiment_score_neg > 0.8:
193
+ return "MEDIA (Richiesta Generica ma Tono Irritato))"
194
+
195
  return urgency
196
 
197
  def predict(self, text):
modules/image_classification.py CHANGED
@@ -1,26 +1,67 @@
1
  import cv2
 
2
  import numpy as np
3
- import keras.models as models
 
 
 
4
 
5
  IMAGE_SIZE = (224, 224)
6
- class_names = ['Tubercolosi', 'No_Tubercolosi', 'Pneumonia', 'No_Pneumonia']
7
- BASE_PATH = './data/'
8
- MODEL = BASE_PATH + 'model/'
9
-
10
- def image_predict(numpy_image, model_path):
11
- image = cv2.resize(numpy_image, IMAGE_SIZE)
12
- images = []
13
- images.append(image)
14
- images = np.array(images, dtype='float32')
15
- model = models.load_model(model_path, compile=False)
16
- predictions = model.predict(images) # Vector of probabilities
17
- #pred_labels = np.argmax(predictions, axis= 1)
18
- return predictions#, pred_labels
19
-
20
- def image_classification(numpy_image):
21
- model = MODEL + 'medical-image-classification.h5'
22
- labels = image_predict(numpy_image, model)
23
- response = {}
24
- for i, label in enumerate(labels[0]):
25
- response[class_names[i]] = "%.4f" % float(label)
26
- return response
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import cv2
2
+ import os
3
  import numpy as np
4
+ from keras.models import load_model
5
+
6
+ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
7
+ MODEL_PATH = os.path.join(BASE_DIR, 'data', 'model', 'medical-image-classification.h5')
8
 
9
  IMAGE_SIZE = (224, 224)
10
+ CLASS_MAP = {
11
+ 'Tubercolosi': '⚠️ Rischio Tubercolosi',
12
+ 'No_Tubercolosi': '✅ Negativo per Tubercolosi',
13
+ 'Pneumonia': '⚠️ Rischio Polmonite',
14
+ 'No_Pneumonia': '✅ Negativo per Polmonite',
15
+ 'No_immagine' : '⚠️ Nessuna immagine caricata'
16
+ }
17
+
18
+ RAW_CLASSES = ['Tubercolosi', 'No_Tubercolosi', 'Pneumonia', 'No_Pneumonia']
19
+
20
+ # Caricamento Singleton (lo carichiamo una volta sola)
21
+ model = None
22
+
23
+ def load_resources():
24
+ global model
25
+ if model is None and os.path.exists(MODEL_PATH):
26
+ try:
27
+ print(f"Caricamento modello X-Ray da {MODEL_PATH}...")
28
+ model = load_model(MODEL_PATH, compile=False)
29
+ print("✅ Modello X-Ray caricato.")
30
+ except Exception as e:
31
+ print(f"❌ Errore caricamento modello X-Ray: {e}")
32
+
33
+ # Inizializziamo subito
34
+ load_resources()
35
+
36
+ def image_classification(image_array):
37
+ print(image_array)
38
+ """
39
+ Analizza un'immagine radiografica (numpy array) e restituisce le probabilità.
40
+ """
41
+ if model is None:
42
+ return {"Errore": "Modello non disponibile (Verifica il percorso file)"}
43
+ if image_array is None:
44
+ response = {}
45
+ user_label = CLASS_MAP.get('No_immagine', 'No_immagine')
46
+ response[user_label] = 0.0
47
+ return response
48
+ try:
49
+ # 1. Preprocessing Immagine
50
+ # Resize a 224x224 come richiesto dal modello
51
+ img_resized = cv2.resize(image_array, IMAGE_SIZE)
52
+ # Normalizzazione / Espansione dimensioni per il batch
53
+ img_batch = np.expand_dims(img_resized, axis=0).astype('float32')
54
+ # 2. Predizione
55
+ predictions = model.predict(img_batch, verbose=0)[0]
56
+ # 3. Formattazione Output
57
+ response = {}
58
+ for i, prob in enumerate(predictions):
59
+ raw_label = RAW_CLASSES[i]
60
+ user_label = CLASS_MAP.get(raw_label, raw_label)
61
+ response[user_label] = float(prob)
62
+ print(response)
63
+ return response
64
+
65
+ except Exception as e:
66
+ print(f"Errore durante l'analisi immagine: {e}")
67
+ return {"Errore di Analisi": 0.0}
modules/multilabel_classification.py CHANGED
@@ -1,37 +1,59 @@
 
 
 
1
  from keras_preprocessing.sequence import pad_sequences
2
- import modules.utilities.utils as utils
3
- import keras.models as models
4
- import numpy as np
5
 
6
- BASE_PATH = './data/'
7
- MODEL = BASE_PATH + 'model/'
8
- TOKEN = BASE_PATH + 'tokenizer/'
9
 
10
- class_names = np.array(['Economia', 'Politica', 'Scienza_e_tecnica', 'Sport', 'Storia'])
11
 
12
- def predict(model_path, tokenizer_path, sentence):
13
- tokenizer = utils.load_tokenizer(tokenizer_path)
14
- x_data = []
15
- x_data.append(sentence)
16
- x_tokenized = tokenizer.texts_to_sequences(x_data)
17
- new_x_tokenized = []
18
- for x_token in x_tokenized[0]:
19
- if(x_token is None):
20
- x_token = 1
21
- new_x_tokenized.append(x_token)
22
- x_tokenized = [new_x_tokenized]
23
- x_pad = pad_sequences(x_tokenized, maxlen=200)
24
- x_t = x_pad[0]
25
- model = models.load_model(model_path, compile=False)
26
- prediction = model.predict(np.array([x_t]))
27
- #predicted_label = class_names[np.argmax(prediction[0])]
28
- return prediction#, predicted_label
 
 
 
 
29
 
30
  def multi_classification(text):
31
- model = MODEL + 'multi-classification.h5'
32
- tokenizer = TOKEN + 'multi-classification-tokenizer.json'
33
- labels = predict(model, tokenizer, text)
34
- response = {}
35
- for i, label in enumerate(labels[0]):
36
- response[class_names[i]] = "%.4f" % float(label)
37
- return response
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ from keras.models import load_model
4
  from keras_preprocessing.sequence import pad_sequences
5
+ from keras.preprocessing.text import tokenizer_from_json
 
 
6
 
7
+ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Risale alla root
8
+ MODEL_PATH = os.path.join(BASE_DIR, 'data', 'model', 'multi-classification.h5')
9
+ TOKENIZER_PATH = os.path.join(BASE_DIR, 'data', 'tokenizer', 'multi-classification-tokenizer.json')
10
 
11
+ CLASS_NAMES = ['Economia', 'Politica', 'Scienza_e_tecnica', 'Sport', 'Storia']
12
 
13
+ # Caricamento Singleton (lo carichiamo una volta sola)
14
+ model = None
15
+
16
+ def load_resources():
17
+ global model
18
+ if model is None and os.path.exists(MODEL_PATH):
19
+ try:
20
+ # Carica Tokenizer
21
+ with open(TOKENIZER_PATH, 'r') as f:
22
+ tokenizer_data = json.load(f)
23
+ tokenizer = tokenizer_from_json(tokenizer_data)
24
+
25
+ # Carica Modello
26
+ model = load_model(MODEL_PATH, compile=False)
27
+ return model, tokenizer
28
+ except Exception as e:
29
+ print(f"Errore caricamento risorse MultiLabel: {e}")
30
+ return None, None
31
+
32
+ # Carichiamo una volta sola all'avvio (Singleton) per velocità
33
+ model, tokenizer = load_resources()
34
 
35
  def multi_classification(text):
36
+ if model is None or tokenizer is None:
37
+ return {"Errore": "Modello non caricato"}
38
+ try:
39
+ # Preprocessing identico al training
40
+ # 1. Tokenization
41
+ sequences = tokenizer.texts_to_sequences([text])
42
+ new_sequences = []
43
+ for sequence in sequences[0]:
44
+ if(sequence is None):
45
+ sequence = 1
46
+ new_sequences.append(sequence)
47
+ x_new_sequences = [new_sequences]
48
+ # 2. Padding (maxlen=200 come da tuo codice originale)
49
+ data_padded = pad_sequences(x_new_sequences, maxlen=200)
50
+ # 3. Predizione
51
+ prediction = model.predict(data_padded, verbose=0)[0]
52
+ # 4. Formattazione Output per Gradio {Label: Score}
53
+ results = {}
54
+ for i, score in enumerate(prediction):
55
+ label = CLASS_NAMES[i].replace('_', ' ')
56
+ results[label] = float(score)
57
+ return results
58
+ except Exception as e:
59
+ return {f"Errore durante l'analisi: {str(e)}": 0.0}
modules/retina.py CHANGED
@@ -1,29 +1,58 @@
1
- import tensorflow as tf
 
2
  import numpy as np
3
- from keras import utils
4
-
5
-
6
- model = tf.keras.models.load_model("data/model/retina.h5")
7
-
8
-
9
- def predict_diabetic_retinopathy(immagine):
10
- x = utils.img_to_array(immagine)
11
- x = np.expand_dims(x, axis=0)
12
- x = x / 255.0
13
-
14
- prediction = model.predict(x)
15
-
16
- if prediction[0][0] > 0.5:
17
- diagnosis = "Presenza di Retinopatia Diabetica"
18
- else:
19
- diagnosis = "Nessuna retinopatia diabetica"
20
-
21
- percentage = prediction[0][0] * 100
22
- roundedPercentage = round(percentage, 2)
23
- probability = f"{roundedPercentage}%"
24
- #probability = str(prediction[0][0])
25
-
26
- return diagnosis, probability
27
-
28
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
 
1
+ import os
2
+ import cv2
3
  import numpy as np
4
+ from keras.models import load_model
5
+
6
+ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
7
+ MODEL_PATH = os.path.join(BASE_DIR, 'data', 'model', 'retina.h5')
8
+ IMAGE_SIZE = (224, 224) # Standard per la maggior parte delle CNN (VGG/ResNet)
9
+
10
+ model = None
11
+
12
+ def load_resources():
13
+ global model
14
+ if model is None and os.path.exists(MODEL_PATH):
15
+ try:
16
+ print(f"Caricamento modello Retina da {MODEL_PATH}...")
17
+ model = load_model(MODEL_PATH, compile=False)
18
+ print(" Modello Retina caricato.")
19
+ except Exception as e:
20
+ print(f"❌ Errore caricamento modello Retina: {e}")
21
+
22
+ # Caricamento all'avvio
23
+ load_resources()
24
+
25
+ def predict_diabetic_retinopathy(image_array):
26
+ # Restituiamo sempre DUE valori (Diagnosi, Percentuale) anche in caso di errore
27
+ if model is None:
28
+ return "❌ Errore: Modello non trovato", "0%"
29
+
30
+ if image_array is None:
31
+ return "⚠️ Nessuna immagine caricata", "0%"
32
+
33
+ try:
34
+ # 2. PREPROCESSING
35
+ img_resized = cv2.resize(image_array, IMAGE_SIZE)
36
+ img_normalized = img_resized.astype('float32') / 255.0
37
+ img_batch = np.expand_dims(img_normalized, axis=0)
38
+
39
+ # 3. PREDIZIONE
40
+ prediction_score = model.predict(img_batch, verbose=0)[0][0]
41
+ positive_prob = float(prediction_score)
42
+
43
+ # 4. LOGICA DIAGNOSI
44
+ if positive_prob > 0.5:
45
+ diagnosis = "⚠️ Presenza Retinopatia Diabetica"
46
+ else:
47
+ diagnosis = "✅ Nessuna Retinopatia Diabetica"
48
+
49
+ # 5. FORMATTAZIONE PERCENTUALE
50
+ percentage = positive_prob * 100
51
+ probability = f"{percentage:.2f}%" # Formattazione f-string più pulita
52
+
53
+ return diagnosis, probability
54
+
55
+ except Exception as e:
56
+ print(f"Errore analisi retina: {e}")
57
+ return "❌ Errore durante l'analisi", "0%"
58
 
modules/utilities/utils.py CHANGED
@@ -1,14 +1,8 @@
1
  import json
2
- from tensorflow.keras.preprocessing.text import Tokenizer
3
- from tensorflow.keras.preprocessing.text import tokenizer_from_json
4
-
5
- def allowed_model(filename):
6
- return '.' in filename and \
7
- filename.rsplit('.', 1)[1].lower() in {'keras', 'h5'}
8
-
9
- def allowed_tokenizer(filename):
10
- return '.' in filename and \
11
- filename.rsplit('.', 1)[1].lower() in {'json'}
12
 
13
  def load_doc(filename):
14
  # open the file as read only
@@ -24,4 +18,101 @@ def load_tokenizer(tokenizer_path):
24
  data = json.load(f)
25
  tokenizer = Tokenizer()
26
  tokenizer = tokenizer_from_json(data)
27
- return tokenizer
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import json
2
+ import gradio as gr
3
+ import os
4
+ from keras.preprocessing.text import Tokenizer
5
+ from keras.preprocessing.text import tokenizer_from_json
 
 
 
 
 
 
6
 
7
  def load_doc(filename):
8
  # open the file as read only
 
18
  data = json.load(f)
19
  tokenizer = Tokenizer()
20
  tokenizer = tokenizer_from_json(data)
21
+ return tokenizer
22
+
23
+ #### utilità per interfaccia Gradio
24
+
25
+ def global_file_loader(file_data):
26
+ """
27
+ Gestisce il caricamento file dalla Sidebar.
28
+ Supporta sia input stringa (Gradio 5 single) che lista.
29
+ """
30
+ # 1. NORMALIZZAZIONE INPUT (Il Fix Cruciale)
31
+ if isinstance(file_data, list):
32
+ if not file_data:
33
+ return [gr.update() for _ in range(5)]
34
+ file_path = file_data[0]
35
+ else:
36
+ # Se è None o stringa vuota
37
+ if not file_data:
38
+ return [gr.update() for _ in range(5)]
39
+ file_path = file_data # È già la stringa del percorso
40
+
41
+ ext = os.path.splitext(file_path)[1].lower()
42
+
43
+ # Valori di default (non cambiare nulla)
44
+ bpo_update = gr.update()
45
+ img_xray_update = gr.update()
46
+ img_retina_update = gr.update()
47
+ news_update = gr.update()
48
+ sentiment_update = gr.update()
49
+
50
+ try:
51
+ # LOGICA PER IMMAGINI
52
+ if ext in ['.jpg', '.jpeg', '.png', '.bmp', '.tif', '.tiff']:
53
+ # Gradio accetta il path assoluto se è in allowed_paths
54
+ img_xray_update = gr.Image(value=file_path)
55
+ img_retina_update = gr.Image(value=file_path)
56
+
57
+ # LOGICA PER TESTI
58
+ elif ext in ['.txt', '.csv', '.log', '.md', '.json']:
59
+ with open(file_path, "r", encoding="utf-8") as f:
60
+ content = f.read()
61
+
62
+ bpo_update = gr.Textbox(value=content)
63
+ news_update = gr.Textbox(value=content)
64
+ sentiment_update = gr.Textbox(value=content)
65
+
66
+ except Exception as e:
67
+ print(f"Errore lettura file: {e}")
68
+
69
+ return bpo_update, img_xray_update, img_retina_update, news_update, sentiment_update
70
+
71
+ def enable_sidebar(new_root):
72
+ """Mostra la sidebar e aggiorna il path (Per Computer Vision)"""
73
+ return gr.update(visible=True), gr.update(root_dir=new_root), None, None
74
+
75
+ def disable_sidebar():
76
+ """Nasconde la sidebar (Per NLP)"""
77
+ return gr.update(visible=False), gr.update(), None, None
78
+
79
+ def render_ner_html(entities):
80
+ """
81
+ Trasforma la lista [('testo', 'LABEL'), ('testo', None)] in HTML puro.
82
+ """
83
+ # Mappa colori HEX (più belli e moderni)
84
+ colors = {
85
+ "CODICE CLIENTE": "#3b82f6", # Blue 500
86
+ "N. FATTURA": "#f97316", # Orange 500
87
+ "COD. FORNITURA": "#d946ef", # Fuchsia 500
88
+ "EMAIL": "#ef4444", # Red 500
89
+ "TELEFONO": "#06b6d4", # Cyan 500
90
+ "PERSONA": "#22c55e", # Green 500
91
+ "AZIENDA": "#8b5cf6", # Violet 500
92
+ "LUOGO": "#64748b", # Slate 500
93
+ "POSSIBILE ID": "#a8a29e" # Stone 400
94
+ }
95
+
96
+ html = "<div style='line-height: 2.2; font-family: sans-serif; font-size: 16px; color: #334155; background-color: #1e293b'>"
97
+
98
+ for text, label in entities:
99
+ if label:
100
+ # Recupera colore o usa grigio di default
101
+ c = colors.get(label, "#1e293b")
102
+
103
+ # Crea lo "Chip" (Pillola colorata)
104
+ # - bg-color con opacità (c + '20')
105
+ # - border solido
106
+ # - label piccola in grassetto accanto al testo
107
+ html += f"""
108
+ <span style='background-color: {c}20; border: 1px solid {c}; border-radius: 6px; padding: 2px 6px; margin: 0 2px; white-space: nowrap;'>
109
+ <span style='font-size: 0.75em; font-weight: 700; color: {c}; text-transform: uppercase;'>{label}</span>
110
+ <span style='font-weight: 600; color: white; margin-left: 6px;'>{text}</span>
111
+ </span>
112
+ """
113
+ else:
114
+ # Testo normale
115
+ html += text.replace("\n", "<br>") # Gestisce a capo
116
+
117
+ html += "</div>"
118
+ return html
requirements.txt CHANGED
@@ -3,7 +3,7 @@
3
  --extra-index-url https://download.pytorch.org/whl/cpu
4
 
5
  # --- CORE UI ---
6
- gradio==4.44.1
7
  pydantic==2.10.6
8
 
9
  # --- LEGACY STACK (NON TOCCARE - Vincoli rigidi) ---
@@ -16,7 +16,8 @@ Keras-Preprocessing>=1.1.2
16
  # --- Modulo BPO ---
17
  # Grazie alla prima riga, scaricherà la versione CPU-only leggera
18
  torch>=2.0.1
19
- transformers>=4.35.0
 
20
  accelerate>=0.25.0
21
 
22
  # --- DATA & NLP UTILITIES ---
@@ -29,6 +30,8 @@ scikit-learn>=1.3.0
29
  opencv-python-headless
30
 
31
  # --- MODELS & HUB ---
32
- huggingface-hub==0.24.7
 
 
33
  # Link diretto per scaricare il modello Spacy italiano
34
  https://github.com/explosion/spacy-models/releases/download/it_core_news_lg-3.8.0/it_core_news_lg-3.8.0.tar.gz
 
3
  --extra-index-url https://download.pytorch.org/whl/cpu
4
 
5
  # --- CORE UI ---
6
+ gradio>=5.0.0,<6.0.0
7
  pydantic==2.10.6
8
 
9
  # --- LEGACY STACK (NON TOCCARE - Vincoli rigidi) ---
 
16
  # --- Modulo BPO ---
17
  # Grazie alla prima riga, scaricherà la versione CPU-only leggera
18
  torch>=2.0.1
19
+ #transformers>=4.35.0
20
+ transformers>=4.35.0,<4.49.0
21
  accelerate>=0.25.0
22
 
23
  # --- DATA & NLP UTILITIES ---
 
30
  opencv-python-headless
31
 
32
  # --- MODELS & HUB ---
33
+ #huggingface-hub==0.24.7
34
+
35
+ huggingface-hub>=0.24.0,<1.0.0
36
  # Link diretto per scaricare il modello Spacy italiano
37
  https://github.com/explosion/spacy-models/releases/download/it_core_news_lg-3.8.0/it_core_news_lg-3.8.0.tar.gz
style.css ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* --- 1. HEADER & LOGO --- */
2
+ .header-row {
3
+ display: flex !important;
4
+ align-items: flex-end !important;
5
+ gap: 20px !important;
6
+ margin-bottom: 30px !important;
7
+ padding-bottom: 20px;
8
+ border-bottom: 1px solid #e2e8f0;
9
+ }
10
+ .h4-margin{
11
+ margin-left: 4px 6px 6px 4px;
12
+ }
13
+ .logo-container img { margin-bottom: 4px !important; object-fit: contain; }
14
+ .header-text-col h1 {
15
+ font-family: 'Inter', sans-serif !important;
16
+ font-weight: 900 !important;
17
+ font-size: 2.2em !important;
18
+ background: linear-gradient(90deg, #D65DB1 0%, #8B5CF6 50%, #F43F5E 100%);
19
+ -webkit-background-clip: text;
20
+ background-clip: text;
21
+ -webkit-text-fill-color: transparent;
22
+ text-align: left !important;
23
+ margin-bottom: -2px !important;
24
+ padding-bottom: 0 !important;
25
+ line-height: 1.0 !important;
26
+ }
27
+ .header-text-col .subheader {
28
+ text-align: left !important; color: #64748b; font-size: 1.1em; font-weight: 500;
29
+ margin-top: 0 !important; padding-top: 0 !important;
30
+ }
31
+
32
+ /* --- 2. CUSTOM TABS STYLE (DESKTOP) --- */
33
+ .tabs > .tab-nav { border-bottom: none !important; gap: 8px !important; margin-bottom: 15px !important; }
34
+ .tabs > .tab-nav > button {
35
+ border: 1px solid #e5e7eb !important; border-radius: 10px !important;
36
+ background-color: white; color: #475569 !important; font-weight: 600 !important;
37
+ padding: 6px 16px !important; transition: all 0.2s;
38
+ }
39
+ .tabs > .tab-nav > button:hover { background-color: #f1f5f9 !important; transform: translateY(-1px); }
40
+ .tabs > .tab-nav > button.selected {
41
+ background: linear-gradient(135deg, #8B5CF6 0%, #D65DB1 100%) !important;
42
+ color: white !important; border: 1px solid transparent !important;
43
+ box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3) !important;
44
+ }
45
+
46
+ /* --- 3. COMPONENTS --- */
47
+ button.primary {
48
+ background: linear-gradient(135deg, #8B5CF6 0%, #D65DB1 100%) !important;
49
+ border: none !important; color: white !important; transition: filter 0.2s;
50
+ }
51
+ button.primary:hover { filter: brightness(1.1); box-shadow: 0 4px 15px rgba(139, 92, 246, 0.4); }
52
+
53
+ .fixed-height { height: 380px !important; overflow: hidden !important; }
54
+ .fixed-height button, .fixed-height .image-container, .fixed-height .upload-container {
55
+ height: 100% !important; max-height: 100% !important; min-height: 100% !important;
56
+ }
57
+ .fixed-height img { object-fit: contain !important; max-height: 100% !important; }
58
+
59
+ .fixed-height-tab2 {height: 500px}
60
+
61
+ /* Stile per la Model Card nel tab BPO */
62
+ .model-card {
63
+ background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 15px;
64
+ font-size: 0.9em; color: #475569; margin-top: 10px;
65
+ }
66
+
67
+ .model-card strong{
68
+ color: #475569 !important
69
+ }
70
+
71
+ /* --- 4. MOBILE RESPONSIVE --- */
72
+ @media (max-width: 768px) {
73
+ .header-row { flex-direction: column !important; align-items: center !important; text-align: center !important; gap: 10px !important; }
74
+ .header-text-col h1 { text-align: center !important; font-size: 1.8em !important; }
75
+ .header-text-col .subheader { text-align: center !important; }
76
+ .responsive-row { flex-direction: column !important; display: flex !important; }
77
+ .responsive-row > * { width: 100% !important; min-width: 100% !important; margin-bottom: 15px !important; }
78
+
79
+ .tabs > .tab-nav { flex-wrap: wrap !important; justify-content: center !important; gap: 6px !important; }
80
+ .tabs > .tab-nav > button {
81
+ flex-grow: 1 !important; text-align: center !important; font-size: 0.85rem !important;
82
+ padding: 8px 10px !important; margin: 0 !important; width: auto !important; min-width: 45% !important;
83
+ }
84
+ }
85
+ footer {visibility: hidden}