Koda flerspråkiga textegenskaper i Amazon Neptune för att träna prediktiva modeller PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Koda flerspråkiga textegenskaper i Amazon Neptune för att träna prediktiva modeller

Amazon Neptune ML är en maskininlärningsförmåga (ML) för Amazon Neptunus som hjälper dig att göra exakta och snabba förutsägelser på dina grafdata. Under huven använder Neptune ML Graph Neural Networks (GNN) för att samtidigt dra fördel av grafstruktur och nod-/kantegenskaper för att lösa uppgiften. Traditionella metoder använder antingen bara egenskaper och ingen grafstruktur (t.ex. XGBoost, Neural Networks), eller bara grafstruktur och inga egenskaper (t.ex. node2vec, Label Propagation). För att bättre manipulera nod-/kantegenskaperna kräver ML-algoritmer att data är väluppfostrade numeriska data, men rådata i en databas kan ha andra typer, som råtext. För att kunna använda dessa andra typer av data behöver vi specialiserade bearbetningssteg som omvandlar dem från sin ursprungliga typ till numeriska data, och kvaliteten på ML-resultaten är starkt beroende av kvaliteten på dessa datatransformationer. Råtext, liksom meningar, är bland de svåraste typerna att omvandla, men de senaste framstegen inom området Natural Language Processing (NLP) har lett till starka metoder som kan hantera text som kommer från flera språk och en mängd olika längder.

Från och med version 1.1.0.0 stöder Neptune ML flera textkodare (text_snabbtext, text_sbert, text_word2vecoch text_tfidf), som ger fördelarna med de senaste framstegen inom NLP och möjliggör stöd för flerspråkiga textegenskaper samt ytterligare slutledningskrav kring språk och textlängd. Till exempel, i ett användningsfall för jobbrekommendationer kan jobbtjänsterna i olika länder beskrivas på olika språk och längden på arbetsbeskrivningarna varierar avsevärt. Dessutom stöder Neptune ML en bil alternativ som automatiskt väljer den bästa kodningsmetoden baserat på egenskaperna hos textfunktionen i data.

I det här inlägget illustrerar vi användningen av varje textkodare, jämför deras fördelar och nackdelar och visar ett exempel på hur man väljer rätt textkodare för en jobbrekommendationsuppgift.

Vad är en textkodare?

Målet med textkodning är att konvertera de textbaserade kant/nodegenskaperna i Neptune till vektorer med fast storlek för användning i nedströms maskininlärningsmodeller för antingen nodklassificering eller länkförutsägelseuppgifter. Längden på textfunktionen kan variera mycket. Det kan vara ett ord, en fras, en mening, ett stycke eller till och med ett dokument med flera meningar (den maximala storleken på en enskild egenskap är 55 MB i Neptunus). Dessutom kan textfunktionerna vara på olika språk. Det kan också finnas meningar som innehåller ord på flera olika språk, vilket vi definierar som kod-byte.

Från och med versionen 1.1.0.0 låter Neptune ML dig välja mellan flera olika textkodare. Varje kodare fungerar lite olika, men har samma mål att konvertera ett textvärdefält från Neptune till en vektor med fast storlek som vi använder för att bygga vår GNN-modell med Neptune ML. De nya kodarna är följande:

  • text_snabbtext (ny) – Används snabbText kodning. FastText är ett bibliotek för effektiv inlärning av textrepresentation. text_fasttext rekommenderas för funktioner som använder ett och endast ett av de fem språk som fastText stöder (engelska, kinesiska, hindi, spanska och franska). De text_fasttext metoden kan valfritt ta max_length fält, som anger det maximala antalet tokens i ett textegenskapsvärde som kommer att kodas, varefter strängen trunkeras. Du kan betrakta en token som ett ord. Detta kan förbättra prestandan när textegenskapsvärden innehåller långa strängar, eftersom if max_length inte anges, kodar fastText alla tokens oavsett stränglängd.
  • text_sbert (ny) – Använder meningen BERT (SBERT) kodningsmetod. SBERT är en slags meningsinbäddningsmetod som använder de kontextuella representationsinlärningsmodellerna, BERT-Networks. text_sbert rekommenderas när språket inte stöds av text_fasttext. Neptunus stöder två SBERT-metoder: text_sbert128, vilket är standard om du bara anger text_sbertoch text_sbert512. Skillnaden mellan dem är det maximala antalet tokens i en textegenskap som kodas. De text_sbert128 kodning kodar endast de första 128 tokens, medan text_sbert512 kodar upp till 512 tokens. Som ett resultat använder text_sbert512 kan kräva mer handläggningstid än text_sbert128. Båda metoderna är långsammare än text_fasttext.
  • text_word2vec - Användningar Word2Old algoritmer som ursprungligen publicerades av Google för att koda text. Word2Vec stöder endast engelska.
  • text_tfidf – Använder en term frekvens-invers dokumentfrekvens (TF-IDF) Vectorizer för kodning av text. TF-IDF-kodning stöder statistiska funktioner som de andra kodningarna inte gör. Den kvantifierar betydelsen eller relevansen av ord i en nodegenskap bland alla andra noder.

