Koodaa monikielisen tekstin ominaisuudet Amazon Neptunessa ennustavien PlatoBlockchain Data Intelligence -mallien kouluttamiseksi. Pystysuuntainen haku. Ai.

Koodaa monikielisen tekstin ominaisuudet Amazon Neptunessa ennustavien mallien kouluttamiseksi

Amazon Neptune ML on koneoppimiskyky (ML). Amazonin Neptuuni jonka avulla voit tehdä tarkkoja ja nopeita ennusteita kaaviotiedoistasi. Kotelon alla Neptune ML käyttää Graph Neural Networks (GNN) -verkkoja hyödyntääkseen samanaikaisesti graafin rakennetta ja solmu-/reunaominaisuuksia käsillä olevan tehtävän ratkaisemiseksi. Perinteiset menetelmät käyttävät joko vain ominaisuuksia eikä kuvaajarakennetta (esim. XGBoost, Neural Networks) tai vain graafin rakennetta ilman ominaisuuksia (esim. node2vec, Label Propagation). Solmun/reunan ominaisuuksien käsittelemiseksi paremmin ML-algoritmit edellyttävät tietojen olevan hyvin käyttäytyviä numeerisia tietoja, mutta tietokannan raakadatalla voi olla muun tyyppisiä tietoja, kuten raakatekstiä. Näiden muuntyyppisten tietojen hyödyntämiseksi tarvitsemme erityisiä käsittelyvaiheita, jotka muuntavat ne alkuperäisestä tyypistä numeerisiksi tiedoiksi, ja ML-tulosten laatu riippuu voimakkaasti näiden datamuunnosten laadusta. Raakateksti, kuten lauseet, kuuluu vaikeimmin muunnettaviin tyyppeihin, mutta viimeaikainen edistyminen luonnollisen kielenkäsittelyn (NLP) alalla on johtanut vahvoihin menetelmiin, jotka pystyvät käsittelemään useista kielistä ja eripituisia tekstiä.

Versiosta 1.1.0.0 alkaen Neptune ML tukee useita tekstikoodareita (text_fasttext, text_sbert, text_word2vecja text_tfidf), jotka tuovat etuja NLP:n viimeaikaisista edistysaskeleista ja mahdollistavat tuen monikielisille tekstiominaisuuksille sekä ylimääräiset päättelyvaatimukset kielistä ja tekstin pituudesta. Esimerkiksi työsuositusten käyttötapauksessa eri maiden työpaikat voidaan kuvata eri kielillä ja työnkuvausten pituus vaihtelee huomattavasti. Lisäksi Neptune ML tukee auto vaihtoehto, joka valitsee automaattisesti parhaan koodausmenetelmän datan tekstiominaisuuden ominaisuuksien perusteella.

Tässä viestissä havainnollistamme kunkin tekstikooderin käyttöä, vertaamme niiden etuja ja haittoja sekä näytämme esimerkin siitä, kuinka valita oikeat tekstienkooderit työsuositustehtävää varten.

Mikä on tekstikooderi?

Tekstin koodauksen tavoitteena on muuntaa Neptunen tekstipohjaiset reuna-/solmuominaisuudet kiinteän kokoisiksi vektoreiksi käytettäväksi alavirran koneoppimismalleissa joko solmujen luokittelussa tai linkin ennustetehtävissä. Tekstiominaisuuden pituus voi vaihdella paljon. Se voi olla sana, lause, lause, kappale tai jopa asiakirja, jossa on useita lauseita (yhden ominaisuuden enimmäiskoko on 55 Mt Neptunuksessa). Lisäksi tekstiominaisuudet voivat olla eri kielillä. Voi myös olla lauseita, jotka sisältävät sanoja useilla eri kielillä, joita määrittelemme koodinvaihto.

