Come costruire un backend di intelligenza documentale con iii utilizzando Workers, Functions e trigger Cron
Costruire un backend di intelligenza documentale richiede una piattaforma versatile e facile da integrare. Il tutorial seguente illustra come utilizzare iii per creare una pipeline completa per l’analisi del testo. Dopo aver configurato iii come engine di fondo, vengono implementate funzioni dedicate a diverse fasi del data processing.
Installazione e avvio di iii
Per iniziare, dobbiamo installare e avviare iii nel nostro ambiente:
- Importiamo i moduli necessari come os, sys, subprocess e socket
- Configuriamo il percorso per iii in "$HOME/.local/bin"
- Definiamo una funzione sh per eseguire comandi shell
- Se iii non è già installato, lo installiamo con curl
- Installiamo iii-sdk e altri pacchetti necessari con pip
- Avviamo iii e verifichiamo la versione per confermare l'installazione
Esecuzione di iii come processo in background
Una volta installato iii, lo lanciamo in background e verifichiamo che sia operativo:
- Usiamo Popen per avviare l’engine con la configurazione predefinita
- Attendiamo finché non risponde sul WebSocket
- Utilizziamo la funzione register_worker per collegare un worker Python all'engine
- Configuriamo supporto per trigger di tipo fire-and-forget
- Prepariamo una struttura di stato in memoria per monitorare documenti analizzati e heartbeat
- Definiamo set di parole positive e negative per l'analisi del sentiment
Creazione di funzioni di analisi del testo
Le funzioni seguenti svolgono ruoli diversi nel pipeline di analisi:
- La funzione normalize pulisce e prepara il testo
- La funzione tokenize esegue il tokenization
- La funzione sentiment analizza le parole per determinare il sentimento complessivo
- La funzione keywords estrae un elenco delle parole più frequenti
- La funzione analyze combina tutte le funzioni precedenti in una pipeline orchestrata
- La funzione report fornisce statistiche aggregate
- La funzione http_analyze gestisce le richieste HTTP
- La funzione heartbeat aggiorna lo stato del sistema
Registro delle funzioni e trigger
Dopo aver creato le funzioni, le registriamo nel worker iii:
- Utilizziamo worker.register_function per registrare ogni id di funzione con la relativa funzione
- Registriamo inoltre trigger HTTP e Cron, se supportati
- Colleghiamo il worker con iii e attendiamo un secondo per garantire la sincronizzazione
Esempio di utilizzo diretto e tramite HTTP
Demo di utilizzo di iii:
- Eseguiamo una serie di documenti attraverso la pipeline di analisi
- Stampiamo il risultato in termini di sentiment, token e parole chiave
- Eseguiamo la stessa funzione tramite una richiesta HTTP POST per confermare la compatibilità
- Proviamo inoltre un invio “fire-and-forget” per testare la funzionalità senza dover attendere una risposta
Esecuzione programmata con Cron
Per mostrare come integrare scadenze regolari, aggiungiamo un trigger cron:
- Configuriamo un heartbeat che si attiva ogni due secondi
- Questo mostra come iii può monitorare l’integrità del sistema in tempo reale
- Gestiamo gli errori nel caso iii non supporti trigger di tipo Cron
Confronto delle invocazioni
I risultati ottenuti tramite diversi metodi dimostrano la flessibilità del sistema:
- Usiamo una pipeline analizzata direttamente con iii
- Confermiamo che funzioni identiche funzionano su una richiesta HTTP con il minimo sforzo
- Possiamo inviare analisi in background per migliorare la scalabilità e la velocità di risposta
- Utilizziamo i cron job per aggiornare statistiche aggregate
Struttura della pipeline
I componenti della pipeline di analisi sono organizzati in un modo modulare:
- Normalizzazione: converte il testo in una forma uniforme
- Tokenizzazione: suddivide il testo in token per ulteriore elaborazione
- Analisi del Sentiment: classifica il testo in base a parole positive e negative
- Estrazione delle Parole Chiave: riconosce le parole più significative
- Reporting: visualizza lo stato corrente del backend
- Heartbeat: mantiene una traccia dello stato del sistema
Analisi in tempo reale e reporting
Con iii possiamo creare un sistema che risponda rapidamente e fornisca statistiche:
- La pipeline analizza i documenti in tempo reale
- I dati vengono aggregati per parole chiave più frequenti
- Lo stato del sistema può essere richiesto in qualsiasi momento
- Aggiornamenti cronici tengono traccia della salute e delle performance del backend
Test con casi concreti
Per confermare la funzionalità del design, eseguiamo analisi su testi di varie nature:
- Commenti positivi: mostrano sentiment positivo e parole chiave corrispondenti
- Testi negativi: evidenziano parole e sentimento corretti
- Testi neutri: confermano l’accuratezza del classificatore
- Tutti i testi riferiscono correttamente sul conteggio dei token
Risultati e conclusioni
La combinazione di iii con iii-sdk permette di costruire facilmente un backend scalabile:
- Utilizziamo funzioni moduli per ogni compito specifico
- Integriamo HTTP per accesso diretto e richieste interattive
- Sfruttiamo trigger programmabili per il mantenimento del sistema
- Vengono mantenuti dati aggregati per reportage e analisi
Questa architettura può essere estesa a molteplici altre applicazioni di intelligenza artificiale e processing su larga scala.