Kod flerspråklige tekstegenskaper i Amazon Neptune for å trene prediktive modeller PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Kod flerspråklige tekstegenskaper i Amazon Neptune for å trene prediktive modeller

Amazon Neptune ML er en maskinlæring (ML) evne til Amazon Neptun som hjelper deg med å lage nøyaktige og raske spådommer på grafdataene dine. Under panseret bruker Neptune ML Graph Neural Networks (GNN) for samtidig å dra nytte av grafstruktur og node/kantegenskaper for å løse oppgaven. Tradisjonelle metoder bruker enten bare egenskaper og ingen grafstruktur (f.eks. XGBoost, Neural Networks), eller bare grafstruktur og ingen egenskaper (f.eks. node2vec, Label Propagation). For bedre å manipulere node-/kantegenskapene krever ML-algoritmer at dataene er veloppdragne numeriske data, men rådata i en database kan ha andre typer, som råtekst. For å gjøre bruk av disse andre datatypene trenger vi spesialiserte behandlingstrinn som konverterer dem fra sin opprinnelige type til numeriske data, og kvaliteten på ML-resultatene er sterkt avhengig av kvaliteten på disse datatransformasjonene. Rå tekst, som setninger, er blant de vanskeligste typene å transformere, men nyere fremskritt innen Natural Language Processing (NLP) har ført til sterke metoder som kan håndtere tekst som kommer fra flere språk og en lang rekke lengder.

Fra og med versjon 1.1.0.0 støtter Neptune ML flere tekstkodere (tekst_rasktekst, text_sbert, tekst_ord2vecog text_tfidf), som gir fordelene med nyere fremskritt innen NLP og muliggjør støtte for flerspråklige tekstegenskaper samt ytterligere slutningskrav rundt språk og tekstlengde. For eksempel, i en brukssak for jobbanbefaling, kan stillingspostene i forskjellige land beskrives på forskjellige språk, og lengden på stillingsbeskrivelsene varierer betydelig. I tillegg støtter Neptune ML en auto alternativ som automatisk velger den beste kodingsmetoden basert på egenskapene til tekstfunksjonen i dataene.

I dette innlegget illustrerer vi bruken av hver tekstkoder, sammenligner fordelene og ulempene deres, og viser et eksempel på hvordan du velger de riktige tekstkoderne for en jobbanbefalingsoppgave.

Hva er en tekstkoder?

Målet med tekstkoding er å konvertere de tekstbaserte kant/node-egenskapene i Neptune til vektorer med fast størrelse for bruk i nedstrøms maskinlæringsmodeller for enten nodeklassifisering eller koblingsprediksjonsoppgaver. Lengden på tekstfunksjonen kan variere mye. Det kan være et ord, frase, setning, avsnitt eller til og med et dokument med flere setninger (maksimal størrelse på en enkelt egenskap er 55 MB i Neptun). I tillegg kan tekstfunksjonene være på forskjellige språk. Det kan også være setninger som inneholder ord på flere ulike språk, som vi definerer som kodeveksling.

Fra og med 1.1.0.0-utgivelsen lar Neptune ML deg velge mellom flere forskjellige tekstkodere. Hver koder fungerer litt forskjellig, men har samme mål å konvertere et tekstverdifelt fra Neptune til en vektor med fast størrelse som vi bruker til å bygge vår GNN-modell ved hjelp av Neptune ML. De nye koderne er som følger:

  • tekst_rasktekst (ny) – Bruker rask tekst koding. FastText er et bibliotek for effektiv læring av tekstrepresentasjon. text_fasttext anbefales for funksjoner som bruker ett og bare ett av de fem språkene som fastText støtter (engelsk, kinesisk, hindi, spansk og fransk). De text_fasttext metoden kan valgfritt ta max_length felt, som spesifiserer maksimalt antall tokens i en tekstegenskapsverdi som skal kodes, hvoretter strengen avkortes. Du kan betrakte et symbol som et ord. Dette kan forbedre ytelsen når tekstegenskapsverdier inneholder lange strenger, fordi if max_length er ikke spesifisert, koder fastText alle tokens uavhengig av strenglengden.
  • text_sbert (ny) – Bruker setningen BERT (SBERT) kodingsmetode. SBERT er en slags setningsinnbyggingsmetode som bruker de kontekstuelle representasjonslæringsmodellene, BERT-Networks. text_sbert anbefales når språket ikke støttes av text_fasttext. Neptun støtter to SBERT-metoder: text_sbert128, som er standard hvis du bare spesifiserer text_sbertog text_sbert512. Forskjellen mellom dem er det maksimale antallet tokens i en tekstegenskap som blir kodet. De text_sbert128 koding koder bare de første 128 tokens, mens text_sbert512 koder for opptil 512 tokens. Som et resultat bruker text_sbert512 kan kreve mer behandlingstid enn text_sbert128. Begge metodene er tregere enn text_fasttext.
  • tekst_ord2vec - Bruker Word2Old algoritmer opprinnelig publisert av Google for å kode tekst. Word2Vec støtter kun engelsk.
  • text_tfidf – Bruker en term frekvens-invers dokumentfrekvens (TF-IDF) Vectorizer for koding av tekst. TF-IDF-koding støtter statistiske funksjoner som de andre kodingene ikke gjør. Den kvantifiserer betydningen eller relevansen av ord i en nodeegenskap blant alle de andre nodene.

