Analizzare i newsfeed con analisi near real-time usando l'elaborazione di immagini e linguaggio naturale

Azure Cosmos DB
Funzioni di Azure
Bus di servizio di Azure
Testo di Azure Translator
Viso di Azure

Questo scenario di esempio illustra una pipeline per l'inserimento di massa e l'analisi near real-time dei documenti provenienti da newsfeed RSS pubblici. Usa Servizi cognitivi di Azure per fornire informazioni dettagliate utili sulla traduzione del testo, sul riconoscimento facciale e sul rilevamento del sentiment. In particolare, i passaggi di elaborazione di immagini e linguaggio naturale sono connessi tra loro in una pipeline di messaggistica basata sul bus di servizio di Azure. L'output della pipeline è una notifica contenente le informazioni dettagliate o l'analisi.

Architettura

Diagramma dell'architettura: inserire e analizzare feed RSS usando l'elaborazione di immagini e testo e inviare notifiche.Scaricare un file di Visio di questa architettura.

Flusso di dati

I dati passano attraverso la soluzione nel modo seguente:

  1. Un newsfeed RSS funge da generatore che ottiene dati da un documento o un articolo. Ad esempio, nel caso di un articolo, i dati includono in genere un titolo, un riepilogo del corpo originale della notizia e talvolta immagini.

  2. Un generatore o un processo di inserimento inserisce l'articolo e le eventuali immagini associate in una raccolta di Azure Cosmos DB.

  3. Una notifica attiva una funzione di inserimento in Funzioni di Azure che archivia il testo dell'articolo in Azure Cosmos DB e le immagini dell'articolo (se presenti) in Archiviazione BLOB di Azure. L'articolo viene quindi passato alla coda successiva.

  4. Una funzione di traduzione viene attivata dall'evento coda. Usa l'API di traduzione del testo di Servizi di IA di Azure per rilevare la lingua, tradurre se necessario e raccogliere il sentiment, le frasi chiave e le entità dal corpo e dal titolo. Passa quindi l'articolo alla coda successiva.

  5. Una funzione di rilevamento viene attivata dall'articolo in coda. Usa il servizio Visione artificiale per rilevare oggetti, punti di riferimento e parole scritte nell'immagine associata, quindi passa l'articolo alla coda successiva.

  6. Una funzione viso viene attivata dall'articolo in coda. Usa il servizio API Viso di Azure per rilevare i visi per sesso ed età nell'immagine associata, quindi passa l'articolo alla coda successiva.

  7. Al termine di tutte le funzioni, viene attivata la funzione di notifica. Carica i record elaborati per l'articolo e li analizza per ottenere i risultati desiderati. Se viene trovato, il contenuto viene contrassegnato e viene inviata una notifica al sistema scelto dall'utente.

A ogni passaggio di elaborazione, la funzione scrive i risultati in Azure Cosmos DB. I dati possono infine essere usati come desiderato. Ad esempio, è possibile usarli per migliorare i processi aziendali, individuare nuovi clienti o identificare i problemi di soddisfazione dei clienti.

Componenti

In questo esempio viene usato l'elenco seguente di componenti di Azure.

  • Archiviazione di Azure viene usato per contenere file di immagine e video non elaborati associati a un articolo. Viene creato un account di archiviazione secondario con Servizio app di Azure e viene usato per ospitare il codice e i log di Funzioni di Azure.

  • Azure Cosmos DB contiene informazioni di rilevamento di testo, immagini e video dell'articolo. Anche i risultati dei passaggi di Servizi di IA vengono archiviati qui.

  • Funzioni di Azure esegue il codice delle funzioni usato per rispondere ai messaggi della coda e trasformare il contenuto in arrivo. Servizio app di Azure ospita il codice delle funzioni ed elabora i record in modo seriale. Questo scenario include cinque funzioni: inserimento, trasformazione, rilevamento oggetto, viso e notifica.

  • Bus di servizio di Azure ospita le relative code usate dalle funzioni.

  • I Servizi di IA Azure fornisconol'intelligenza artificiale per la pipeline basata sulle implementazioni del servizio Visione artificiale, dell'API Viso e del servizio di traduzione automatica Traduci testo.

  • Application Insights di Azure fornisce analisi per diagnosticare i problemi e comprendere la funzionalità dell'applicazione.

