Amazon Neptunus ML is een machine learning (ML) mogelijkheid van Amazone Neptunus waarmee u nauwkeurige en snelle voorspellingen kunt doen over uw grafiekgegevens. Onder de motorkap maakt Neptune ML gebruik van Graph Neural Networks (GNN's) om tegelijkertijd te profiteren van de grafiekstructuur en de node/edge-eigenschappen om de taak op te lossen. Traditionele methoden gebruiken ofwel alleen eigenschappen en geen grafiekstructuur (bijv. XGBoost, Neural Networks), of alleen grafiekstructuur en geen eigenschappen (bijv. node2vec, Label Propagation). Om de node/edge-eigenschappen beter te manipuleren, vereisen ML-algoritmen dat de gegevens goed gedragen numerieke gegevens zijn, maar onbewerkte gegevens in een database kunnen andere typen hebben, zoals onbewerkte tekst. Om gebruik te maken van deze andere soorten gegevens, hebben we gespecialiseerde verwerkingsstappen nodig die ze van hun oorspronkelijke type omzetten in numerieke gegevens, en de kwaliteit van de ML-resultaten is sterk afhankelijk van de kwaliteit van deze gegevenstransformaties. Onbewerkte tekst, net als zinnen, is een van de moeilijkste typen om te transformeren, maar recente vooruitgang op het gebied van natuurlijke taalverwerking (NLP) heeft geleid tot krachtige methoden die tekst uit meerdere talen en een grote verscheidenheid aan lengtes aankunnen.
Vanaf versie 1.1.0.0 ondersteunt Neptune ML meerdere tekst-encoders (tekst_fasttext, tekst_sbert, tekst_woord2vec en tekst_tfidf), die de voordelen van recente ontwikkelingen in NLP met zich meebrengt en ondersteuning biedt voor meertalige teksteigenschappen, evenals aanvullende inferentievereisten rond talen en tekstlengte. In een use case voor een functieaanbeveling kunnen de vacatures in verschillende landen bijvoorbeeld in verschillende talen worden beschreven en varieert de lengte van de functiebeschrijvingen aanzienlijk. Bovendien ondersteunt Neptune ML een auto optie die automatisch de beste coderingsmethode kiest op basis van de kenmerken van de tekstfunctie in de gegevens.
In dit bericht illustreren we het gebruik van elke tekst-encoder, vergelijken we hun voor- en nadelen en laten we een voorbeeld zien van hoe u de juiste tekst-encoders kiest voor een taakaanbevelingstaak.
Wat is een tekst-encoder?
Het doel van tekstcodering is om de op tekst gebaseerde edge/node-eigenschappen in Neptune om te zetten in vectoren met een vaste grootte voor gebruik in downstream machine learning-modellen voor nodeclassificatie of linkvoorspellingstaken. De lengte van het tekstkenmerk kan sterk variรซren. Het kan een woord, zin, zin, alinea of โโzelfs een document met meerdere zinnen zijn (de maximale grootte van een enkele eigenschap is 55 MB in Neptune). Bovendien kunnen de tekstfuncties in verschillende talen zijn. Er kunnen ook zinnen zijn die woorden in verschillende talen bevatten, die we definiรซren als code-omschakeling.
Vanaf de 1.1.0.0-release kun je met Neptune ML kiezen uit verschillende tekst-encoders. Elke encoder werkt iets anders, maar heeft hetzelfde doel om een โโtekstwaardeveld van Neptune om te zetten in een vector met een vaste grootte die we gebruiken om ons GNN-model te bouwen met Neptune ML. De nieuwe encoders zijn als volgt:
- tekst_fasttext (nieuw) โ Toepassingen snelle tekst codering. FastText is een bibliotheek voor efficiรซnt leren van tekstrepresentatie.
text_fasttext
wordt aanbevolen voor functies die รฉรฉn en slechts รฉรฉn van de vijf talen gebruiken die fastText ondersteunt (Engels, Chinees, Hindi, Spaans en Frans). Detext_fasttext
methode kan optioneel de . nemenmax_length
veld, dat het maximale aantal tokens specificeert in een teksteigenschapswaarde die zal worden gecodeerd, waarna de tekenreeks wordt afgekapt. Je kunt een token beschouwen als een woord. Dit kan de prestaties verbeteren wanneer teksteigenschapswaarden lange tekenreeksen bevatten, want alsmax_length
niet is opgegeven, codeert fastText alle tokens, ongeacht de lengte van de tekenreeks. - tekst_sbert (nieuw) โ Gebruikt de zin BERT (SBERT) coderingsmethode. SBERT is een soort zinsinbeddingsmethode die gebruikmaakt van de leermodellen voor contextuele representatie, BERT-Networks.
text_sbert
wordt aanbevolen wanneer de taal niet wordt ondersteund doortext_fasttext
. Neptune ondersteunt twee SBERT-methoden:text_sbert128
, wat de standaard is als u alleen opgeefttext_sbert
entext_sbert512
. Het verschil tussen beide is het maximale aantal tokens in een teksteigenschap dat wordt gecodeerd. Detext_sbert128
codering codeert alleen de eerste 128 tokens, terwijl:text_sbert512
codeert tot 512 tokens. Als gevolg hiervan, met behulp vantext_sbert512
kan meer verwerkingstijd vergen dantext_sbert128
. Beide methoden zijn langzamer dantext_fasttext
. - tekst_woord2vec - Toepassingen Woord2Vec algoritmen die oorspronkelijk door Google zijn gepubliceerd om tekst te coderen. Word2Vec ondersteunt alleen Engels.
- tekst_tfidf โ Gebruikt een term frequentie-inverse documentfrequentie (TF-IDF) vectorizer voor het coderen van tekst. TF-IDF-codering ondersteunt statistische functies die de andere coderingen niet hebben. Het kwantificeert het belang of de relevantie van woorden in รฉรฉn knooppunteigenschap tussen alle andere knooppunten.
Merk op dat text_word2vec
en text_tfidf
werden eerder ondersteund en de nieuwe methoden text_fasttext
en text_sbert
worden aanbevolen boven de oude methoden.
Vergelijking van verschillende tekst-encoders
De volgende tabel toont de gedetailleerde vergelijking van alle ondersteunde tekstcoderingsopties (text_fasttext
, text_sbert
en text_word2vec
). text_tfidf
is geen op modellen gebaseerde coderingsmethode, maar eerder een op telling gebaseerde meting die evalueert hoe relevant een token (bijvoorbeeld een woord) is voor de tekstkenmerken in andere knooppunten of randen, dus we nemen geen text_tfidf
ter vergelijking. We raden aan om text_tfidf
wanneer u het belang of de relevantie van sommige woorden in รฉรฉn knoop- of randeigenschap wilt kwantificeren tussen alle andere knoop- of randeigenschappen.)
. | . | tekst_fasttext | tekst_sbert | tekst_woord2vec |
Modelvermogen | Ondersteunde taal | Engels, Chinees, Hindi, Spaans en Frans | Meer dan 50 talen | Engels |
Kan teksteigenschappen coderen die woorden in verschillende talen bevatten | Nee | Ja | Nee | |
Max-lengte ondersteuning | Geen maximale lengtelimiet | Codeert de tekstreeks met de maximale lengte van 128 en 512 | Geen maximale lengtelimiet | |
Tijd kosten | het laden | Ongeveer 10 seconde | Ongeveer 2 seconde | Ongeveer 2 seconde |
Gevolgtrekking | Fast | Langzaam | Medium |
Let op de volgende gebruikstips:
- Voor teksteigenschapswaarden in het Engels, Chinees, Hindi, Spaans en Frans:
text_fasttext
is de aanbevolen codering. Het kan echter geen gevallen aan waarin dezelfde zin woorden in meer dan รฉรฉn taal bevat. Voor andere talen dan de vijf diefastText
ondersteunt, gebruiktext_sbert
codering. - Als u veel tekenreeksen voor eigenschapswaarden hebt die langer zijn dan bijvoorbeeld 120 tokens, gebruikt u de
max_length
veld om het aantal tokens in elke tekenreeks te beperken dietext_fasttext
codeert.
Om samen te vatten, afhankelijk van uw gebruikssituatie, raden we de volgende coderingsmethode aan:
- Als uw teksteigenschappen in een van de vijf ondersteunde talen zijn, raden we aan om
text_fasttext
vanwege de snelle gevolgtrekking.text_fasttext
is de aanbevolen keuzes en u kunt ook gebruikentext_sbert
in de volgende twee uitzonderingen. - Als uw teksteigenschappen in verschillende talen zijn, raden we aan om
text_sbert
omdat het de enige ondersteunde methode is die teksteigenschappen kan coderen die woorden in verschillende talen bevatten. - Als uw teksteigenschappen in รฉรฉn taal zijn die niet een van de vijf ondersteunde talen is, raden we u aan om
text_sbert
omdat het meer dan 50 talen ondersteunt. - Als de gemiddelde lengte van uw teksteigenschappen langer is dan 128, overweeg dan het gebruik van
text_sbert512
ortext_fasttext
. Beide methoden kunnen langere tekstreeksen coderen. - Als uw teksteigenschappen alleen in het Engels zijn, kunt u
text_word2vec
, maar we raden aan omtext_fasttext
voor zijn snelle gevolgtrekking.
Use case demo: Taak aanbevelingstaak
Het doel van de taak voor het aanbevelen van banen is om te voorspellen voor welke banen gebruikers zullen solliciteren op basis van hun eerdere sollicitaties, demografische informatie en werkgeschiedenis. Dit bericht gebruikt een open Kaggle-dataset. We construeren de dataset als een grafiek van het type met drie knooppunten: baan, gebruiker en stadsappartementen.
Een baan wordt gekenmerkt door zijn titel, beschrijving, vereisten, plaats en staat. Een gebruiker wordt beschreven met de eigenschappen van major, soort diploma, aantal werkgeschiedenis, totaal aantal jaren werkervaring en meer. Voor deze use case zijn functietitel, functiebeschrijving, functie-eisen en majors allemaal in de vorm van tekst.
In de dataset hebben gebruikers de volgende eigenschappen:
- Land โ Bijvoorbeeld CA of ๅนฟไธ็ (Chinees)
- Groot โ Bijvoorbeeld Human Resources Management of Lic Cytura Fisica (Spaans)
- GraadType โ Bijvoorbeeld Bachelor, Master, PhD of Geen
- WerkGeschiedenisCount โ Bijvoorbeeld 0, 1, 16, enzovoort
- TotalYearsErvaring โ Bijvoorbeeld 0.0, 10.0 of NAN
Vacatures hebben de volgende eigenschappen:
- Titel โ Bijvoorbeeld Administratief Medewerker of Lic Cultura Fรญsica (Spaans).
- Omschrijving โ Bijvoorbeeld: "Deze functie van administratief medewerker is verantwoordelijk voor het uitvoeren van verschillende administratieve en administratieve ondersteunende functies op het gebied van communicatie, ..." Het gemiddelde aantal woorden in een beschrijving ligt rond 192.2.
- Voorwaarden โ Bijvoorbeeld: โTAAKVEREISTEN: 1. Aandacht voor detail; 2. Vermogen om te werken in een snelle omgeving; 3. Factureringโฆโ
- Land: โ Bijvoorbeeld CA, NY, enzovoort.
Het knooppunttype stadsappartementen zoals Washington DC en Orlando FL heeft alleen de identifier voor elk knooppunt. In de volgende sectie analyseren we de kenmerken van verschillende tekstkenmerken en illustreren we hoe u de juiste tekstencoders selecteert voor verschillende teksteigenschappen.
Verschillende tekst-encoders selecteren
Voor ons voorbeeld, de Groot en Titel eigenschappen zijn in meerdere talen en hebben korte tekstreeksen, dus text_sbert
is aanbevolen. De voorbeeldcode voor de exportparameters: is als volgt. Voor de text_sbert
type, zijn er geen andere parametervelden. Hier kiezen we text_sbert128
dan text_sbert512
, omdat de tekstlengte relatief korter is dan 128.
De Omschrijving en Voorwaarden eigenschappen zijn meestal in lange tekstreeksen. De gemiddelde lengte van een beschrijving is ongeveer 192 woorden, wat langer is dan de maximale invoerlengte van text_sbert
(128). We kunnen gebruiken text_sbert512
, maar het kan leiden tot langzamere gevolgtrekking. Bovendien is de tekst in รฉรฉn taal (Engels). Daarom raden we aan text_fasttext
met de en taalwaarde vanwege de snelle gevolgtrekking en niet beperkte invoerlengte. De voorbeeldcode voor de exportparameters: is als volgt. De text_fasttext
codering kan worden aangepast met: taal en maximale lengte. De language
waarde is vereist, maar max_length
is optioneel.
Meer details over de gebruiksscenario's voor functieaanbevelingen zijn te vinden in de: Zelfstudie Neptune notebook.
Voor demonstratiedoeleinden selecteren we รฉรฉn gebruiker, namelijk gebruiker 443931, die houder is van een masterdiploma 'Management en Human Resources'. De gebruiker heeft gesolliciteerd op vijf verschillende banen, genaamd "Human Resources (HR) Manager", "HR-generalist", "Human Resources Manager", "Human Resources Administrator" en "Senior Payroll Specialist". Om de prestaties van de aanbevelingstaak te evalueren, verwijderen we 50% van de sollicitatietaken (de randen) van de gebruiker (hier verwijderen we "Human Resources Administrator" en "Human Resources (HR) Manager) en proberen de top te voorspellen 10 banen waarop deze gebruiker waarschijnlijk zal solliciteren.
Na het coderen van de taakfuncties en gebruikersfuncties, voeren we een linkvoorspellingstaak uit door een relationeel graafconvolutienetwerk (RGCN) -model te trainen. Het trainen van een Neptune ML-model vereist drie stappen: gegevensverwerking, modeltraining en het maken van eindpunten. Nadat het inferentie-eindpunt is gemaakt, kunnen we aanbevelingen doen voor gebruiker 443931. Uit de voorspelde top 10 banen voor gebruiker 443931 (dwz "HR-generalist", "Human Resources (HR) Manager", "Senior Payroll Specialist", "Human Resources Administratorโ, โHR Analystโ, et al.), zien we dat de twee verwijderde jobs tot de 10 voorspellingen behoren.
Conclusie
In dit bericht hebben we het gebruik van de nieuw ondersteunde tekst-encoders in Neptune ML laten zien. Deze tekst-encoders zijn eenvoudig te gebruiken en kunnen meerdere vereisten ondersteunen. Samengevat,
- text_fasttext wordt aanbevolen voor functies die รฉรฉn en slechts รฉรฉn van de vijf talen gebruiken die text_fasttext ondersteunt.
- text_sbert wordt aanbevolen voor tekst die text_fasttext niet ondersteunt.
- text_word2vec ondersteunt alleen Engels en kan in elk scenario worden vervangen door text_fasttext.
Voor meer details over de oplossing, zie de GitHub repo. We raden aan om de tekst-encoders op uw grafiekgegevens te gebruiken om aan uw vereisten te voldoen. U kunt gewoon een encodernaam kiezen en enkele encoderattributen instellen, terwijl u het GNN-model ongewijzigd laat.
Over de auteurs
Jiani Zhang is een toegepaste wetenschapper van AWS AI Research and Education (AIRE). Ze werkt aan het oplossen van toepassingen uit de echte wereld met behulp van machine learning-algoritmen, met name natuurlijke taal- en grafiekgerelateerde problemen.
- Gevorderd (300)
- AI
- ai kunst
- ai kunst generator
- je hebt een robot
- Amazone Neptunus
- kunstmatige intelligentie
- certificering van kunstmatige intelligentie
- kunstmatige intelligentie in het bankwezen
- kunstmatige intelligentie robot
- kunstmatige intelligentie robots
- kunstmatige intelligentiesoftware
- AWS-machine learning
- blockchain
- blockchain conferentie ai
- vindingrijk
- conversatie kunstmatige intelligentie
- crypto conferentie ai
- van dall
- diepgaand leren
- google ai
- machine learning
- Plato
- plato ai
- Plato gegevensintelligentie
- Plato-spel
- PlatoData
- platogamen
- schaal ai
- syntaxis
- zephyrnet