Julkaisusta 1.1.0.0 alkaen Neptune ML:n avulla voit valita useista eri tekstikoodereista. Jokainen kooderi toimii hieman eri tavalla, mutta sillä on sama tavoite muuntaa tekstiarvokenttä Neptunuksesta kiinteän kokoiseksi vektoriksi, jota käytämme GNN-mallimme rakentamiseen Neptune ML:n avulla. Uudet kooderit ovat seuraavat:

  • text_fasttext (uusi) – Käyttötarkoitukset tekstitelevisiosignaalia koodaus. FastText on kirjasto tehokkaaseen tekstin esittämisen oppimiseen. text_fasttext suositellaan ominaisuuksille, jotka käyttävät yhtä ja vain yhtä viidestä fastTextin tukemasta kielestä (englanti, kiina, hindi, espanja ja ranska). The text_fasttext menetelmä voi valinnaisesti ottaa max_length -kenttä, joka määrittää koodattavan tekstin ominaisuuden arvossa olevien merkkien enimmäismäärän, jonka jälkeen merkkijono katkaistaan. Voit pitää merkkiä sanana. Tämä voi parantaa suorituskykyä, kun tekstin ominaisuusarvot sisältävät pitkiä merkkijonoja, koska jos max_length ei ole määritetty, fastText koodaa kaikki tokenit merkkijonon pituudesta riippumatta.
  • text_sbert (uusi) – Käyttää lausetta BERT (SBERT) koodausmenetelmää. SBERT on eräänlainen lauseen upotusmenetelmä, jossa käytetään kontekstuaalisen esityksen oppimismalleja, BERT-Networks. text_sbert suositellaan, kun kieltä ei tue text_fasttext. Neptune tukee kahta SBERT-menetelmää: text_sbert128, joka on oletusarvo, jos vain määrität text_sbertja text_sbert512. Niiden välinen ero on tekstiominaisuuden koodattavien merkkien enimmäismäärä. The text_sbert128 koodaus koodaa vain ensimmäiset 128 merkkiä, kun taas text_sbert512 koodaa jopa 512 merkkiä. Tämän seurauksena käyttämällä text_sbert512 voi vaatia enemmän käsittelyaikaa kuin text_sbert128. Molemmat menetelmät ovat hitaampia kuin text_fasttext.
  • text_word2vec - Käyttää Word2Vec Googlen alun perin julkaisemat algoritmit tekstin koodaamiseksi. Word2Vec tukee vain englantia.
  • text_tfidf – Käyttää termiä taajuus-käänteinen asiakirjataajuus (TF-IDF) vektoriohjelma tekstin koodaamiseen. TF-IDF-koodaus tukee tilastollisia ominaisuuksia, joita muut koodaukset eivät. Se kvantifioi yhden solmuominaisuuden sanojen tärkeyden tai merkityksellisyyden kaikkien muiden solmujen joukossa.

Huomaa, että text_word2vec ja text_tfidf aiemmin tuetut ja uudet menetelmät text_fasttext ja text_sbert suositellaan vanhojen menetelmien sijaan.

Erilaisten tekstienkooderien vertailu

Seuraava taulukko näyttää yksityiskohtaisen vertailun kaikista tuetuista tekstin koodausvaihtoehdoista (text_fasttext, text_sbertja text_word2vec). text_tfidf ei ole mallipohjainen koodausmenetelmä, vaan pikemminkin laskentaan perustuva mitta, joka arvioi, kuinka osuva merkki (esimerkiksi sana) on muiden solmujen tai reunojen tekstiominaisuuksien kannalta, joten emme sisällytä text_tfidf vertailun vuoksi. Suosittelemme käyttöä text_tfidf kun haluat kvantifioida joidenkin sanojen tärkeyden tai relevanssia yhdessä solmun tai reunan ominaisuudessa kaikkien muiden solmu- tai reunaominaisuuksien joukossa.)

. . text_fasttext text_sbert text_word2vec
Mallin kyky Tuettu kieli Englanti, kiina, hindi, espanja ja ranska Yli 50 kieltä Englanti
Osaa koodata tekstiominaisuuksia, jotka sisältävät sanoja eri kielillä Ei Kyllä Ei
Maksimipituustuki Ei enimmäispituusrajoitusta Koodaa tekstisekvenssin, jonka enimmäispituus on 128 ja 512 Ei enimmäispituusrajoitusta
Aikakustannukset Ladataan Noin 10 sekuntia Noin 2 sekuntia Noin 2 sekuntia
Päättely Nopea Hidas Keskikokoinen

Huomioi seuraavat käyttövinkit:

  • Tekstiominaisuuksien arvot englanniksi, kiinaksi, hindiksi, espanjaksi ja ranskaksi: text_fasttext on suositeltu koodaus. Se ei kuitenkaan pysty käsittelemään tapauksia, joissa sama lause sisältää sanoja useammalla kuin yhdellä kielellä. Muille kielille kuin niille viidelle fastText tukee, käytä text_sbert koodaavat.
  • Jos sinulla on monia ominaisuuden arvon tekstijonoja, jotka ovat pidempiä kuin esimerkiksi 120 merkkiä, käytä max_length -kenttä rajoittaaksesi merkkien määrää kussakin merkkijonossa text_fasttext koodaa.