Alternative

  • Invece di usare un modello basato sulla notifica della coda e Funzioni di Azure, è possibile usare un modello con argomenti e sottoscrizioni per questo flusso di dati. Gli argomenti del bus di servizio di Azure possono essere usati per elaborare le varie parti dell'articolo in parallelo in contrapposizione all'elaborazione seriale eseguita in questo esempio. Per altre informazioni,mettere a confronto code e argomenti.

  • Usare App per la logica di Azure per implementare il codice delle funzioni e implementare il blocco a livello di record, ad esempio quello fornito dall'algoritmo Redlock (necessario per l'elaborazione parallela finché Azure Cosmos DB non supporta gli aggiornamenti parziali dei documenti). Per altre informazioni, mettere a confronto Funzioni e App per la logica.

  • Implementare questa architettura usando componenti di intelligenza artificiale personalizzati anziché i servizi di Azure esistenti. Ad esempio, estendere la pipeline usando un modello personalizzato che rileva determinate persone in un'immagine anziché i dati generici relativi al numero, al sesso e all'età delle persone raccolti in questo esempio. Per usare modelli di Machine Learning o di intelligenza artificiale personalizzati con questa architettura, creare i modelli come endpoint RESTful in modo che possano essere chiamati da Funzioni di Azure.

  • Usare un meccanismo di input diverso invece dei feed RSS. Usare più generatori o processi di inserimento per inviare informazioni ad Azure Cosmos DB e Archiviazione di Azure.

  • Ricerca cognitiva di Azure è una funzionalità di intelligenza artificiale, disponibile in Ricerca di Azure, che può essere usata anche per estrarre testo da immagini, BLOB e altre origini dati non strutturate.

Dettagli dello scenario

Questo scenario include esempi di newsfeed in inglese, russo e tedesco, ma è possibile estenderlo facilmente ad altri feed RSS e ad altre lingue. Per semplificare la distribuzione, la raccolta, l'elaborazione e l'analisi dei dati si basano interamente su servizi di Azure.

Potenziali casi d'uso

Sebbene questo scenario si basi sull'elaborazione di feed RSS, è valido per qualsiasi documento, sito Web o articolo in cui sia necessario:

  • Tradurre il testo nella lingua desiderata.
  • Trovare frasi chiave, entità e sentiment degli utenti nel contenuto digitale.
  • Rilevare oggetti, testo e punti di riferimento nelle immagini associate a un articolo digitale.
  • Rilevare le persone in base al sesso e all'età nelle immagini associate al contenuto digitale.

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Microsoft Azure Well-Architected Framework.

Per semplicità, questo scenario di esempio usa solo alcune delle API e dei servizi disponibili in Servizi di IA Azure. Ad esempio, il testo nelle immagini può essere analizzato usando l'API Analisi del testo. Si presuppone che la lingua di destinazione in questo scenario sia l'inglese, ma è possibile cambiare l'input impostando qualsiasi lingua supportata.

Scalabilità

Il ridimensionamento di Funzioni di Azure dipende dal piano di hosting in uso. Questa soluzione presuppone un piano a consumo, in cui la potenza di calcolo viene allocata automaticamente alle funzioni quando necessario. Viene effettuato l'addebito solo se le funzioni sono in esecuzione. Un'altra opzione prevede l'uso di un piano dedicato, che consente di passare da un livello all'altro per allocare una quantità diversa di risorse.

Con Azure Cosmos DB, lo scopo primario è distribuire il carico di lavoro in modo abbastanza uniforme tra un numero sufficientemente elevato di chiavi di partizione. Non esiste alcun limite per la quantità totale di dati archiviabile in un contenitore o per la velocità effettiva totale che un contenitore può supportare.

Gestione e registrazione

Questa soluzione usa Application Insights per raccogliere informazioni sulle prestazioni e sulla registrazione. Un'istanza di Application Insights viene creata con la distribuzione nello stesso gruppo di risorse degli altri servizi necessari per la distribuzione in questione.

Per visualizzare i log generati dalla soluzione:

  1. Accedere al portale di Azure e passare al gruppo di risorse creato per la distribuzione.

  2. Selezionare l'istanza di Application Insights.

  3. Nella sezione Application Insights passare a Investigate\Search e cercare nei dati.

Sicurezza

La sicurezza offre garanzie contro attacchi intenzionali e l'abuso di dati e sistemi preziosi. Per altre informazioni, vedere Panoramica del pilastro della sicurezza.

Azure Cosmos DB usa una connessione protetta e una firma di accesso condiviso tramite l'SDK C# fornito da Microsoft. Non sono presenti altre aree di superficie rivolte esternamente. Per altre informazioni, vedere le procedure consigliate per la sicurezza per Azure Cosmos DB.

Ottimizzazione dei costi

L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Panoramica del pilastro di ottimizzazione dei costi.

Azure Cosmos DB è un servizio potente, ma genera i costi più elevati in questa distribuzione. È possibile usare un'altra soluzione di archiviazione tramite il refactoring del codice fornito di Funzioni di Azure.

I prezzi di Funzioni di Azure variano a seconda del piano usato per l'esecuzione.

Distribuire lo scenario

Nota

È necessario un account Azure esistente. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Tutto il codice per questo scenario è disponibile nel repository GitHub. Questo repository contiene il codice sorgente usato per compilare l'applicazione generatore che invia le informazioni alla pipeline per questa demo.

Passaggi successivi

Architetture di analisi aggiuntive: