Indkod flersprogede tekstegenskaber i Amazon Neptune for at træne forudsigelige modeller PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Indkod flersprogede tekstegenskaber i Amazon Neptune for at træne forudsigelige modeller

Amazon Neptune ML er en maskinlæringsevne (ML) af Amazon Neptun der hjælper dig med at lave præcise og hurtige forudsigelser på dine grafdata. Under motorhjelmen bruger Neptune ML Graph Neural Networks (GNN'er) til samtidig at drage fordel af grafstruktur og node/kantegenskaber til at løse opgaven. Traditionelle metoder bruger enten kun egenskaber og ingen grafstruktur (f.eks. XGBoost, Neurale netværk), eller kun grafstruktur og ingen egenskaber (f.eks. node2vec, Label Propagation). For bedre at manipulere node/kantegenskaberne kræver ML-algoritmer, at dataene er velopdragne numeriske data, men rådata i en database kan have andre typer, såsom rå tekst. For at gøre brug af disse andre typer data har vi brug for specialiserede behandlingstrin, der konverterer dem fra deres oprindelige type til numeriske data, og kvaliteten af ​​ML-resultaterne er stærkt afhængig af kvaliteten af ​​disse datatransformationer. Rå tekst, ligesom sætninger, er blandt de sværeste typer at transformere, men de seneste fremskridt inden for Natural Language Processing (NLP) har ført til stærke metoder, der kan håndtere tekst, der kommer fra flere sprog og en lang række forskellige længder.

Fra og med version 1.1.0.0 understøtter Neptune ML flere tekstkodere (tekst_hurtigtekst, text_sbert, tekst_ord2vecog text_tfidf), som bringer fordelene ved de seneste fremskridt inden for NLP og muliggør understøttelse af flersprogede tekstegenskaber samt yderligere slutningskrav omkring sprog og tekstlængde. For eksempel kan jobopslag i forskellige lande beskrives på forskellige sprog, og længden af ​​jobbeskrivelser varierer betydeligt i en jobanbefaling. Derudover understøtter Neptune ML en auto mulighed, der automatisk vælger den bedste indkodningsmetode baseret på karakteristikaene for tekstfunktionen i dataene.

I dette indlæg illustrerer vi brugen af ​​hver tekstkoder, sammenligner deres fordele og ulemper og viser et eksempel på, hvordan du vælger de rigtige tekstkodere til en jobanbefalingsopgave.

Hvad er en tekstkoder?

Målet med tekstkodning er at konvertere de tekstbaserede kant-/knudeegenskaber i Neptune til vektorer med fast størrelse til brug i downstream-maskinlæringsmodeller til enten nodeklassificering eller linkforudsigelsesopgaver. Længden af ​​tekstfunktionen kan variere meget. Det kan være et ord, en sætning, en sætning, et afsnit eller endda et dokument med flere sætninger (den maksimale størrelse af en enkelt egenskab er 55 MB i Neptun). Derudover kan tekstfunktionerne være på forskellige sprog. Der kan også være sætninger, der indeholder ord på flere forskellige sprog, som vi definerer som kodeskift.

Fra og med 1.1.0.0-udgivelsen giver Neptune ML dig mulighed for at vælge mellem flere forskellige tekstkodere. Hver indkoder fungerer lidt forskelligt, men har det samme mål at konvertere et tekstværdifelt fra Neptune til en vektor med fast størrelse, som vi bruger til at bygge vores GNN-model ved hjælp af Neptune ML. De nye indkodere er som følger:

  • tekst_hurtigtekst (ny) – Anvendelser hurtig tekst indkodning. FastText er et bibliotek til effektiv indlæring af tekstrepræsentation. text_fasttext anbefales til funktioner, der bruger et og kun ét af de fem sprog, som fastText understøtter (engelsk, kinesisk, hindi, spansk og fransk). Det text_fasttext metode kan valgfrit tage max_length felt, som angiver det maksimale antal tokens i en tekstegenskabsværdi, der vil blive kodet, hvorefter strengen afkortes. Du kan betragte et symbol som et ord. Dette kan forbedre ydeevnen, når tekstegenskabsværdier indeholder lange strenge, fordi if max_length er ikke angivet, koder fastText alle tokens uanset strengens længde.
  • text_sbert (ny) – Bruger sætningen BERT (SBERT) indkodningsmetode. SBERT er en slags sætningsindlejringsmetode, der bruger de kontekstuelle repræsentationslæringsmodeller, BERT-Networks. text_sbert anbefales, når sproget ikke understøttes af text_fasttext. Neptun understøtter to SBERT-metoder: text_sbert128, som er standard, hvis du blot angiver text_sbertog text_sbert512. Forskellen mellem dem er det maksimale antal tokens i en tekstegenskab, der bliver kodet. Det text_sbert128 kodning koder kun de første 128 tokens, hvorimod text_sbert512 koder op til 512 tokens. Som et resultat, ved hjælp af text_sbert512 kan kræve mere behandlingstid end text_sbert128. Begge metoder er langsommere end text_fasttext.
  • tekst_ord2vec - Anvendelser Word2Vec algoritmer oprindeligt udgivet af Google til at kode tekst. Word2Vec understøtter kun engelsk.
  • text_tfidf – Bruger et udtryk frekvens-invers dokumentfrekvens (TF-IDF) Vectorizer til kodning af tekst. TF-IDF-kodning understøtter statistiske funktioner, som de andre kodninger ikke gør. Det kvantificerer betydningen eller relevansen af ​​ord i en nodeegenskab blandt alle de andre noder.

Bemærk, at text_word2vec , text_tfidf tidligere blev understøttet og de nye metoder text_fasttext , text_sbert anbefales frem for de gamle metoder.

Sammenligning af forskellige tekstkodere

Følgende tabel viser den detaljerede sammenligning af alle de understøttede tekstkodningsmuligheder (text_fasttext, text_sbertog text_word2vec). text_tfidf er ikke en modelbaseret indkodningsmetode, men derimod et optællingsbaseret mål, der evaluerer, hvor relevant et token (f.eks. et ord) er for tekstfunktionerne i andre noder eller kanter, så vi inkluderer ikke text_tfidf til sammenligning. Vi anbefaler at bruge text_tfidf når du vil kvantificere betydningen eller relevansen af ​​nogle ord i en node eller kantegenskab blandt alle de andre node- eller kantegenskaber.)