Observera att text_word2vec och text_tfidf tidigare stöddes och de nya metoderna text_fasttext och text_sbert rekommenderas framför de gamla metoderna.

Jämförelse av olika textkodare

Följande tabell visar en detaljerad jämförelse av alla textkodningsalternativ som stöds (text_fasttext, text_sbertoch text_word2vec). text_tfidf är inte en modellbaserad kodningsmetod, utan snarare ett räkningsbaserat mått som utvärderar hur relevant en token (till exempel ett ord) är för textfunktionerna i andra noder eller kanter, så vi inkluderar inte text_tfidf för jämförelse. Vi rekommenderar att du använder text_tfidf när du vill kvantifiera betydelsen eller relevansen av vissa ord i en nod- eller kantegenskap bland alla andra nod- eller kantegenskaper.)

. . text_snabbtext text_sbert text_word2vec
Modellkapacitet Språk som stöds engelska, kinesiska, hindi, spanska och franska Mer än 50 språk Engelska
Kan koda textegenskaper som innehåller ord på olika språk Nej Ja Nej
Max längd stöd Ingen maximal längdbegränsning Kodar textsekvensen med den maximala längden på 128 och 512 Ingen maximal längdbegränsning
Tidskostnad Lastning Cirka 10 sekunder Cirka 2 sekunder Cirka 2 sekunder
Slutledning Snabb Sakta Medium

Observera följande användningstips:

  • För textegenskapsvärden på engelska, kinesiska, hindi, spanska och franska, text_fasttext är den rekommenderade kodningen. Den kan dock inte hantera fall där samma mening innehåller ord på mer än ett språk. För andra språk än de fem som fastText stödjer, använda text_sbert kodar.
  • Om du har många textsträngar för egenskapsvärden längre än till exempel 120 tokens, använd max_length för att begränsa antalet tokens i varje sträng som text_fasttext kodar.

För att sammanfatta, beroende på ditt användningsfall, rekommenderar vi följande kodningsmetod:

  • Om dina textegenskaper finns på ett av de fem språken som stöds rekommenderar vi att du använder text_fasttext på grund av dess snabba slutledning. text_fasttext är de rekommenderade valen och du kan också använda text_sbert i följande två undantag.
  • Om dina textegenskaper är på olika språk rekommenderar vi att du använder text_sbert eftersom det är den enda metoden som stöds som kan koda textegenskaper som innehåller ord på flera olika språk.
  • Om dina textegenskaper är på ett språk som inte är ett av de fem språken som stöds rekommenderar vi att du använder text_sbert eftersom den stöder mer än 50 språk.
  • Om den genomsnittliga längden på dina textegenskaper är längre än 128, överväg att använda text_sbert512 or text_fasttext. Båda metoderna kan använda koda längre textsekvenser.
  • Om dina textegenskaper endast är på engelska kan du använda text_word2vec, men vi rekommenderar att du använder text_fasttext för dess snabba slutledning.

Användningsfallsdemo: Jobrekommendationsuppgift

Målet med jobbrekommendationsuppgiften är att förutsäga vilka jobb användare kommer att ansöka om baserat på deras tidigare ansökningar, demografisk information och arbetshistorik. Detta inlägg använder en öppen Kaggle-datauppsättning. Vi konstruerar datamängden som en graf av trenodstyp: jobb, användareoch stad.

Ett jobb kännetecknas av dess titel, beskrivning, krav, belägen stad och stat. En användare beskrivs med egenskaperna huvudämne, examenstyp, antal arbetshistorik, totalt antal år för arbetslivserfarenhet med mera. För detta användningsfall är jobbtitel, arbetsbeskrivning, jobbkrav och huvudämne alla i form av text.

I datasetet har användarna följande egenskaper:

  • Ange – Till exempel, CA eller 广东省 (kinesiska)
  • Större – Till exempel Human Resources Management eller Lic Cytura Fisica (spanska)
  • Typ av examen – Till exempel kandidat-, magister-, doktorsexamen eller ingen
  • WorkHistoryCount – Till exempel 0, 1, 16 och så vidare
  • TotalYearsExperience – Till exempel 0.0, 10.0 eller NAN

