Bygg et nyhetsbasert varslingssystem i sanntid med Twitter, Amazon SageMaker og Hugging Face PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Bygg et nyhetsbasert varslingssystem i sanntid med Twitter, Amazon SageMaker og Hugging Face

I dag er sosiale medier en stor kilde til nyheter. Brukere er avhengige av plattformer som Facebook og Twitter for å konsumere nyheter. For enkelte bransjer, som forsikringsselskaper, første respondenter, politi og offentlige etater, kan det å raskt behandle nyheter om relevante hendelser som inntreffer hjelpe dem med å handle mens disse hendelsene fortsatt utspiller seg.

Det er ikke uvanlig at organisasjoner som prøver å trekke ut verdi fra tekstdata, ser etter en løsning som ikke involverer opplæring av en kompleks NLP-modell (naturlig språkbehandling). For disse organisasjonene er det mer praktisk å bruke en forhåndsopplært NLP-modell. Videre, hvis den valgte modellen ikke tilfredsstiller deres suksessverdier, ønsker organisasjoner å enkelt kunne velge en annen modell og revurdere.

For tiden er det enklere enn noen gang å trekke ut informasjon fra tekstdata takket være følgende:

  • Fremveksten av toppmoderne, generelle NLP-arkitekturer som transformatorer
  • Muligheten som utviklere og dataforskere har til raskt å bygge, trene og distribuere modeller for maskinlæring (ML) i stor skala på skyen med tjenester som Amazon SageMaker
  • Tilgjengeligheten av tusenvis av ferdigtrente NLP-modeller på hundrevis av språk og med støtte for flere rammeverk levert av fellesskapet på plattformer som Klemmer Face Hub

I dette innlegget viser vi deg hvordan du bygger et sanntidsvarslingssystem som bruker nyheter fra Twitter og klassifiserer tweetene ved hjelp av en forhåndstrent modell fra Hugging Face Hub. Du kan bruke denne løsningen for nullskuddsklassifisering, noe som betyr at du kan klassifisere tweets i praktisk talt alle kategorier, og distribuere modellen med SageMaker for sanntidsslutning.

Alternativt, hvis du leter etter innsikt i kundens samtaler og utdype merkevarebevisstheten ved å analysere interaksjoner på sosiale medier, oppfordrer vi deg til å sjekke ut AI-drevet dashbord for sosiale medier. Løsningen bruker Amazon Comprehend, en fullstendig administrert NLP-tjeneste som avdekker verdifull innsikt og sammenhenger i tekst uten å kreve maskinlæringserfaring.

Zero-shot læring

Feltene NLP og naturlig språkforståelse (NLU) har raskt utviklet seg til å ta for seg brukstilfeller som involverer tekstklassifisering, spørsmålssvar, oppsummering, tekstgenerering og mer. Denne utviklingen har vært mulig, delvis takket være fremveksten av toppmoderne, generelle arkitekturer som transformatorer, men også tilgjengeligheten av flere tekstkorpuer av bedre kvalitet tilgjengelig for opplæring av slike modeller.

Transformatorarkitekturen er et komplekst nevralt nettverk som krever domeneekspertise og en enorm mengde data for å kunne trenes opp fra bunnen av. En vanlig praksis er å ta en forhåndsopplært toppmoderne transformator som BERT, RoBERTa, T5, GPT-2 eller DistilBERT og finjustere (overføringslæring) modellen til en spesifikk brukstilfelle.

Likevel kan selv å utføre overføringslæring på en forhåndsopplært NLP-modell ofte være en utfordrende oppgave, som krever store mengder merkede tekstdata og et team av eksperter for å kurere dataene. Denne kompleksiteten hindrer de fleste organisasjoner i å bruke disse modellene effektivt, men null-skuddslæring hjelper ML-utøvere og organisasjoner med å overvinne denne mangelen.

Zero-shot learning er en spesifikk ML-oppgave der en klassifikator lærer på ett sett med etiketter under trening, og deretter under inferens blir evaluert på et annet sett med etiketter som klassifisereren aldri har sett før. I NLP kan du bruke en nullskuddssekvensklassifisering som er trent på en NLI-oppgave (natural language inference) for å klassifisere tekst uten noen finjustering. I dette innlegget bruker vi det populære NLI BART modell bart-large-mnli for å klassifisere tweets. Dette er en stor forhåndstrent modell (1.6 GB), tilgjengelig på Hugging Face-modellhuben.

Hugging Face er et AI-selskap som administrerer en åpen kildekode-plattform (Hugging Face Hub) med tusenvis av ferdigtrente NLP-modeller (transformatorer) på mer enn 100 forskjellige språk og med støtte for ulike rammeverk som TensorFlow og PyTorch. Transformatorbiblioteket hjelper utviklere og dataforskere med å komme i gang med komplekse NLP- og NLU-oppgaver som klassifisering, informasjonsutvinning, spørsmålssvar, oppsummering, oversettelse og tekstgenerering.

