Bygg ett nyhetsbaserat varningssystem i realtid med Twitter, Amazon SageMaker och Hugging Face PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Bygg ett nyhetsbaserat varningssystem i realtid med Twitter, Amazon SageMaker och Hugging Face

Idag är sociala medier en enorm källa till nyheter. Användare förlitar sig på plattformar som Facebook och Twitter för att konsumera nyheter. För vissa branscher som försäkringsbolag, första respondenter, brottsbekämpande myndigheter och statliga myndigheter kan det att snabbt kunna bearbeta nyheter om relevanta händelser hjälpa dem att vidta åtgärder medan dessa händelser fortfarande utspelar sig.

Det är inte ovanligt att organisationer som försöker extrahera värde från textdata letar efter en lösning som inte involverar utbildning av en komplex NLP-modell (natural language processing). För dessa organisationer är det mer praktiskt att använda en förutbildad NLP-modell. Dessutom, om den valda modellen inte uppfyller deras framgångsmått, vill organisationer enkelt kunna välja en annan modell och omvärdera.

För närvarande är det lättare än någonsin att extrahera information från textdata tack vare följande:

  • Framväxten av toppmoderna, allmänna NLP-arkitekturer som transformatorer
  • Möjligheten som utvecklare och datavetare har att snabbt bygga, träna och distribuera modeller för maskininlärning (ML) i stor skala på molnet med tjänster som Amazon SageMaker
  • Tillgången på tusentals förutbildade NLP-modeller på hundratals språk och med stöd för flera ramverk som tillhandahålls av communityn på plattformar som Kramar Face Hub

I det här inlägget visar vi dig hur du bygger ett varningssystem i realtid som konsumerar nyheter från Twitter och klassificerar tweets med hjälp av en förtränad modell från Hugging Face Hub. Du kan använda den här lösningen för noll-shot-klassificering, vilket innebär att du kan klassificera tweets i praktiskt taget alla kategorier, och distribuera modellen med SageMaker för slutledning i realtid.

Alternativt, om du letar efter insikter i din kunds konversationer och fördjupa varumärkesmedvetenheten genom att analysera interaktioner med sociala medier, uppmuntrar vi dig att kolla in AI-driven Dashboard för sociala medier. Lösningen använder Amazon Comprehend, en fullständigt hanterad NLP-tjänst som avslöjar värdefulla insikter och kopplingar i text utan att kräva erfarenhet av maskininlärning.

Zero-shot lärande

Områdena NLP och naturligt språkförståelse (NLU) har snabbt utvecklats för att hantera användningsfall som involverar textklassificering, frågesvar, sammanfattning, textgenerering och mer. Denna utveckling har varit möjlig, delvis tack vare uppkomsten av toppmoderna arkitekturer för allmänna ändamål, såsom transformatorer, men också tillgången till fler och bättre textkorpus tillgängliga för utbildning av sådana modeller.

Transformatorarkitekturen är ett komplext neuralt nätverk som kräver domänexpertis och en enorm mängd data för att kunna tränas från grunden. En vanlig praxis är att ta en förutbildad toppmodern transformator som BERT, RobERTa, T5, GPT-2 eller DistilBERT och finjustera (överföringsinlärning) modellen till ett specifikt användningsfall.

Ändå kan även att utföra överföringsinlärning på en förtränad NLP-modell ofta vara en utmanande uppgift, som kräver stora mängder märkt textdata och ett team av experter för att kurera data. Denna komplexitet hindrar de flesta organisationer från att använda dessa modeller effektivt, men noll-shot learning hjälper ML-utövare och organisationer att övervinna denna brist.

Zero-shot-inlärning är en specifik ML-uppgift där en klassificerare lär sig på en uppsättning etiketter under träning, och sedan under inferens utvärderas på en annan uppsättning etiketter som klassificeraren aldrig har sett förut. I NLP kan du använda en nollsekvensklassificerare som tränats på en NLI-uppgift för att klassificera text utan någon finjustering. I det här inlägget använder vi det populära NLI BART modell bart-large-mnli för att klassificera tweets. Detta är en stor förtränad modell (1.6 GB), tillgänglig på Hugging Face-modellen.

Hugging Face är ett AI-företag som hanterar en öppen källkodsplattform (Hugging Face Hub) med tusentals förtränade NLP-modeller (transformatorer) på mer än 100 olika språk och med stöd för olika ramverk som TensorFlow och PyTorch. Transformatorbiblioteket hjälper utvecklare och datavetare att komma igång med komplexa NLP- och NLU-uppgifter som klassificering, informationsextraktion, frågesvar, sammanfattning, översättning och textgenerering.

