Costruisci un sistema di avvisi in tempo reale basato sulle notizie con Twitter, Amazon SageMaker e Hugging Face PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Crea un sistema di avvisi in tempo reale basato su notizie con Twitter, Amazon SageMaker e Hugging Face

Oggi i social media sono una grande fonte di notizie. Gli utenti si affidano a piattaforme come Facebook e Twitter per consumare le notizie. Per alcuni settori come le compagnie assicurative, i primi intervistati, le forze dell'ordine e le agenzie governative, essere in grado di elaborare rapidamente le notizie sugli eventi rilevanti che si verificano può aiutarli ad agire mentre questi eventi sono ancora in corso.

Non è raro che le organizzazioni che cercano di estrarre valore dai dati di testo cerchino una soluzione che non implichi l'addestramento di un modello complesso di NLP (elaborazione del linguaggio naturale). Per queste organizzazioni, l'utilizzo di un modello di PNL pre-addestrato è più pratico. Inoltre, se il modello scelto non soddisfa le loro metriche di successo, le organizzazioni vogliono essere in grado di scegliere facilmente un altro modello e rivalutarlo.

Al momento, è più facile che mai estrarre informazioni dai dati di testo grazie a quanto segue:

  • L'ascesa di architetture NLP all'avanguardia per uso generale come i trasformatori
  • La capacità di sviluppatori e data scientist di creare, addestrare e distribuire rapidamente modelli di machine learning (ML) su larga scala sul cloud con servizi come Amazon Sage Maker
  • La disponibilità di migliaia di modelli di PNL pre-addestrati in centinaia di lingue e con supporto per più framework forniti dalla comunità in piattaforme come Hub per il viso che abbraccia

In questo post, ti mostriamo come creare un sistema di allerta in tempo reale che consumi le notizie da Twitter e classifichi i tweet utilizzando un modello pre-addestrato da Hugging Face Hub. Puoi utilizzare questa soluzione per la classificazione zero-shot, il che significa che puoi classificare i tweet praticamente in qualsiasi insieme di categorie e distribuire il modello con SageMaker per l'inferenza in tempo reale.

In alternativa, se stai cercando approfondimenti nelle conversazioni dei tuoi clienti e approfondire la consapevolezza del marchio analizzando le interazioni sui social media, ti invitiamo a dare un'occhiata al Dashboard di social media guidato dall'intelligenza artificiale. La soluzione usa Amazon Comprehend, un servizio NLP completamente gestito che scopre preziose informazioni e connessioni nel testo senza richiedere esperienza di machine learning.

Apprendimento zero-shot

I campi della PNL e della comprensione del linguaggio naturale (NLU) si sono rapidamente evoluti per affrontare casi d'uso che coinvolgono la classificazione del testo, la risposta a domande, il riepilogo, la generazione di testo e altro ancora. Questa evoluzione è stata possibile, in parte, grazie all'affermarsi di architetture general-purpose all'avanguardia come i trasformatori, ma anche alla disponibilità di corpora testuali più numerosi e di migliore qualità disponibili per l'addestramento di tali modelli.

L'architettura del trasformatore è una rete neurale complessa che richiede competenze di dominio e un'enorme quantità di dati per essere addestrata da zero. Una pratica comune consiste nel prendere un trasformatore all'avanguardia pre-addestrato come BERT, RoBERTa, T5, GPT-2 o DistilBERT e mettere a punto (trasferire l'apprendimento) il modello in un caso d'uso specifico.

Tuttavia, anche eseguire il transfer learning su un modello NLP pre-addestrato può spesso essere un compito impegnativo, che richiede grandi quantità di dati di testo etichettati e un team di esperti per curare i dati. Questa complessità impedisce alla maggior parte delle organizzazioni di utilizzare questi modelli in modo efficace, ma l'apprendimento mirato aiuta i professionisti e le organizzazioni di ML a superare questa lacuna.

