AI-For-Beginners/translations/fi/lessons/5-NLP/13-TextRep
localizeflow[bot] 7a9b37f3b1 chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:07:34 +00:00
..
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:07:34 +00:00
TextRepresentationPyTorch.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
TextRepresentationTF.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
assignment.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:07:34 +00:00

README.md

Tekstin esittäminen tensoreina

Ennakkokysely

Tekstin luokittelu

Tämän osion ensimmäisessä osassa keskitymme tekstin luokittelutehtävään. Käytämme AG News -datakokonaisuutta, joka sisältää uutisartikkeleita, kuten seuraavan:

  • Kategoria: Tiede/Teknologia
  • Otsikko: Ky. Yhtiö voittaa apurahan peptidien tutkimiseen (AP)
  • Teksti: AP - Kemian tutkijan perustama yritys Louisvillen yliopistossa voitti apurahan kehittääkseen...

Tavoitteenamme on luokitella uutinen yhteen kategorioista tekstin perusteella.

Tekstin esittäminen

Jos haluamme ratkaista luonnollisen kielen käsittelyn (NLP) tehtäviä neuroverkoilla, meidän täytyy löytää tapa esittää teksti tensoreina. Tietokoneet esittävät tekstimerkit jo numeroina, jotka vastaavat näytöllä näkyviä fontteja, käyttäen esimerkiksi ASCII- tai UTF-8-koodauksia.

Kuva, joka näyttää kaavion, jossa merkki muunnetaan ASCII- ja binaarimuotoon

Kuvan lähde

Ihmisenä ymmärrämme, mitä kukin kirjain edustaa, ja miten kaikki merkit muodostavat lauseen sanat. Tietokoneet eivät kuitenkaan itsessään ymmärrä tätä, ja neuroverkon täytyy oppia merkitys koulutuksen aikana.

Siksi voimme käyttää erilaisia lähestymistapoja tekstin esittämiseen:

  • Merkki-tason esitys, jossa teksti esitetään käsittelemällä jokaista merkkiä numerona. Jos tekstikorpuksessamme on C erilaista merkkiä, sana Hello esitetään 5xC tensorina. Jokainen kirjain vastaa tensorin saraketta one-hot-koodauksessa.
  • Sana-tason esitys, jossa luomme sanaston kaikista tekstimme sanoista ja esittelemme sanat one-hot-koodauksella. Tämä lähestymistapa on jossain määrin parempi, koska yksittäisellä kirjaimella ei ole paljon merkitystä, ja käyttämällä korkeampia semanttisia käsitteitä - sanoja - yksinkertaistamme tehtävää neuroverkolle. Kuitenkin suuren sanaston koon vuoksi meidän täytyy käsitellä korkeadimensionaalisia harvoja tensoreita.

Riippumatta esitystavasta, meidän täytyy ensin muuntaa teksti tokenien sarjaksi, jossa yksi token voi olla merkki, sana tai joskus jopa osa sanaa. Sitten token muunnetaan numeroksi, yleensä sanaston avulla, ja tämä numero voidaan syöttää neuroverkkoon one-hot-koodauksen avulla.

N-grammit

Luonnollisessa kielessä sanojen tarkka merkitys voidaan määrittää vain kontekstissa. Esimerkiksi neuroverkko ja kalastusverkko tarkoittavat täysin eri asioita. Yksi tapa ottaa tämä huomioon on rakentaa mallimme sanaparien perusteella ja käsitellä sanaparit erillisinä sanaston tokeneina. Tällä tavalla lause I like to go fishing esitetään seuraavilla tokeneilla: I like, like to, to go, go fishing. Tämän lähestymistavan ongelma on, että sanaston koko kasvaa merkittävästi, ja yhdistelmät kuten go fishing ja go shopping esitetään eri tokeneilla, jotka eivät jaa semanttista samankaltaisuutta, vaikka niissä on sama verbi.

Joissakin tapauksissa voimme harkita tri-grammien - kolmen sanan yhdistelmien - käyttöä. Näin ollen lähestymistapaa kutsutaan usein n-grammeiksi. Lisäksi n-grammeja voi olla järkevää käyttää merkki-tason esityksessä, jolloin n-grammit vastaavat suunnilleen eri tavujen yhdistelmiä.

Bag-of-Words ja TF/IDF

Kun ratkaistaan tehtäviä, kuten tekstin luokittelua, meidän täytyy pystyä esittämään teksti yhdellä kiinteän kokoisella vektorilla, jota käytämme syötteenä lopulliselle tiheälle luokittelijalle. Yksi yksinkertaisimmista tavoista tehdä tämä on yhdistää kaikki yksittäiset sanan esitykset, esimerkiksi lisäämällä ne yhteen. Jos lisäämme jokaisen sanan one-hot-koodaukset, päädymme frekvenssivektoriin, joka näyttää, kuinka monta kertaa kukin sana esiintyy tekstissä. Tällainen tekstin esitys kutsutaan bag-of-words (BoW).

Kuva: kirjoittaja

BoW esittää, mitkä sanat esiintyvät tekstissä ja missä määrin, mikä voi olla hyvä indikaattori tekstin sisällöstä. Esimerkiksi poliittinen uutisartikkeli sisältää todennäköisesti sanoja kuten presidentti ja maa, kun taas tieteellinen julkaisu saattaa sisältää sanoja kuten törmäytin, löydetty, jne. Näin ollen sanan frekvenssit voivat monissa tapauksissa olla hyvä indikaattori tekstin sisällöstä.

BoW:n ongelma on, että tietyt yleiset sanat, kuten ja, on, jne., esiintyvät useimmissa teksteissä ja niillä on korkeimmat frekvenssit, mikä peittää alleen todella tärkeät sanat. Voimme vähentää näiden sanojen merkitystä ottamalla huomioon, kuinka usein sanat esiintyvät koko dokumenttikokoelmassa. Tämä on TF/IDF-lähestymistavan pääidea, joka käsitellään tarkemmin tämän oppitunnin liitetyissä muistikirjoissa.

Kuitenkaan mikään näistä lähestymistavoista ei täysin huomioi tekstin semantiikkaa. Tarvitsemme tehokkaampia neuroverkkopohjaisia malleja tähän, joita käsittelemme myöhemmin tässä osiossa.

✍️ Harjoitukset: Tekstin esittäminen

Jatka oppimista seuraavissa muistikirjoissa:

Yhteenveto

Tähän mennessä olemme tutkineet tekniikoita, jotka voivat lisätä frekvenssipainotusta eri sanoille. Ne eivät kuitenkaan pysty esittämään merkitystä tai järjestystä. Kuten kuuluisa kielitieteilijä J. R. Firth sanoi vuonna 1935: "Sanan täydellinen merkitys on aina kontekstuaalinen, eikä merkityksen tutkimista ilman kontekstia voida ottaa vakavasti." Opimme myöhemmin kurssilla, kuinka tekstistä voidaan saada kontekstuaalista tietoa kielimallinnuksen avulla.

🚀 Haaste

Kokeile muita harjoituksia käyttäen bag-of-words-menetelmää ja erilaisia datamalleja. Voit saada inspiraatiota tästä Kaggle-kilpailusta

Jälkikysely

Kertaus ja itseopiskelu

Harjoittele taitojasi tekstin upotuksilla ja bag-of-words-tekniikoilla Microsoft Learnissa

Tehtävä: Muistikirjat