AWS och Hugging Face har samarbetat för att förenkla och påskynda införandet av NLP-modeller. En uppsättning Deep Learning Containers (DLC) för träning och slutledning i PyTorch eller TensorFlow, och Hugging Face-estimatorer och prediktorer för SageMaker Python SDK är nu tillgängliga. Dessa funktioner hjälper utvecklare med alla expertnivåer att enkelt komma igång med NLP.

Översikt över lösningen

Vi tillhandahåller en fungerande lösning som hämtar tweets i realtid från utvalda Twitter-konton. För demonstrationen av vår lösning använder vi tre konton, Amazon Web Services (@awscloud), AWS Security (@AWSSecurityInfo), och Amazon Science (@AmazonScience), och klassificera deras innehåll i en av följande kategorier: säkerhet, databas, beräkning, lagring och maskininlärning. Om modellen returnerar en kategori med ett konfidensvärde som är större än 40 % skickas ett meddelande.

I följande exempel klassificerade modellen en tweet från Amazon Web Services i kategorin maskininlärning, med en konfidenspoäng på 97 %, vilket genererade en varning.

Lösningen är beroende av en Hugging Face förtränad transformatormodell (från Hugging Face Hub) för att klassificera tweets baserat på en uppsättning etiketter som tillhandahålls vid slutledningstidpunkten – modellen behöver inte tränas. Följande skärmdumpar visar fler exempel och hur de klassificerades.
Några relevanta exempel
Vi uppmuntrar dig att prova lösningen själv. Ladda bara ner källkoden från GitHub repository och följ installationsinstruktionerna i README-filen.

Lösningsarkitektur

Lösningen håller en öppen anslutning till Twitters slutpunkt och skickar, när en ny tweet kommer, ett meddelande till en kö. En konsument läser meddelanden från kön, anropar klassificeringsslutpunkten och, beroende på resultaten, meddelar slutanvändaren.

Följande är arkitekturdiagrammet för lösningen.
Lösningens omfattning
Lösningsarbetsflödet består av följande komponenter:

  1. Lösningen förlitar sig på Twitters Stream API för att få tweets som matchar de konfigurerade reglerna (tweets från kontona av intresse) i realtid. För att göra det håller en applikation som körs inuti en behållare en öppen anslutning till Twitters slutpunkt. Hänvisa till Twitter API för mer detaljer.
  2. Containern kör på Amazon Elastic Container Service (Amazon ECS), en fullständigt hanterad containerorkestreringstjänst som gör det enkelt för dig att distribuera, hantera och skala containeriserade applikationer. En enda uppgift körs på en serverlös infrastruktur som hanteras av AWS Fargate.
  3. Twitter Bearer-token är säkert lagrad i AWS Systems Manager Parameter Store, en förmåga av AWS systemchef som ger säker, hierarkisk lagring för konfigurationsdata och hemligheter. Behållarbilden finns på Amazon Elastic Container Registry (Amazon ECR), ett fullständigt hanterat containerregister som erbjuder högpresterande hosting.
  4. När en ny tweet kommer, lägger containerapplikationen in tweeten i en Amazon enkel kötjänst (Amazon SQS) kö. Amazon SQS är en fullständigt hanterad meddelandekötjänst som gör att du kan koppla bort och skala mikrotjänster, distribuerade system och serverlösa applikationer.
  5. Lösningens logik ligger i en AWS Lambda fungera. Lambda är en serverlös, händelsestyrd datortjänst. Funktionen förbrukar nya tweets från kön och klassificerar dem genom att anropa en slutpunkt.
  6. Slutpunkten förlitar sig på en Hugging Face-modell och finns på SageMaker. Slutpunkten kör inferensen och matar ut klassen för tweeten.
  7. Beroende på klassificering genererar funktionen en notifiering genom Amazon enkel meddelandetjänst (Amazon SNS), en fullt hanterad meddelandetjänst. Du kan prenumerera på SNS-ämnet och flera destinationer kan ta emot det meddelandet (se Amazon SNS-evenemangsdestinationer). Du kan till exempel leverera aviseringen till inkorgar som e-postmeddelanden (se e-postmeddelanden).

Implementera Hugging Face-modeller med SageMaker

Du kan välja vilken som helst av de över 10,000 XNUMX allmänt tillgängliga modellerna från Hugging Face Model Hub och distribuera dem med SageMaker genom att använda Hugging Face Inference DLC:er.

När man använder AWS molnformation, väljer du en av de allmänt tillgängliga Kramar Face Inference Containers och konfigurera modellen och uppgiften. Denna lösning använder facebook/bart-large-mnli modell och nollskottsklassificeringsuppgiften, men du kan välja vilken som helst av modellerna under Nollskottsklassificering på Hugging Face Model Hub. Du konfigurerar dessa genom att ställa in miljövariablerna HF_MODEL_ID och HF_TASK i din CloudFormation-mall, som i följande kod:

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