AWS og Hugging Face har samarbeidet for å forenkle og fremskynde bruken av NLP-modeller. Et sett med Deep Learning Containers (DLC) for opplæring og slutning i PyTorch eller TensorFlow, og Hugging Face-estimatorer og prediktorer for SageMaker Python SDK er nå tilgjengelig. Disse egenskapene hjelper utviklere med alle nivåer av ekspertise å komme i gang med NLP enkelt.

Oversikt over løsning

Vi tilbyr en fungerende løsning som henter tweets i sanntid fra utvalgte Twitter-kontoer. For å demonstrere løsningen vår bruker vi tre kontoer, Amazon Web Services (@awscloud), AWS Security (@AWSSecurityInfo), og Amazon Science (@AmazonScience), og klassifiser innholdet deres i en av følgende kategorier: sikkerhet, database, databehandling, lagring og maskinlæring. Hvis modellen returnerer en kategori med en konfidensscore på over 40 %, sendes et varsel.

I det følgende eksemplet klassifiserte modellen en tweet fra Amazon Web Services i kategorien maskinlæring, med en konfidensscore på 97 %, og genererte et varsel.

Løsningen er avhengig av en Hugging Face forhåndsopplært transformatormodell (fra Hugging Face Hub) for å klassifisere tweets basert på et sett med etiketter som leveres på slutningstidspunktet – modellen trenger ikke å trenes. Følgende skjermbilder viser flere eksempler og hvordan de ble klassifisert.
Noen relevante eksempler
Vi oppfordrer deg til å prøve løsningen selv. Bare last ned kildekoden fra GitHub repository og følg distribusjonsinstruksjonene i README-filen.

Løsningsarkitektur

Løsningen holder en åpen forbindelse til Twitters endepunkt, og når en ny tweet kommer, sender den en melding til en kø. En forbruker leser meldinger fra køen, ringer klassifiseringsendepunktet og, avhengig av resultatene, varsler sluttbrukeren.

Følgende er arkitekturdiagrammet for løsningen.
Løsningens omfang
Løsningsarbeidsflyten består av følgende komponenter:

  1. Løsningen er avhengig av Twitters Stream API for å få tweets som samsvarer med de konfigurerte reglene (tweets fra kontoene av interesse) i sanntid. For å gjøre det, holder en applikasjon som kjører inne i en beholder en åpen forbindelse til Twitters endepunkt. Referere til Twitter API for mer informasjon.
  2. Containeren går videre Amazon Elastic Container Service (Amazon ECS), en fullstendig administrert containerorkestreringstjeneste som gjør det enkelt for deg å distribuere, administrere og skalere containeriserte applikasjoner. En enkelt oppgave kjører på en serverløs infrastruktur administrert av AWS Fargate.
  3. Twitter Bearer-tokenet er trygt lagret i AWS Systems Manager Parameter Store, en evne til AWS systemansvarlig som gir sikker, hierarkisk lagring for konfigurasjonsdata og hemmeligheter. Beholderbildet er vert på Amazon Elastic Container Registry (Amazon ECR), et fullstendig administrert containerregister som tilbyr hosting med høy ytelse.
  4. Hver gang en ny tweet kommer, setter containerapplikasjonen tweeten inn i en Amazon enkel køtjeneste (Amazon SQS) kø. Amazon SQS er en fullstendig administrert meldingskøtjeneste som lar deg koble fra og skalere mikrotjenester, distribuerte systemer og serverløse applikasjoner.
  5. Løsningens logikk ligger i en AWS Lambda funksjon. Lambda er en serverløs, hendelsesdrevet datatjeneste. Funksjonen bruker nye tweets fra køen og klassifiserer dem ved å ringe et endepunkt.
  6. Endepunktet er avhengig av en Hugging Face-modell og er vert på SageMaker. Endepunktet kjører slutningen og sender ut klassen til tweeten.
  7. Avhengig av klassifiseringen genererer funksjonen et varsel gjennom Amazon enkel varslingstjeneste (Amazon SNS), en fullstendig administrert meldingstjeneste. Du kan abonnere på SNS-emnet, og flere destinasjoner kan motta det varselet (se Amazon SNS-arrangementsdestinasjoner). Du kan for eksempel levere varselet til innbokser som e-postmeldinger (se E-postvarsler).

Implementer Hugging Face-modeller med SageMaker

Du kan velge hvilken som helst av de over 10,000 XNUMX offentlig tilgjengelige modellene fra Hugging Face Model Hub og distribuer dem med SageMaker ved å bruke Hugging Face Inference DLC-er.

Når du bruker AWS skyformasjon, velger du en av de offentlig tilgjengelige Hugging Face Inference Containers og konfigurere modellen og oppgaven. Denne løsningen bruker facebook/bart-large-mnli modell og zero-shot-classification-oppgaven, men du kan velge hvilken som helst av modellene under Nullskuddsklassifisering på Hugging Face Model Hub. Du konfigurerer disse ved å angi miljøvariablene HF_MODEL_ID og HF_TASK i CloudFormation-malen, som i følgende kode:

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, hvis du ikke bruker AWS CloudFormation, kan du oppnå de samme resultatene med få linjer med kode. Referere til Distribuer modeller til Amazon SageMaker for mer informasjon.

