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). Detext_fasttext
metoden kan valgfritt tamax_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 ifmax_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 avtext_fasttext
. Neptun støtter to SBERT-metoder:text_sbert128
, som er standard hvis du bare spesifiserertext_sbert
ogtext_sbert512
. Forskjellen mellom dem er det maksimale antallet tokens i en tekstegenskap som blir kodet. Detext_sbert128
koding koder bare de første 128 tokens, menstext_sbert512
koder for opptil 512 tokens. Som et resultat brukertext_sbert512
kan kreve mer behandlingstid enntext_sbert128
. Begge metodene er tregere enntext_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_sbert
og 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 somfastText
støtter, bruktext_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 somtext_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å bruketext_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
ortext_fasttext
. Begge metodene kan bruke kode lengre tekstsekvenser. - Hvis tekstegenskapene dine kun er på engelsk, kan du bruke
text_word2vec
, men vi anbefaler å bruketext_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.
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.
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
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.
- Avansert (300)
- AI
- ai kunst
- ai art generator
- du har en robot
- Amazon Neptun
- kunstig intelligens
- sertifisering av kunstig intelligens
- kunstig intelligens i bankvirksomhet
- kunstig intelligens robot
- kunstig intelligens roboter
- programvare for kunstig intelligens
- AWS maskinlæring
- blockchain
- blockchain konferanse ai
- coingenius
- samtale kunstig intelligens
- kryptokonferanse ai
- dall sin
- dyp læring
- google det
- maskinlæring
- plato
- plato ai
- Platon Data Intelligence
- Platon spill
- PlatonData
- platogaming
- skala ai
- syntaks
- zephyrnet