Tf-idf
TF-IDF:n ymmärtäminen
Vaikka bag of words -malli on yksinkertainen ja tehokas, se korostaa liikaa yleisiä termejä, mikä vaikeuttaa harvinaisempien mutta informatiivisempien sanojen tunnistamista. Tämän ratkaisemiseksi käytetään usein TF-IDF-mallia.
TF-IDF (term frequency-inverse document frequency) on tilastollinen mittari, joka kuvaa, kuinka tärkeä sana on tietylle dokumentille suhteessa laajempaan aineistoon.
Toisin kuin BoW, joka perustuu raakatermimääriin, TF-IDF ottaa huomioon sekä termin esiintymistiheyden dokumentissa että sen käänteisen esiintymistiheyden koko aineistossa. Tämä vähentää yleisten termien vaikutusta ja korostaa harvinaisempia, informatiivisempia sanoja.
Kuinka TF-IDF toimii
TF-IDF-arvo termille dokumentissa lasketaan seuraavasti:
tf-idf(t,d)=tf(t,d)×idf(t)missä:
- t on termi (sana tai n-grammi);
- d on dokumentti.
On olemassa useita tapoja laskea tf- ja idf-arvot. Tarkastellaan yhtä yleistä vaihtoehtoa kummallekin:
Termien esiintymistiheys (TF)
Kuvaa, kuinka usein termi esiintyy dokumentissa, ja mittaa sen suhteellista merkitystä kyseisessä dokumentissa. Samoin kuin bag of words -mallissa, käytetään usein yksinkertaista laskentaa:
tf(t,d)=count(t,d)Käänteinen dokumenttitiheys (IDF)
Mittaa, kuinka harvinainen termi on koko aineistossa. Se voidaan laskea luonnollisena logaritmina kaikkien dokumenttien määrän ja termiä sisältävien dokumenttien määrän suhteesta:
idf(t)=log(1+df(t)1+Ndocuments)+1Tässä kaavassa käytetään pehmennystä (lisätään 1), jotta nollalla jakaminen vältetään ja jotta myös yleiset termit saavat ei-nolla IDF-arvon. Käytännössä IDF pienentää usein esiintyvien termien painoarvoa ja korostaa informatiivisempia, harvinaisempia termejä.
Ilman IDF-komponenttia TF-IDF yksinkertaistuisi pelkäksi termien laskemiseksi — eli bag of words -malliksi.
TF-IDF:n laskeminen
Käydään läpi yksinkertainen esimerkki:
Tässä tapauksessa meillä on vain kaksi dokumenttia ja käytämme ainoastaan unigrammeja (yksittäisiä sanoja), joten laskelmat ovat yksinkertaisia. Aloitamme laskemalla kunkin sanan termifrekvenssit molemmissa dokumenteissa, minkä jälkeen lasketaan termien "a" ja "is" IDF-arvot.
Koska korpuksessa on vain kaksi dokumenttia, jokaisella termillä, joka esiintyy molemmissa dokumenteissa, on IDF-arvo 1, kun taas muilla termeillä IDF-arvo on ~1.406465.
Lopuksi voimme laskea kunkin termin TF-IDF-arvot molemmissa dokumenteissa kertomalla TF IDF:llä, jolloin saadaan seuraava matriisi:
L2-normalisointi
Tuloksena saadut TF-IDF-vektorit voivat vaihdella merkittävästi suuruudeltaan, erityisesti suurissa tekstikorpuksissa, johtuen dokumenttien pituuseroista. Tämän vuoksi L2-normalisointia käytetään yleisesti — kaikkien vektorien skaalaamiseksi yhtenäiseen pituuteen, mikä mahdollistaa tasapuoliset ja puolueettomat vertailut eripituisille dokumenteille.
L2-normalisointi, joka tunnetaan myös nimellä euklidinen normalisointi, on yksittäisiin vektoreihin sovellettava prosessi, jossa niiden arvot säädetään siten, että vektorin pituudeksi tulee 1.
L2-normalisointi tehdään jakamalla jokainen vektorin termi vektorin euklidisella normilla.
Jos dokumenttivektori näyttää tältä:
d=(w1,w2,w3,...,wN)missä wi on termin i paino,
niin euklidinen normi näyttää tältä:
∥d∥2=w12+w22+w32+...+wN2ja normalisoitu vektori näyttää tältä:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Näin L2-normalisointi toimii kaksiulotteiselle vektorille (dokumentti, jossa on 2 termiä):
Älä huoli, vaikka kaavat näyttävät monimutkaisilta. Kaikki, mitä teemme, on jakaa jokainen TF-IDF-arvo dokumentissa dokumentin TF-IDF-vektorin pituudella (tai magnitudilla). Tämä skaalaa vektorin niin, että sen pituudeksi tulee 1, mikä varmistaa vektorien yhdenmukaisen vertailun.
Soveltakaamme nyt L2-normalisointia TF-IDF-matriisiimme, jonka laskimme aiemmin:
Tuloksena oleva matriisi on täsmälleen sama kuin esimerkissä, jonka käsittelimme aiemmissa luvuissa.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.45
Tf-idf
Pyyhkäise näyttääksesi valikon
TF-IDF:n ymmärtäminen
Vaikka bag of words -malli on yksinkertainen ja tehokas, se korostaa liikaa yleisiä termejä, mikä vaikeuttaa harvinaisempien mutta informatiivisempien sanojen tunnistamista. Tämän ratkaisemiseksi käytetään usein TF-IDF-mallia.
TF-IDF (term frequency-inverse document frequency) on tilastollinen mittari, joka kuvaa, kuinka tärkeä sana on tietylle dokumentille suhteessa laajempaan aineistoon.
Toisin kuin BoW, joka perustuu raakatermimääriin, TF-IDF ottaa huomioon sekä termin esiintymistiheyden dokumentissa että sen käänteisen esiintymistiheyden koko aineistossa. Tämä vähentää yleisten termien vaikutusta ja korostaa harvinaisempia, informatiivisempia sanoja.
Kuinka TF-IDF toimii
TF-IDF-arvo termille dokumentissa lasketaan seuraavasti:
tf-idf(t,d)=tf(t,d)×idf(t)missä:
- t on termi (sana tai n-grammi);
- d on dokumentti.
On olemassa useita tapoja laskea tf- ja idf-arvot. Tarkastellaan yhtä yleistä vaihtoehtoa kummallekin:
Termien esiintymistiheys (TF)
Kuvaa, kuinka usein termi esiintyy dokumentissa, ja mittaa sen suhteellista merkitystä kyseisessä dokumentissa. Samoin kuin bag of words -mallissa, käytetään usein yksinkertaista laskentaa:
tf(t,d)=count(t,d)Käänteinen dokumenttitiheys (IDF)
Mittaa, kuinka harvinainen termi on koko aineistossa. Se voidaan laskea luonnollisena logaritmina kaikkien dokumenttien määrän ja termiä sisältävien dokumenttien määrän suhteesta:
idf(t)=log(1+df(t)1+Ndocuments)+1Tässä kaavassa käytetään pehmennystä (lisätään 1), jotta nollalla jakaminen vältetään ja jotta myös yleiset termit saavat ei-nolla IDF-arvon. Käytännössä IDF pienentää usein esiintyvien termien painoarvoa ja korostaa informatiivisempia, harvinaisempia termejä.
Ilman IDF-komponenttia TF-IDF yksinkertaistuisi pelkäksi termien laskemiseksi — eli bag of words -malliksi.
TF-IDF:n laskeminen
Käydään läpi yksinkertainen esimerkki:
Tässä tapauksessa meillä on vain kaksi dokumenttia ja käytämme ainoastaan unigrammeja (yksittäisiä sanoja), joten laskelmat ovat yksinkertaisia. Aloitamme laskemalla kunkin sanan termifrekvenssit molemmissa dokumenteissa, minkä jälkeen lasketaan termien "a" ja "is" IDF-arvot.
Koska korpuksessa on vain kaksi dokumenttia, jokaisella termillä, joka esiintyy molemmissa dokumenteissa, on IDF-arvo 1, kun taas muilla termeillä IDF-arvo on ~1.406465.
Lopuksi voimme laskea kunkin termin TF-IDF-arvot molemmissa dokumenteissa kertomalla TF IDF:llä, jolloin saadaan seuraava matriisi:
L2-normalisointi
Tuloksena saadut TF-IDF-vektorit voivat vaihdella merkittävästi suuruudeltaan, erityisesti suurissa tekstikorpuksissa, johtuen dokumenttien pituuseroista. Tämän vuoksi L2-normalisointia käytetään yleisesti — kaikkien vektorien skaalaamiseksi yhtenäiseen pituuteen, mikä mahdollistaa tasapuoliset ja puolueettomat vertailut eripituisille dokumenteille.
L2-normalisointi, joka tunnetaan myös nimellä euklidinen normalisointi, on yksittäisiin vektoreihin sovellettava prosessi, jossa niiden arvot säädetään siten, että vektorin pituudeksi tulee 1.
L2-normalisointi tehdään jakamalla jokainen vektorin termi vektorin euklidisella normilla.
Jos dokumenttivektori näyttää tältä:
d=(w1,w2,w3,...,wN)missä wi on termin i paino,
niin euklidinen normi näyttää tältä:
∥d∥2=w12+w22+w32+...+wN2ja normalisoitu vektori näyttää tältä:
dnorm=(∥d∥2w1,∥d∥2w2,∥d∥2w3,...,∥d∥2wN)Näin L2-normalisointi toimii kaksiulotteiselle vektorille (dokumentti, jossa on 2 termiä):
Älä huoli, vaikka kaavat näyttävät monimutkaisilta. Kaikki, mitä teemme, on jakaa jokainen TF-IDF-arvo dokumentissa dokumentin TF-IDF-vektorin pituudella (tai magnitudilla). Tämä skaalaa vektorin niin, että sen pituudeksi tulee 1, mikä varmistaa vektorien yhdenmukaisen vertailun.
Soveltakaamme nyt L2-normalisointia TF-IDF-matriisiimme, jonka laskimme aiemmin:
Tuloksena oleva matriisi on täsmälleen sama kuin esimerkissä, jonka käsittelimme aiemmissa luvuissa.
Kiitos palautteestasi!