Codeer meertalige teksteigenschappen in Amazon Neptune om voorspellende modellen PlatoBlockchain Data Intelligence te trainen. Verticaal zoeken. Ai.

Codeer meertalige teksteigenschappen in Amazon Neptune om voorspellende modellen te trainen

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). De text_fasttext methode kan optioneel de . nemen max_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 als max_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 door text_fasttext. Neptune ondersteunt twee SBERT-methoden: text_sbert128, wat de standaard is als u alleen opgeeft text_sbert en text_sbert512. Het verschil tussen beide is het maximale aantal tokens in een teksteigenschap dat wordt gecodeerd. De text_sbert128 codering codeert alleen de eerste 128 tokens, terwijl: text_sbert512 codeert tot 512 tokens. Als gevolg hiervan, met behulp van text_sbert512 kan meer verwerkingstijd vergen dan text_sbert128. Beide methoden zijn langzamer dan text_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 die fastText ondersteunt, gebruik text_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 die text_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 gebruiken text_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 or text_fasttext. Beide methoden kunnen langere tekstreeksen coderen.
  • Als uw teksteigenschappen alleen in het Engels zijn, kunt u text_word2vec, maar we raden aan om text_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.

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

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.

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

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

Codeer meertalige teksteigenschappen in Amazon Neptune om voorspellende modellen PlatoBlockchain Data Intelligence te trainen. Verticaal zoeken. Ai.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.

Tijdstempel:

Meer van AWS-machine learning