L'apprendimento zero-shot è un'attività ML specifica in cui un classificatore apprende su un set di etichette durante l'allenamento e quindi durante l'inferenza viene valutato su un diverso set di etichette che il classificatore non ha mai visto prima. In NLP, puoi usare un classificatore di sequenza zero-shot addestrato su un'attività di inferenza del linguaggio naturale (NLI) per classificare il testo senza alcuna messa a punto. In questo post, utilizziamo il popolare NLI BART modello bart-large-mnli per classificare i tweet. Questo è un grande modello pre-addestrato (1.6 GB), disponibile sull'hub del modello Hugging Face.

Hugging Face è una società di intelligenza artificiale che gestisce una piattaforma open source (Hugging Face Hub) con migliaia di modelli NLP pre-addestrati (trasformatori) in più di 100 lingue diverse e con supporto per diversi framework come TensorFlow e PyTorch. La libreria Transformers aiuta gli sviluppatori e i data scientist a iniziare in complesse attività NLP e NLU come classificazione, estrazione di informazioni, risposta alle domande, riepilogo, traduzione e generazione di testo.

AWS e la faccia che abbraccia hanno collaborato per semplificare e accelerare l'adozione dei modelli di PNL. Sono ora disponibili un set di Deep Learning Containers (DLC) per l'addestramento e l'inferenza in PyTorch o TensorFlow e stimatori e predittori Hugging Face per SageMaker Python SDK. Queste funzionalità aiutano gli sviluppatori con tutti i livelli di esperienza a iniziare facilmente con la NLP.

Panoramica della soluzione

Forniamo una soluzione funzionante che recupera i tweet in tempo reale da account Twitter selezionati. Per la dimostrazione della nostra soluzione, utilizziamo tre account, Amazon Web Services (@awscloud), Sicurezza AWS (@AWSSecurityInfo) e Amazon Science (@AmazonScienza) e classificarne il contenuto in una delle seguenti categorie: sicurezza, database, elaborazione, archiviazione e apprendimento automatico. Se il modello restituisce una categoria con un punteggio di affidabilità superiore al 40%, viene inviata una notifica.

Nell'esempio seguente, il modello ha classificato un tweet di Amazon Web Services nella categoria machine learning, con un punteggio di affidabilità del 97%, generando un avviso.

La soluzione si basa su un modello di trasformatore pre-addestrato Hugging Face (da Hugging Face Hub) per classificare i tweet in base a una serie di etichette fornite al momento dell'inferenza: il modello non ha bisogno di essere addestrato. Gli screenshot seguenti mostrano più esempi e come sono stati classificati.
Alcuni esempi rilevanti
Ti invitiamo a provare la soluzione per te stesso. Basta scaricare il codice sorgente da Repository GitHub e segui le istruzioni di distribuzione nel file README.

Architettura della soluzione

La soluzione mantiene una connessione aperta all'endpoint di Twitter e, quando arriva un nuovo tweet, invia un messaggio a una coda. Un consumatore legge i messaggi dalla coda, chiama l'endpoint di classificazione e, a seconda dei risultati, avvisa l'utente finale.

Quello che segue è il diagramma dell'architettura della soluzione.
Ambito della soluzione
Il flusso di lavoro della soluzione è costituito dai seguenti componenti:

  1. La soluzione si basa sull'API Stream di Twitter per ottenere tweet che corrispondono alle regole configurate (tweet dagli account di interesse) in tempo reale. Per fare ciò, un'applicazione in esecuzione all'interno di un container mantiene una connessione aperta all'endpoint di Twitter. Fare riferimento a API di Twitter per ulteriori dettagli.
  2. Il contenitore funziona Servizio di container elastici Amazon (Amazon ECS), un servizio di orchestrazione di container completamente gestito che semplifica la distribuzione, la gestione e la scalabilità di applicazioni containerizzate. Una singola attività viene eseguita su un'infrastruttura serverless gestita da AWS Fargate.
  3. Il token Twitter Bearer è archiviato in modo sicuro Archivio parametri di AWS Systems Manager, una capacità di Gestore di sistemi AWS che fornisce un'archiviazione gerarchica sicura per i dati di configurazione e i segreti. L'immagine del contenitore è ospitata su Registro dei contenitori Amazon Elastic (Amazon ECR), un registro container completamente gestito che offre hosting ad alte prestazioni.
  4. Ogni volta che arriva un nuovo tweet, l'applicazione contenitore inserisce il tweet in un file Servizio Amazon Simple Queue (Amazon SQS) coda. Amazon SQS è un servizio di accodamento messaggi completamente gestito che consente di disaccoppiare e ridimensionare microservizi, sistemi distribuiti e applicazioni serverless.
  5. La logica della soluzione risiede in un AWS Lambda funzione. Lambda è un servizio di calcolo basato su eventi senza server. La funzione consuma i nuovi tweet dalla coda e li classifica chiamando un endpoint.
  6. L'endpoint si basa su un modello Hugging Face ed è ospitato su SageMaker. L'endpoint esegue l'inferenza e restituisce la classe del tweet.
  7. A seconda della classificazione, la funzione genera una notifica tramite Servizio di notifica semplice Amazon (Amazon SNS), un servizio di messaggistica completamente gestito. Puoi iscriverti all'argomento SNS e più destinazioni possono ricevere quella notifica (vedi Destinazioni degli eventi Amazon SNS). Ad esempio, puoi inviare la notifica alle caselle di posta come messaggi di posta elettronica (vedi Notifiche di posta elettronica).