Legg merke til at text_word2vec og text_tfidf ble tidligere støttet og de nye metodene text_fasttext og text_sbert anbefales fremfor de gamle metodene.

Sammenligning av forskjellige tekstkodere

Følgende tabell viser en detaljert sammenligning av alle de støttede tekstkodingsalternativene (text_fasttext, text_sbertog text_word2vec). text_tfidf er ikke en modellbasert kodingsmetode, men snarere et tellebasert mål som evaluerer hvor relevant et token (for eksempel et ord) er for tekstfunksjonene i andre noder eller kanter, så vi inkluderer ikke text_tfidf til sammenligning. Vi anbefaler å bruke text_tfidf når du ønsker å kvantifisere viktigheten eller relevansen til noen ord i en node- eller kantegenskap blant alle de andre node- eller kantegenskapene.)

. . tekst_rasktekst text_sbert tekst_ord2vec
Modellkapasitet Støttet språk Engelsk, kinesisk, hindi, spansk og fransk Mer enn 50 språk Engelsk
Kan kode tekstegenskaper som inneholder ord på forskjellige språk Nei Ja Nei
Støtte for maksimal lengde Ingen maksimal lengdegrense Koder tekstsekvensen med maksimal lengde på 128 og 512 Ingen maksimal lengdegrense
Tidskostnad Laster Omtrent 10 sekunder Omtrent 2 sekunder Omtrent 2 sekunder
slutning Rask Sakte Medium

Legg merke til følgende brukstips:

  • For tekstegenskapsverdier på engelsk, kinesisk, hindi, spansk og fransk, text_fasttext er den anbefalte kodingen. Den kan imidlertid ikke håndtere tilfeller der samme setning inneholder ord på mer enn ett språk. For andre språk enn de fem som fastText støtter, bruk text_sbert koding.
  • Hvis du har mange egenskapsverditekststrenger som er lengre enn for eksempel 120 tokens, bruk max_length feltet for å begrense antall tokens i hver streng som text_fasttext koder.

For å oppsummere, avhengig av brukstilfellet, anbefaler vi følgende kodingsmetode:

  • Hvis tekstegenskapene dine er på ett av de fem støttede språkene, anbefaler vi å bruke text_fasttext på grunn av dens raske slutning. text_fasttext er de anbefalte valgene og du kan også bruke text_sbert i de to følgende unntakene.
  • Hvis tekstegenskapene dine er på forskjellige språk, anbefaler vi å bruke text_sbert fordi det er den eneste støttede metoden som kan kode tekstegenskaper som inneholder ord på flere forskjellige språk.
  • Hvis tekstegenskapene dine er på ett språk som ikke er et av de fem støttede språkene, anbefaler vi å bruke text_sbert fordi den støtter mer enn 50 språk.
  • Hvis den gjennomsnittlige lengden på tekstegenskapene dine er lengre enn 128, bør du vurdere å bruke text_sbert512 or text_fasttext. Begge metodene kan bruke kode lengre tekstsekvenser.
  • Hvis tekstegenskapene dine kun er på engelsk, kan du bruke text_word2vec, men vi anbefaler å bruke text_fasttext for sin raske slutning.

Brukscase-demo: Jobanbefalingsoppgave

Målet med jobbanbefalingsoppgaven er å forutsi hvilke jobber brukere vil søke på basert på deres tidligere søknader, demografisk informasjon og arbeidshistorikk. Dette innlegget bruker et åpent Kaggle-datasett. Vi konstruerer datasettet som en tre-node-graf: jobb, brukerog by.

En jobb er preget av tittel, beskrivelse, krav, lokalisert by og stat. En bruker beskrives med egenskapene hovedfag, gradstype, antall arbeidshistorikk, totalt antall år for arbeidserfaring og mer. For denne brukssaken er stillingstittel, stillingsbeskrivelse, stillingskrav og hovedfag i form av tekst.

I datasettet har brukere følgende egenskaper:

  • Tilstand – For eksempel, CA eller 广东省 (kinesisk)
  • Major – For eksempel Human Resources Management eller Lic Cytura Fisica (spansk)
  • DegreeType – For eksempel bachelor, master, doktorgrad eller ingen
  • WorkHistoryCount – For eksempel 0, 1, 16 og så videre
  • TotalYearsExperience – For eksempel 0.0, 10.0 eller NAN