. . tekst_hurtigtekst text_sbert tekst_ord2vec
Modelkapacitet Understøttet sprog engelsk, kinesisk, hindi, spansk og fransk Mere end 50 sprog Engelsk
Kan kode tekstegenskaber, der indeholder ord på forskellige sprog Ingen Ja Ingen
Max-længde støtte Ingen maksimal længdegrænse Koder tekstsekvensen med den maksimale længde på 128 og 512 Ingen maksimal længdegrænse
Tidsomkostninger lastning Cirka 10 sekunder Cirka 2 sekunder Cirka 2 sekunder
Inferens Hurtigt Langsom Medium

Bemærk følgende brugstips:

  • For tekstegenskabsværdier på engelsk, kinesisk, hindi, spansk og fransk, text_fasttext er den anbefalede kodning. Den kan dog ikke håndtere tilfælde, hvor den samme sætning indeholder ord på mere end ét sprog. For andre sprog end de fem, der fastText støtter, brug text_sbert indkodning.
  • Hvis du har mange egenskabsværditekststrenge, der er længere end f.eks. 120 tokens, skal du bruge max_length felt for at begrænse antallet af tokens i hver streng, der text_fasttext koder.

For at opsummere, afhængigt af din brugssituation, anbefaler vi følgende kodningsmetode:

  • Hvis dine tekstegenskaber er på et af de fem understøttede sprog, anbefaler vi at bruge text_fasttext på grund af dens hurtige slutning. text_fasttext er de anbefalede valg, og du kan også bruge text_sbert i de følgende to undtagelser.
  • Hvis dine tekstegenskaber er på forskellige sprog, anbefaler vi at bruge text_sbert fordi det er den eneste understøttede metode, der kan kode tekstegenskaber, der indeholder ord på flere forskellige sprog.
  • Hvis dine tekstegenskaber er på ét sprog, der ikke er et af de fem understøttede sprog, anbefaler vi at bruge text_sbert fordi den understøtter mere end 50 sprog.
  • Hvis den gennemsnitlige længde af dine tekstegenskaber er længere end 128, kan du overveje at bruge text_sbert512 or text_fasttext. Begge metoder kan bruge encode længere tekstsekvenser.
  • Hvis dine tekstegenskaber kun er på engelsk, kan du bruge text_word2vec, men vi anbefaler at bruge text_fasttext for dens hurtige slutning.

Use case demo: Jobanbefalingsopgave

Målet med jobanbefalingsopgaven er at forudsige, hvilke job brugerne vil søge baseret på deres tidligere ansøgninger, demografiske oplysninger og arbejdshistorik. Dette indlæg bruger et åbent Kaggle-datasæt. Vi konstruerer datasættet som en graf af typen tre knudepunkter: arbejde, brugerog by.

Et job er karakteriseret ved dets titel, beskrivelse, krav, lokaliseret by og stat. En bruger beskrives med egenskaberne hovedfag, gradstype, antal arbejdshistorik, samlet antal år for erhvervserfaring og mere. Til denne brugssag er jobtitel, jobbeskrivelse, jobkrav og hovedfag alle i form af tekst.