Distribuisci i modelli Hugging Face con SageMaker

Puoi selezionare uno qualsiasi degli oltre 10,000 modelli disponibili pubblicamente dal Hub del modello del viso che abbraccia e distribuiscili con SageMaker utilizzando Abbracciare i DLC Face Inference.

Quando si usa AWS CloudFormazione, selezioni uno dei disponibili pubblicamente Contenitori di inferenza facciale abbracciati e configurare il modello e l'attività. Questa soluzione utilizza il facebook/bart-large-mnli modello e l'attività di classificazione zero-shot, ma puoi scegliere uno qualsiasi dei modelli sotto Classificazione Zero-Shot sull'hub modello Hugging Face. Puoi configurarli impostando le variabili di ambiente HF_MODEL_ID e HF_TASK nel tuo modello CloudFormation, come nel codice seguente:

SageMakerModel:
  Type: AWS::SageMaker::Model
  Properties:
    ExecutionRoleArn: !GetAtt SageMakerModelRole.Arn
    PrimaryContainer:
      Image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-inference:1.7-transformers4.6-cpu-py36-ubuntu18.04
      Environment:
        HF_MODEL_ID: facebook/bart-large-mnli
        HF_TASK: zero-shot-classification
        SAGEMAKER_CONTAINER_LOG_LEVEL: 20
        SAGEMAKER_REGION: us-east-1

In alternativa, se non utilizzi AWS CloudFormation, puoi ottenere gli stessi risultati con poche righe di codice. Fare riferimento a Distribuisci modelli su Amazon SageMaker per ulteriori dettagli.

Per classificare il contenuto, è sufficiente chiamare l'endpoint SageMaker. Quello che segue è un frammento di codice Python:

endpoint_name = os.environ['ENDPOINT_NAME']
labels = os.environ['ENDPOINT_NAME']

data = {
    'inputs': tweet,
    'parameters': {
        'candidate_labels': labels,
        'multi_class': False
    }
}

response = sagemaker.invoke_endpoint(EndpointName=endpoint_name,
                                     ContentType='application/json',
                                     Body=json.dumps(data))

response_body = json.loads(response['Body'].read())

Notare la Falso valore per il multi_classe parametro per indicare che la somma di tutte le probabilità per ciascuna classe sarà pari a 1.

Miglioramenti della soluzione

Puoi migliorare la soluzione qui proposta memorizzando i tweet e i risultati del modello. Servizio di archiviazione semplice Amazon (Amazon S3), un servizio di archiviazione oggetti, è un'opzione. Puoi scrivere tweet, risultati e altri metadati come oggetti JSON in un bucket S3. È quindi possibile eseguire query ad hoc su quel contenuto utilizzando Amazzone Atena, un servizio di query interattivo che semplifica l'analisi dei dati in Amazon S3 utilizzando SQL standard.

Puoi utilizzare la cronologia non solo per estrarre informazioni dettagliate, ma anche per addestrare un modello personalizzato. Puoi utilizzare il supporto Hugging Face per addestrare un modello con i tuoi dati con SageMaker. Ulteriori informazioni su Esegui la formazione su Amazon SageMaker.

