|
|
||
|---|---|---|
| .. | ||
| 13-TextRep | ||
| 14-Embeddings | ||
| 15-LanguageModeling | ||
| 16-RNN | ||
| 17-GenerativeNetworks | ||
| 18-Transformers | ||
| 19-NER | ||
| 20-LangModels | ||
| README.md | ||
README.md
Luonnollisen kielen kÀsittely
TÀssÀ osiossa keskitymme kÀyttÀmÀÀn neuroverkkoja luonnollisen kielen kÀsittelyyn (NLP) liittyvien tehtÀvien ratkaisemiseen. On monia NLP-ongelmia, joita haluamme tietokoneiden pystyvÀn ratkaisemaan:
- Tekstin luokittelu on tyypillinen luokitteluongelma, joka liittyy tekstijonoihin. EsimerkkejĂ€ ovat sĂ€hköpostiviestien luokittelu roskapostiksi tai ei-roskapostiksi, tai artikkeleiden luokittelu urheiluun, liiketoimintaan, politiikkaan jne. LisĂ€ksi chatbotteja kehitettĂ€essĂ€ meidĂ€n on usein ymmĂ€rrettĂ€vĂ€, mitĂ€ kĂ€yttĂ€jĂ€ haluaa sanoa â tĂ€ssĂ€ tapauksessa kĂ€sittelemme tarkoituksen luokittelua. Tarkoituksen luokittelussa on usein kĂ€siteltĂ€vĂ€ monia kategorioita.
- Tunneanalyysi on tyypillinen regressio-ongelma, jossa meidÀn on annettava lauseelle numero (tunne), joka vastaa sen positiivisuuden/negatiivisuuden astetta. Kehittyneempi versio tunneanalyysistÀ on aspektipohjainen tunneanalyysi (ABSA), jossa tunteet kohdistetaan koko lauseen sijaan sen eri osiin (aspekteihin), esim. TÀssÀ ravintolassa pidin ruoasta, mutta tunnelma oli kamala.
- Nimekkeiden tunnistus (NER) viittaa ongelmaan, jossa tekstistÀ poimitaan tiettyjÀ entiteettejÀ. Esimerkiksi lauseessa Minun tÀytyy lentÀÀ huomenna Pariisiin sanat huomenna viittaavat AIKAAN ja Pariisi PAIKKAAN.
- Avainsanojen poiminta on samankaltainen kuin NER, mutta siinÀ sanat, jotka ovat tÀrkeitÀ lauseen merkityksen kannalta, poimitaan automaattisesti ilman erityistÀ esikoulutusta tiettyihin entiteettityyppeihin.
- Tekstin klusterointi voi olla hyödyllistÀ, kun haluamme ryhmitellÀ yhteen samankaltaisia lauseita, esimerkiksi teknisen tuen keskusteluissa esiintyviÀ samankaltaisia pyyntöjÀ.
- Kysymys-vastausjÀrjestelmÀt viittaavat mallin kykyyn vastata tiettyyn kysymykseen. Malli saa syötteenÀ tekstikappaleen ja kysymyksen, ja sen on löydettÀvÀ tekstistÀ kohta, jossa vastaus kysymykseen on (tai joskus luotava vastausteksti).
- Tekstin generointi on mallin kyky luoda uutta tekstiÀ. SitÀ voidaan pitÀÀ luokittelutehtÀvÀnÀ, jossa ennustetaan seuraava kirjain/sana jonkin tekstisyötteen perusteella. Kehittyneet tekstin generointimallit, kuten GPT-3, pystyvÀt ratkaisemaan muita NLP-tehtÀviÀ kÀyttÀmÀllÀ tekniikoita, kuten prompt-ohjelmointi tai prompt-suunnittelu.
- Tekstin tiivistÀminen on tekniikka, jossa haluamme tietokoneen "lukevan" pitkÀn tekstin ja tiivistÀvÀn sen muutamaan lauseeseen.
- KonekÀÀnnös voidaan nÀhdÀ yhdistelmÀnÀ tekstin ymmÀrtÀmistÀ yhdellÀ kielellÀ ja tekstin generointia toisella kielellÀ.
Aluksi suurin osa NLP-tehtÀvistÀ ratkaistiin perinteisillÀ menetelmillÀ, kuten kielioppeja hyödyntÀmÀllÀ. Esimerkiksi konekÀÀnnöksessÀ kÀytettiin jÀsennin-ohjelmia, jotka muunsivat alkuperÀisen lauseen syntaksipuuksi, minkÀ jÀlkeen korkeampia semanttisia rakenteita poimittiin lauseen merkityksen esittÀmiseksi. TÀmÀn merkityksen ja kohdekielen kieliopin perusteella luotiin lopputulos. NykyÀÀn monet NLP-tehtÀvÀt ratkaistaan tehokkaammin neuroverkkojen avulla.
Monet klassiset NLP-menetelmÀt on toteutettu Natural Language Processing Toolkit (NLTK) -kirjastossa Pythonille. Verkossa on saatavilla erinomainen NLTK-kirja, joka kattaa, miten erilaisia NLP-tehtÀviÀ voidaan ratkaista NLTK:ta kÀyttÀen.
Kurssillamme keskitymme pÀÀasiassa neuroverkkojen kÀyttöön NLP:ssÀ, ja kÀytÀmme NLTK:ta tarvittaessa.
Olemme jo oppineet kÀyttÀmÀÀn neuroverkkoja taulukkodatan ja kuvien kÀsittelyyn. Suurin ero nÀiden datatyyppien ja tekstin vÀlillÀ on, ettÀ teksti on vaihtelevan pituinen jono, kun taas kuvien tapauksessa syötteen koko tiedetÀÀn etukÀteen. Vaikka konvoluutiot voivat poimia kuvioita syötteestÀ, tekstin kuviot ovat monimutkaisempia. Esimerkiksi kielteisyys voi olla erotettuna subjektista monilla sanoilla (esim. En pidÀ appelsiineista vs. En pidÀ noista isoista vÀrikkÀistÀ maukkaista appelsiineista), ja se tulisi silti tulkita yhtenÀ kuviona. Siksi kielen kÀsittelyyn tarvitaan uusia neuroverkkotyyppejÀ, kuten toistoverkkoja ja transformereita.
Kirjastojen asentaminen
Jos kÀytÀt paikallista Python-asennusta tÀmÀn kurssin suorittamiseen, saatat joutua asentamaan kaikki NLP:ssÀ tarvittavat kirjastot seuraavilla komennoilla:
PyTorchille
pip install -r requirements-torch.txt
TensorFlow'lle
pip install -r requirements-tf.txt
Voit kokeilla NLP:tÀ TensorFlow'lla Microsoft Learnissa
GPU-varoitus
TÀssÀ osiossa joissakin esimerkeissÀ koulutamme melko suuria malleja.
- KÀytÀ GPU:lla varustettua tietokonetta: On suositeltavaa suorittaa muistikirjat GPU:lla varustetulla tietokoneella, jotta odotusajat suurten mallien kanssa lyhenevÀt.
- GPU-muistin rajoitukset: GPU:lla suorittaminen voi johtaa tilanteisiin, joissa GPU-muisti loppuu, erityisesti suuria malleja koulutettaessa.
- GPU-muistin kulutus: GPU-muistin kulutus koulutuksen aikana riippuu useista tekijöistÀ, kuten minibatchin koosta.
- PienennÀ minibatchin kokoa: Jos kohtaat GPU-muistiongelmia, harkitse minibatchin koon pienentÀmistÀ koodissasi mahdollisena ratkaisuna.
- TensorFlow'n GPU-muistin vapautus: TensorFlow'n vanhemmat versiot eivÀt vÀlttÀmÀttÀ vapauta GPU-muistia oikein, kun koulutetaan useita malleja yhdessÀ Python-ytimessÀ. GPU-muistin kÀytön hallitsemiseksi tehokkaasti voit mÀÀrittÀÀ TensorFlow'n varaamaan GPU-muistia vain tarpeen mukaan.
- Koodin sisÀllyttÀminen: Voit asettaa TensorFlow'n kasvattamaan GPU-muistin varausta vain tarvittaessa lisÀÀmÀllÀ seuraavan koodin muistikirjoihisi:
physical_devices = tf.config.list_physical_devices('GPU')
if len(physical_devices)>0:
tf.config.experimental.set_memory_growth(physical_devices[0], True)
Jos olet kiinnostunut oppimaan NLP:stÀ klassisen koneoppimisen nÀkökulmasta, kÀy tÀssÀ oppituntikokonaisuudessa.
TÀssÀ osiossa
TÀssÀ osiossa opimme:
- Tekstin esittÀminen tensoreina
- Sana-upotukset
- Kielimallinnus
- Toistuvat neuroverkot
- Generatiiviset verkot
- Transformerit
Vastuuvapauslauseke:
TÀmÀ asiakirja on kÀÀnnetty kÀyttÀmÀllÀ tekoÀlypohjaista kÀÀnnöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, ettÀ automaattiset kÀÀnnökset voivat sisÀltÀÀ virheitÀ tai epÀtarkkuuksia. AlkuperÀistÀ asiakirjaa sen alkuperÀisellÀ kielellÀ tulisi pitÀÀ ensisijaisena lÀhteenÀ. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskÀÀnnöstÀ. Emme ole vastuussa vÀÀrinkÀsityksistÀ tai virhetulkinnoista, jotka johtuvat tÀmÀn kÀÀnnöksen kÀytöstÀ.