Alternativt, om du inte använder AWS CloudFormation, kan du uppnå samma resultat med några rader kod. Hänvisa till Distribuera modeller till Amazon SageMaker för mer detaljer.

För att klassificera innehållet ringer du bara till SageMaker-slutpunkten. Följande är ett Python-kodavsnitt:

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())

Notera Falsk värde för multi_class parameter för att indikera att summan av alla sannolikheter för varje klass kommer att summera till 1.

Lösningsförbättringar

Du kan förbättra lösningen som föreslås här genom att lagra tweets och modellresultat. Amazon enkel lagringstjänst (Amazon S3), en objektlagringstjänst, är ett alternativ. Du kan skriva tweets, resultat och annan metadata som JSON-objekt i en S3-bucket. Du kan sedan utföra ad hoc-frågor mot det innehållet med hjälp av Amazonas Athena, en interaktiv frågetjänst som gör det enkelt att analysera data i Amazon S3 med standard SQL.

Du kan använda historiken inte bara för att extrahera insikter utan också för att träna en anpassad modell. Du kan använda Hugging Face-stöd för att träna en modell med din egen data med SageMaker. Läs mer om Kör träning på Amazon SageMaker.

Verkliga användningsfall

Kunder experimenterar redan med Hugging Face-modeller på SageMaker. Bolivar försäkring, ett colombianskt finans- och försäkringsbolag som grundades 1939, är ett exempel.

”Vi utvecklade en lösning för hotmeddelanden för kunder och försäkringsmäklare. Vi använder Hugging Face förutbildade NLP-modeller för att klassificera tweets från relevanta konton för att generera aviseringar till våra kunder i nästan realtid som en förebyggande strategi för att mildra anspråk. En skadeanmälan uppstår på grund av att kunderna inte är medvetna om vilken risk de utsätts för. Lösningen gör att vi kan skapa medvetenhet hos våra kunder och förvandla risk till något mätbart i konkreta situationer.”

– Julian Rico, chef för forskning och kunskap på Seguros Bolívar.

Seguros Bolívar arbetade med AWS för att bygga om deras lösning; den förlitar sig nu på SageMaker och liknar den som beskrivs i det här inlägget.

Slutsats

Zero-shot-klassificering är idealisk när du har lite data för att träna en anpassad textklassificerare eller när du inte har råd att träna en anpassad NLP-modell. För specialiserade användningsfall, när text är baserad på specifika ord eller termer, är det bättre att gå med en övervakad klassificeringsmodell baserad på en anpassad träningsuppsättning.

I det här inlägget visade vi dig hur du bygger en nyhetsklassificerare med hjälp av en Hugging Face zero-shot-modell på AWS. Vi använde Twitter som vår nyhetskälla, men du kan välja en nyhetskälla som är mer lämpad för dina specifika behov. Dessutom kan du enkelt ändra modell, bara specificera din valda modell i CloudFormation-mallen.

För källkoden, se GitHub repository Den innehåller de fullständiga installationsinstruktionerna. Du kan klona, ​​ändra, distribuera och köra det själv. Du kan också använda den som utgångspunkt och anpassa kategorierna och varningslogiken eller bygga en annan lösning för ett liknande användningsfall.

Vänligen prova och låt oss veta vad du tycker. Som alltid ser vi fram emot din feedback. Du kan skicka den till dina vanliga AWS-supportkontakter eller i AWS-forum för SageMaker.


Om författarna

Bygg ett nyhetsbaserat varningssystem i realtid med Twitter, Amazon SageMaker och Hugging Face PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.David Laredo är en prototyparkitekt på AWS Envision Engineering i LATAM, där han har hjälpt till att utveckla flera prototyper för maskininlärning. Tidigare har han arbetat som maskininlärningsingenjör och har hållit på med maskininlärning i över 5 år. Hans intresseområden är NLP, tidsserier och end-to-end ML.

Bygg ett nyhetsbaserat varningssystem i realtid med Twitter, Amazon SageMaker och Hugging Face PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Rafael Werneck är Senior Prototyping Architect på AWS Envision Engineering, baserad i Brasilien. Tidigare har han arbetat som mjukvaruutvecklingsingenjör på Amazon.com.br och Amazon RDS Performance Insights.

Bygg ett nyhetsbaserat varningssystem i realtid med Twitter, Amazon SageMaker och Hugging Face PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Vikram Elango är en AI/ML Specialist Solutions Architect på Amazon Web Services, baserad i Virginia, USA. Vikram hjälper finans- och försäkringsbranschens kunder med design och tankeledarskap att bygga och distribuera maskininlärningsapplikationer i stor skala. Han är för närvarande fokuserad på naturlig språkbehandling, ansvarsfull AI, slutledningsoptimering och skalning av ML över hela företaget. På fritiden tycker han om att resa, vandra, laga mat och campa med sin familj.

Tidsstämpel:

Mer från AWS maskininlärning