Casi d'uso del mondo reale

I clienti stanno già sperimentando i modelli Hugging Face su SageMaker. Assicurazione Bolivar, una compagnia finanziaria e assicurativa colombiana fondata nel 1939, ne è un esempio.

“Abbiamo sviluppato una soluzione di notifica delle minacce per clienti e broker assicurativi. Utilizziamo modelli NLP pre-addestrati di Hugging Face per classificare i tweet degli account pertinenti per generare notifiche per i nostri clienti in tempo quasi reale come strategia di prevenzione per aiutare a mitigare i reclami. Un sinistro si verifica perché i clienti non sono consapevoli del livello di rischio a cui sono esposti. La soluzione ci permette di generare consapevolezza nei nostri clienti, trasformando il rischio in qualcosa di misurabile in situazioni concrete”.

– Julian Rico, capo della ricerca e della conoscenza presso Seguros Bolívar.

Seguros Bolívar ha collaborato con AWS per riprogettare la loro soluzione; ora si basa su SageMaker e assomiglia a quello descritto in questo post.

Conclusione

La classificazione zero-shot è l'ideale quando hai pochi dati per addestrare un classificatore di testo personalizzato o quando non puoi permetterti di addestrare un modello NLP personalizzato. Per casi d'uso specializzati, quando il testo si basa su parole o termini specifici, è meglio utilizzare un modello di classificazione supervisionato basato su un set di formazione personalizzato.

In questo post, ti abbiamo mostrato come creare un classificatore di notizie utilizzando un modello a scatto zero Hugging Face su AWS. Abbiamo utilizzato Twitter come fonte di notizie, ma puoi scegliere una fonte di notizie più adatta alle tue esigenze specifiche. Inoltre, puoi cambiare facilmente il modello, basta specificare il modello che hai scelto nel modello CloudFormation.

Per il codice sorgente, fare riferimento a Repository GitHub Include le istruzioni complete per la configurazione. Puoi clonarlo, modificarlo, distribuirlo ed eseguirlo tu stesso. Puoi anche usarlo come punto di partenza e personalizzare le categorie e la logica di avviso o creare un'altra soluzione per un caso d'uso simile.

Per favore, provalo e facci sapere cosa ne pensi. Come sempre, non vediamo l'ora di ricevere un tuo feedback. Puoi inviarlo ai tuoi consueti contatti di supporto AWS o nel Forum AWS per SageMaker.


Circa gli autori

Costruisci un sistema di avvisi in tempo reale basato sulle notizie con Twitter, Amazon SageMaker e Hugging Face PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Davide Laredo è un architetto di prototipi presso AWS Envision Engineering in LATAM, dove ha contribuito a sviluppare più prototipi di machine learning. In precedenza ha lavorato come Machine Learning Engineer e si occupa di machine learning da oltre 5 anni. Le sue aree di interesse sono la PNL, le serie temporali e il ML end-to-end.

Costruisci un sistema di avvisi in tempo reale basato sulle notizie con Twitter, Amazon SageMaker e Hugging Face PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Rafael Werneck è Senior Prototyping Architect presso AWS Envision Engineering, con sede in Brasile. In precedenza, ha lavorato come Software Development Engineer su Amazon.com.br e Amazon RDS Performance Insights.

Costruisci un sistema di avvisi in tempo reale basato sulle notizie con Twitter, Amazon SageMaker e Hugging Face PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Vikram Elango è un AI/ML Specialist Solutions Architect presso Amazon Web Services, con sede in Virginia, USA. Vikram aiuta i clienti del settore finanziario e assicurativo con design e leadership di pensiero a creare e distribuire applicazioni di machine learning su larga scala. Attualmente è concentrato sull'elaborazione del linguaggio naturale, sull'IA responsabile, sull'ottimizzazione dell'inferenza e sul ridimensionamento del ML in tutta l'azienda. Nel tempo libero ama viaggiare, fare escursioni, cucinare e campeggiare con la sua famiglia.

Timestamp:

Di più da Apprendimento automatico di AWS