For å klassifisere innholdet ringer du bare til SageMaker-endepunktet. Følgende er en Python-kodebit:

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

Legg merke til Falsk verdi for multi_class parameter for å indikere at summen av alle sannsynlighetene for hver klasse vil summere seg til 1.

Løsningsforbedringer

Du kan forbedre løsningen som er foreslått her ved å lagre tweetene og modellresultatene. Amazon enkel lagringstjeneste (Amazon S3), en objektlagringstjeneste, er ett alternativ. Du kan skrive tweets, resultater og andre metadata som JSON-objekter i en S3-bøtte. Du kan deretter utføre ad hoc-spørringer mot det innholdet ved å bruke Amazonas Athena, en interaktiv spørringstjeneste som gjør det enkelt å analysere data i Amazon S3 ved hjelp av standard SQL.

Du kan bruke historikken ikke bare til å trekke ut innsikt, men også til å trene en tilpasset modell. Du kan bruke Hugging Face-støtte til å trene en modell med dine egne data med SageMaker. Lær mer om Kjør trening på Amazon SageMaker.

Virkelige brukssaker

Kunder eksperimenterer allerede med Hugging Face-modeller på SageMaker. Bolivar forsikring, et colombiansk finans- og forsikringsselskap grunnlagt i 1939, er et eksempel.

«Vi utviklet en trusselvarslingsløsning for kunder og forsikringsmeglere. Vi bruker Hugging Face-pre-trente NLP-modeller for å klassifisere tweets fra relevante kontoer for å generere varsler til kundene våre i nesten sanntid som en forebyggende strategi for å redusere krav. Et krav oppstår fordi kundene ikke er klar over risikonivået de er utsatt for. Løsningen lar oss skape bevissthet hos kundene våre, gjøre risiko til noe målbart i konkrete situasjoner.»

– Julian Rico, sjef for forskning og kunnskap i Seguros Bolívar.

Seguros Bolívar jobbet med AWS for å re-arkitektur deres løsning; den er nå avhengig av SageMaker og ligner den som er beskrevet i dette innlegget.

konklusjonen

Zero-shot-klassifisering er ideell når du har lite data for å trene en tilpasset tekstklassifiserer eller når du ikke har råd til å trene en tilpasset NLP-modell. For spesialiserte brukstilfeller, når tekst er basert på spesifikke ord eller termer, er det bedre å gå med en overvåket klassifiseringsmodell basert på et tilpasset opplæringssett.

I dette innlegget viste vi deg hvordan du bygger en nyhetsklassifiser ved å bruke en Hugging Face-nullskuddsmodell på AWS. Vi brukte Twitter som vår nyhetskilde, men du kan velge en nyhetskilde som passer bedre til dine spesifikke behov. Videre kan du enkelt endre modellen, bare spesifiser din valgte modell i CloudFormation-malen.

For kildekoden, se GitHub repository Den inkluderer de fullstendige oppsettinstruksjonene. Du kan klone, endre, distribuere og kjøre det selv. Du kan også bruke det som et utgangspunkt og tilpasse kategoriene og varslingslogikken eller bygge en annen løsning for et lignende brukstilfelle.

Prøv det, og gi oss beskjed om hva du synes. Som alltid gleder vi oss til tilbakemeldingene dine. Du kan sende den til dine vanlige AWS Support-kontakter, eller i AWS-forum for SageMaker.


Om forfatterne

Bygg et nyhetsbasert varslingssystem i sanntid med Twitter, Amazon SageMaker og Hugging Face PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.David Laredo er en Prototyping Architect ved AWS Envision Engineering i LATAM, hvor han har vært med på å utvikle flere maskinlæringsprototyper. Tidligere har han jobbet som maskinlæringsingeniør og har drevet med maskinlæring i over 5 år. Hans interesseområder er NLP, tidsserier og ende-til-ende ML.

Bygg et nyhetsbasert varslingssystem i sanntid med Twitter, Amazon SageMaker og Hugging Face PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Rafael Werneck er Senior Prototyping Architect ved AWS Envision Engineering, basert i Brasil. Tidligere har han jobbet som programvareutviklingsingeniør på Amazon.com.br og Amazon RDS Performance Insights.

Bygg et nyhetsbasert varslingssystem i sanntid med Twitter, Amazon SageMaker og Hugging Face PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Vikram Elango er en AI/ML Specialist Solutions Architect hos Amazon Web Services, basert i Virginia, USA. Vikram hjelper finans- og forsikringsbransjens kunder med design og tankeledelse med å bygge og distribuere maskinlæringsapplikasjoner i stor skala. Han er for tiden fokusert på naturlig språkbehandling, ansvarlig AI, inferensoptimalisering og skalering av ML på tvers av bedriften. På fritiden liker han å reise, gå fotturer, lage mat og camping med familien.

Tidstempel:

Mer fra AWS maskinlæring