Jobbene har følgende egenskaper:

  • Tittel – For eksempel administrativ assistent eller Lic Cultura Física (spansk).
  • Beskrivelse – For eksempel, "Denne stillingen som administrativ assistent er ansvarlig for å utføre en rekke geistlige og administrative støttefunksjoner innen kommunikasjon, ..." Gjennomsnittlig antall ord i en beskrivelse er rundt 192.2.
  • Krav – For eksempel «JOBBKRAV: 1. Oppmerksomhet på detaljer; 2. Evne til å jobbe i et miljø med høyt tempo; 3. Fakturering..."
  • Tilstand: – For eksempel, CA, NY, og så videre.

Nodetypen by som Washington DC og Orlando FL har bare identifikatoren for hver node. I den følgende delen analyserer vi egenskapene til forskjellige tekstfunksjoner og illustrerer hvordan du velger de riktige tekstkoderne for forskjellige tekstegenskaper.

Hvordan velge forskjellige tekstkodere

For vårt eksempel, Major og Tittel egenskaper er på flere språk og har korte tekstsekvenser, så text_sbert er anbefalt. Eksempelkoden for eksportparametere er som følgende. For text_sbert type, er det ingen andre parameterfelt. Her velger vi text_sbert128 unntatt text_sbert512, fordi tekstlengden er relativt kortere enn 128.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "user",
                "property": "Major",
                "type": "text_sbert128"
            },
            {
                "node": "job",
                "property": "Title",
                "type": "text_sbert128",
            }, ...
        ], ...
    }
}

De Beskrivelse og Krav egenskaper er vanligvis i lange tekstsekvenser. Gjennomsnittlig lengde på en beskrivelse er rundt 192 ord, som er lengre enn den maksimale inndatalengden på text_sbert (128). Vi kan bruke text_sbert512, men det kan føre til langsommere inferens. I tillegg er teksten på ett enkelt språk (engelsk). Derfor anbefaler vi text_fasttext med en språkverdi på grunn av dens raske inferens og ikke begrensede inndatalengde. Eksempelkoden for eksportparametere er som følgende. De text_fasttext koding kan tilpasses ved hjelp av Språk og maks lengde. De language verdi kreves, men max_length er valgfri.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "job",
                "property": "Description",
                "type": "text_fasttext",
                "language": "en",
                "max_length": 256
            },
            {
                "node": "job",
                "property": "Requirements",
                "type": "text_fasttext",
                "language": "en"
            }, ...
        ], ...
    }
}

Flere detaljer om brukssakene for jobbanbefaling finner du i Neptune notatbok opplæring.

For demonstrasjonsformål velger vi én bruker, dvs. bruker 443931, som har en mastergrad i 'Management and Human Resources'. Brukeren har søkt på fem forskjellige jobber, med tittelen "Human Resources (HR) Manager", "HR Generalist", "Human Resources Manager", "Human Resources Administrator" og "Senior Payroll Specialist". For å evaluere ytelsen til anbefalingsoppgaven sletter vi 50 % av søkejobbene (kantene) til brukeren (her sletter vi "Human Resources Administrator" og "Human Resources (HR) Manager) og prøver å forutsi toppen 10 jobber denne brukeren mest sannsynlig vil søke på.

Etter å ha kodet jobbfunksjonene og brukerfunksjonene, utfører vi en koblingsprediksjonsoppgave ved å trene en RGCN-modell (relational graph convolutional network). Trening av en Neptune ML-modell krever tre trinn: databehandling, modelltrening og opprettelse av endepunkt. Etter at slutningsendepunktet er opprettet, kan vi gi anbefalinger for bruker 443931. Fra de anslåtte topp 10 jobbene for bruker 443931 (dvs. "HR-generalist", "Human Resources (HR) Manager", "Senior Payroll Specialist", "Human Ressursadministrator", "HR Analyst", et al.), observerer vi at de to slettede jobbene er blant de 10 spådommene.

konklusjonen

I dette innlegget viste vi bruken av de nylig støttede tekstkoderne i Neptune ML. Disse tekstkoderne er enkle å bruke og kan støtte flere krav. Oppsummert,

  • text_fasttext anbefales for funksjoner som bruker ett og bare ett av de fem språkene som text_fasttext støtter.
  • text_sbert anbefales for tekst som text_fasttext ikke støtter.
  • text_word2vec støtter kun engelsk, og kan erstattes av text_fasttext i alle scenarier.

For mer informasjon om løsningen, se GitHub repo. Vi anbefaler å bruke tekstkoderne på grafdataene dine for å oppfylle kravene dine. Du kan bare velge et kodernavn og angi noen koderattributter, mens du holder GNN-modellen uendret.


Om forfatterne

Kod flerspråklige tekstegenskaper i Amazon Neptune for å trene prediktive modeller PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jiani Zhang er en anvendt vitenskapsmann ved AWS AI Research and Education (AIRE). Hun jobber med å løse virkelige applikasjoner ved hjelp av maskinlæringsalgoritmer, spesielt naturlig språk og grafrelaterte problemer.

Tidstempel:

Mer fra AWS maskinlæring