Jobb har följande egenskaper:

  • Titel – Till exempel administrativ assistent eller Lic Cultura Física (spanska).
  • Beskrivning – Till exempel, "Denna tjänst som administrativ assistent är ansvarig för att utföra en mängd olika kontors- och administrativa stödfunktioner inom områdena kommunikation, ..." Det genomsnittliga antalet ord i en beskrivning är cirka 192.2.
  • Krav – Till exempel, "ARBETSKRAV: 1. Uppmärksamhet på detaljer; 2.Förmåga att arbeta i en miljö med högt tempo;3.Fakturering...”
  • Ange: – Till exempel, CA, NY, och så vidare.

Nodtypen stad som Washington DC och Orlando FL har bara identifieraren för varje nod. I följande avsnitt analyserar vi egenskaperna hos olika textfunktioner och illustrerar hur man väljer rätt textkodare för olika textegenskaper.

Hur man väljer olika textkodare

För vårt exempel Större och Titel egenskaper är på flera språk och har korta textsekvenser, så text_sbert rekommenderas. Exempelkoden för exportparametrar är som följande. För text_sbert typ, det finns inga andra parameterfält. Här väljer vi text_sbert128 andra än text_sbert512, eftersom textlängden är relativt kortare än 128.

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

Smakämnen Beskrivning och Krav egenskaper är vanligtvis i långa textsekvenser. Medellängden på en beskrivning är cirka 192 ord, vilket är längre än den maximala inmatningslängden på text_sbert (128). Vi kan använda text_sbert512, men det kan resultera i långsammare slutledning. Dessutom är texten på ett enda språk (engelska). Därför rekommenderar vi text_fasttext med en språkvärde på grund av dess snabba slutledning och inte begränsade inmatningslängd. Exempelkoden för exportparametrar är som följande. De text_fasttext kodning kan anpassas med hjälp av språk och Maxlängd. De language värde krävs, men max_length är valfritt.

"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"
            }, ...
        ], ...
    }
}

Mer information om användningsfallen för jobbrekommendationer finns i Handledning för Neptune anteckningsbok.

För demonstrationsändamål väljer vi en användare, dvs användare 443931, som har en magisterexamen i 'Management and Human Resources'. Användaren har ansökt till fem olika jobb, med titeln "Human Resources (HR) Manager", "HR Generalist", "Human Resources Manager", "Human Resources Administrator" och "Senior Payroll Specialist". För att utvärdera resultatet av rekommendationsuppgiften tar vi bort 50 % av användarens ansökningsjobb (kanterna) (här tar vi bort "Human Resources Administrator" och "Human Resources (HR) Manager) och försöker förutse toppen 10 jobb som denna användare med största sannolikhet kommer att ansöka om.

Efter att ha kodat jobbfunktionerna och användarfunktionerna utför vi en länkförutsägelseuppgift genom att träna en RGCN-modell (Relational graph Convolutional Network). Att träna en Neptune ML-modell kräver tre steg: databearbetning, modellträning och skapande av slutpunkter. Efter att slutpunkten har skapats kan vi ge rekommendationer för användare 443931. Från de 10 förutsedda jobben för användare 443931 (dvs. "HR Generalist", "Human Resources (HR) Manager", "Senior Payroll Specialist", "Human Resursadministratör", "HR Analyst", et al.), observerar vi att de två raderade jobben är bland de 10 förutsägelserna.

Slutsats

I det här inlägget visade vi användningen av de nyligen stödda textkodarna i Neptune ML. Dessa textkodare är enkla att använda och kan stödja flera krav. Sammanfattningsvis,

  • text_fasttext rekommenderas för funktioner som använder ett och endast ett av de fem språk som text_fasttext stöder.
  • text_sbert rekommenderas för text som text_fasttext inte stöder.
  • text_word2vec stöder endast engelska och kan ersättas av text_fasttext i alla scenarier.

För mer information om lösningen, se GitHub repo. Vi rekommenderar att du använder textkodarna på dina grafdata för att uppfylla dina krav. Du kan bara välja ett kodarnamn och ställa in några kodarattribut, samtidigt som du behåller GNN-modellen oförändrad.


Om författarna

Koda flerspråkiga textegenskaper i Amazon Neptune för att träna prediktiva modeller PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Jiani Zhang är en tillämpad vetenskapsman vid AWS AI Research and Education (AIRE). Hon arbetar med att lösa verkliga applikationer med hjälp av maskininlärningsalgoritmer, särskilt naturliga språk- och grafrelaterade problem.

Tidsstämpel:

Mer från AWS maskininlärning