I datasættet har brugerne følgende egenskaber:

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

Jobs har følgende egenskaber:

  • Titel – For eksempel administrativ assistent eller Lic Cultura Física (spansk).
  • Beskrivelse – F.eks. "Denne stilling som administrativ assistent er ansvarlig for at udføre en række forskellige gejstlige og administrative støttefunktioner inden for kommunikation, ..." Det gennemsnitlige antal ord i en beskrivelse er omkring 192.2.
  • Krav – For eksempel "JOBKRAV: 1. Opmærksomhed på detaljer; 2. Evne til at arbejde i et miljø med højt tempo; 3. Fakturering..."
  • Tilstand: – For eksempel CA, NY og så videre.

Nodetypen by ligesom Washington DC og Orlando FL har kun identifikatoren for hver node. I det følgende afsnit analyserer vi karakteristika for forskellige tekstfunktioner og illustrerer, hvordan man vælger de korrekte tekstkodere til forskellige tekstegenskaber.

Sådan vælger du forskellige tekstkodere

For vores eksempel Major , Titel egenskaber er på flere sprog og har korte tekstsekvenser, så text_sbert anbefales. Eksempelkoden til eksport parametre er som følgende. For text_sbert type, er der ingen andre parameterfelter. Her vælger vi text_sbert128 undtagen text_sbert512, fordi tekstlængden er relativt kortere end 128.

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

Beskrivelse , Krav egenskaber er normalt i lange tekstsekvenser. Den gennemsnitlige længde af en beskrivelse er omkring 192 ord, hvilket er længere end den maksimale inputlængde på text_sbert (128). Vi kan bruge text_sbert512, men det kan resultere i langsommere inferens. Derudover er teksten på et enkelt sprog (engelsk). Derfor anbefaler vi text_fasttext med en sprogværdi på grund af dens hurtige inferens og ikke begrænsede inputlængde. Eksempelkoden til eksport parametre er som følgende. Det text_fasttext kodning kan tilpasses vha Sprog , max_længde. Det language værdi er påkrævet, 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 jobanbefalinger kan findes i Neptune notesbog tutorial.

Til demonstrationsformål vælger vi én bruger, dvs. bruger 443931, som har en kandidatgrad i 'Management and Human Resources'. Brugeren har søgt til fem forskellige job, med titlen "Human Resources (HR) Manager", "HR Generalist", "Human Resources Manager", "Human Resources Administrator" og "Senior Payroll Specialist". For at evaluere udførelsen af ​​anbefalingsopgaven sletter vi 50 % af de ansøgte job (kanterne) af brugeren (her sletter vi "Human Resources Administrator" og "Human Resources (HR) Manager) og forsøger at forudsige toppen 10 job, som denne bruger sandsynligvis vil søge.

Efter at have kodet jobfunktionerne og brugerfunktionerne udfører vi en linkforudsigelsesopgave ved at træne en relationel grafkonvolutionel netværksmodel (RGCN). Træning af en Neptune ML-model kræver tre trin: databehandling, modeltræning og oprettelse af slutpunkter. Efter at slutpunktet er blevet oprettet, kan vi komme med anbefalinger til bruger 443931. Fra de forudsagte top 10 job for bruger 443931 (dvs. "HR-generalist", "Human Resources (HR) Manager", "Senior Payroll Specialist", "Human Ressourceadministrator", "HR Analyst" et al.), observerer vi, at de to slettede job er blandt de 10 forudsigelser.

Konklusion

I dette indlæg viste vi brugen af ​​de nyligt understøttede tekstkodere i Neptune ML. Disse tekstkodere er nemme at bruge og kan understøtte flere krav. Sammenfattende,

  • text_fasttext anbefales til funktioner, der bruger et og kun ét af de fem sprog, som text_fasttext understøtter.
  • text_sbert anbefales til tekst, som text_fasttext ikke understøtter.
  • text_word2vec understøtter kun engelsk og kan erstattes af text_fasttext i ethvert scenarie.

For flere detaljer om løsningen, se GitHub repo. Vi anbefaler at bruge tekstkoderne på dine grafdata for at opfylde dine krav. Du kan bare vælge et kodenavn og indstille nogle indkoderattributter, mens GNN-modellen bevares uændret.


Om forfatterne

Indkod flersprogede tekstegenskaber i Amazon Neptune for at træne forudsigelige modeller PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Jiani Zhang er en anvendt videnskabsmand fra AWS AI Research and Education (AIRE). Hun arbejder på at løse applikationer i den virkelige verden ved hjælp af maskinlæringsalgoritmer, især naturlige sprog- og grafrelaterede problemer.

Tidsstempel:

Mere fra AWS maskinindlæring