Yhteenvetona, käyttötapauksestasi riippuen, suosittelemme seuraavaa koodausmenetelmää:

  • Jos tekstiominaisuudet ovat jollakin viidestä tuetuista kielestä, suosittelemme käyttämään sitä text_fasttext sen nopean päättelyn ansiosta. text_fasttext on suositeltu vaihtoehto ja voit myös käyttää text_sbert kahdessa seuraavassa poikkeuksessa.
  • Jos tekstiominaisuudet ovat eri kielillä, suosittelemme käyttämään text_sbert koska se on ainoa tuettu menetelmä, joka voi koodata tekstin ominaisuuksia, jotka sisältävät sanoja useilla eri kielillä.
  • Jos tekstiominaisuudet ovat yhdellä kielellä, joka ei ole yksi viidestä tuetusta kielestä, suosittelemme käyttämään sitä text_sbert koska se tukee yli 50 kieltä.
  • Jos tekstiominaisuuksien keskimääräinen pituus on yli 128, harkitse sen käyttöä text_sbert512 or text_fasttext. Molemmat menetelmät voivat koodata pidempiä tekstisarjoja.
  • Jos tekstiominaisuudet ovat vain englanninkielisiä, voit käyttää text_word2vec, mutta suosittelemme käyttämään text_fasttext sen nopean päättelyn vuoksi.

Käyttötapausesittely: Työn suositustehtävä

Työsuositustehtävän tavoitteena on ennustaa aiempien hakemustensa, demografisten tietojen ja työhistoriansa perusteella, mitä töitä käyttäjät hakevat. Tämä viesti käyttää avoin Kaggle-tietojoukko. Rakennamme tietojoukon kolmen solmun tyyppisenä graafina: Työpaikka, lähettämäja kaupunki.

Työlle on ominaista sen nimi, kuvaus, vaatimukset, sijaintikaupunki ja osavaltio. Käyttäjää kuvataan pääaineen, tutkintotyypin, työhistorian, työkokemusvuosien kokonaismäärän ja muiden ominaisuuksilla. Tässä käyttötapauksessa työn nimi, työnkuvaus, työn vaatimukset ja pääaineet ovat kaikki tekstin muodossa.

Tietojoukossa käyttäjillä on seuraavat ominaisuudet:

  • Osavaltio – Esimerkiksi CA tai 广东省 (kiina)
  • Merkittävä – Esimerkiksi henkilöstöhallinto tai Lic Cytura Fisica (espanja)
  • DegreeType – Esimerkiksi kandidaatin, maisterin, tohtorin tai ei mitään
  • WorkHistoryCount – Esimerkiksi 0, 1, 16 ja niin edelleen
  • Total Years Experience – Esimerkiksi 0.0, 10.0 tai NAN

Työpaikoilla on seuraavat ominaisuudet:

  • Otsikko – Esimerkiksi hallintoassistentti tai Lic Cultura Física (espanja).
  • Kuvaus – Esimerkiksi "Tämä hallintoavustajan tehtävä vastaa erilaisten viestinnän toimisto- ja hallinnollisten tukitehtävien suorittamisesta..." Kuvauksen sanojen keskimääräinen määrä on noin 192.2.
  • vaatimukset – Esimerkiksi “TYÖVAATIMUKSET: 1. Huomio yksityiskohtiin; 2. Kyky työskennellä nopeatempoisessa ympäristössä; 3. Laskutus…”
  • Osavaltio: – Esimerkiksi CA, NY ja niin edelleen.

Solmun tyyppi kaupunki kuten Washington DC:ssä ja Orlando FL:ssä on vain kunkin solmun tunniste. Seuraavassa osiossa analysoimme eri tekstiominaisuuksien ominaisuuksia ja havainnollistamme, kuinka valitaan oikeat tekstienkooderit eri tekstiominaisuuksille.

Kuinka valita erilaisia ​​tekstikoodeja

