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). Detext_fasttext
metoden kan valfritt tamax_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 ifmax_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 avtext_fasttext
. Neptunus stöder två SBERT-metoder:text_sbert128
, vilket är standard om du bara angertext_sbert
ochtext_sbert512
. Skillnaden mellan dem är det maximala antalet tokens i en textegenskap som kodas. Detext_sbert128
kodning kodar endast de första 128 tokens, medantext_sbert512
kodar upp till 512 tokens. Som ett resultat användertext_sbert512
kan kräva mer handläggningstid äntext_sbert128
. Båda metoderna är långsammare äntext_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_sbert
och 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 somfastText
stödjer, användatext_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 somtext_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ändatext_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
ortext_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ändertext_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.
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.
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
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.
- Avancerat (300)
- AI
- ai konst
- ai art generator
- har robot
- Amazon Neptunus
- artificiell intelligens
- artificiell intelligenscertifiering
- artificiell intelligens inom bankväsendet
- artificiell intelligens robot
- robotar med artificiell intelligens
- programvara för artificiell intelligens
- AWS maskininlärning
- blockchain
- blockchain konferens ai
- coingenius
- konversationskonstnärlig intelligens
- kryptokonferens ai
- dalls
- djupt lärande
- du har google
- maskininlärning
- plato
- plato ai
- Platon Data Intelligence
- Platon spel
- PlatonData
- platogaming
- skala ai
- syntax
- zephyrnet