Esimerkiksi meidän Merkittävä ja Otsikko ominaisuudet ovat useilla kielillä ja niissä on lyhyitä tekstijaksoja, joten text_sbert on suositeltavaa. Mallikoodi vientiparametrit on seuraava. Varten text_sbert tyyppiä, muita parametrikenttiä ei ole. Tässä valitsemme text_sbert128 muu kuin text_sbert512, koska tekstin pituus on suhteellisen lyhyempi kuin 128.

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

- Kuvaus ja vaatimukset ominaisuudet ovat yleensä pitkissä tekstisarjoissa. Kuvauksen keskimääräinen pituus on noin 192 sanaa, mikä on pidempi kuin syötettävän enimmäispituuden text_sbert (128). Voimme käyttää text_sbert512, mutta se voi johtaa hitaampaan päättelyyn. Lisäksi teksti on yhdellä kielellä (englanniksi). Siksi suosittelemme text_fasttext jossa en kielen arvo sen nopean päättelyn ja rajoittamattoman syötteen pituuden vuoksi. Mallikoodi vientiparametrit on seuraava. The text_fasttext koodausta voidaan mukauttaa käyttämällä Kieli ja Maksimi pituus. language arvo vaaditaan, mutta max_length on valinnainen.

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

Tarkemmat tiedot työsuositusten käyttötapauksista löydät osoitteesta Neptune-muistikirjan opetusohjelma.

Esittelytarkoituksessa valitsemme yhden käyttäjän, eli käyttäjän 443931, jolla on johtamisen ja henkilöstöhallinnon maisterin tutkinto. Käyttäjä on hakenut viiteen eri työhön, nimeltään "Human Resources (HR) Manager", "HR Generalist", "Human Resources Manager", "Human Resources Administrator" ja "Senior Payroll Specialist". Suositustehtävän suorituskyvyn arvioimiseksi poistamme 50 % käyttäjän hakemista töistä (reunat) (tästä poistamme "Human Resources Administrator" ja "Human Resources (HR) Manager) ja yritämme ennustaa alkuun 10 työpaikkaa, joihin tämä käyttäjä todennäköisimmin hakee.

Työn ominaisuuksien ja käyttäjäominaisuuksien koodauksen jälkeen suoritamme linkin ennustustehtävän kouluttamalla relaatiograafien konvoluutioverkon (RGCN) mallin. Neptune ML -mallin kouluttaminen vaatii kolme vaihetta: tietojenkäsittely, mallin koulutus ja päätepisteiden luominen. Kun päätepäätepiste on luotu, voimme tehdä suosituksia käyttäjälle 443931. Käyttäjän 10 ennustetuista 443931 suosituimmasta työpaikasta (eli "HR Generalist", "Human Resources (HR) Manager", "Senior Payroll Specialist", "Human Resurssien järjestelmänvalvoja", "HR Analyst" et al.), havaitsemme, että kaksi poistettua työtä ovat 10 ennusteen joukossa.

Yhteenveto

Tässä viestissä näytimme äskettäin tuettujen tekstienkooderien käytön Neptune ML:ssä. Nämä tekstikooderit ovat helppokäyttöisiä ja voivat tukea useita vaatimuksia. Yhteenvetona,

  • text_fasttext on suositeltavaa ominaisuuksille, jotka käyttävät yhtä ja vain yhtä viidestä text_fasttextin tukemasta kielestä.
  • text_sbert suositellaan tekstille, jota text_fasttext ei tue.
  • text_word2vec tukee vain englantia, ja se voidaan korvata tekstillä text_fasttext missä tahansa tilanteessa.

Lisätietoja ratkaisusta on kohdassa GitHub repo. Suosittelemme, että käytät graafitiedoissa tekstienkoodeja tarpeidesi mukaan. Voit vain valita kooderin nimen ja asettaa joitain kooderin attribuutteja pitäen samalla GNN-mallin muuttumattomana.


Tietoja kirjoittajista

Koodaa monikielisen tekstin ominaisuudet Amazon Neptunessa ennustavien PlatoBlockchain Data Intelligence -mallien kouluttamiseksi. Pystysuuntainen haku. Ai.Jiani Zhang on AWS AI Research and Educationin (AIRE) soveltava tutkija. Hän työskentelee todellisten sovellusten ratkaisemisessa koneoppimisalgoritmeilla, erityisesti luonnolliseen kieleen ja graafiin liittyviin ongelmiin.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen