TF-IDF on lyhenne sanoista Term Frequency Inverse Document Frequency of records. Se voidaan määritellä laskelmaksi, kuinka merkityksellinen sana sarjassa tai korpuksessa on tekstin kannalta. Merkitys kasvaa suhteessa siihen, kuinka monta kertaa sana esiintyy tekstissä, mutta sen kompensoi sanan esiintymistiheys korpuksessa (tietojoukossa).
Terminologiat:
- Termitaajuus: Asiakirjassa d taajuus edustaa tietyn sanan t esiintymien lukumäärää. Siksi voimme nähdä, että siitä tulee merkityksellisempää, kun sana esiintyy tekstissä, mikä on rationaalista. Koska termien järjestyksellä ei ole merkitystä, voimme käyttää vektoria kuvaamaan tekstiä termimallien pussissa. Jokaiselle asiakirjan tietylle termille on merkintä, jonka arvo on termitaajuus.
Asiakirjassa esiintyvän termin paino on yksinkertaisesti verrannollinen termin esiintymistiheyteen.
tf(t,d) = count of t in d / number of words in d>
- Asiakirjatiheys: Tämä testaa tekstin merkitystä, joka on hyvin samanlainen kuin TF, koko korpuskokoelmassa. Ainoa ero on, että dokumentissa d TF on termin t taajuuslaskuri, kun taas df on esiintymien lukumäärä termin t dokumenttijoukossa N. Toisin sanoen niiden papereiden määrä, joissa sana esiintyy, on DF.
df(t) = occurrence of t in documents>
- Käänteinen asiakirjataajuus: Pääasiassa se testaa, kuinka relevantti sana on. Haun päätavoite on löytää sopivat tietueet, jotka sopivat kysyntään. Koska tf pitää kaikkia termejä yhtä merkittävinä, ei siksi ole mahdollista käyttää vain termiä taajuudet termin painon mittaamiseen paperissa. Selvitä ensin termin t dokumenttitaajuus laskemalla termin sisältävien asiakirjojen lukumäärä:
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>
Termitaajuus on termin esiintymien lukumäärä vain yhdessä asiakirjassa; vaikka asiakirjan tiheys on erillisten asiakirjojen lukumäärä, joissa termi esiintyy, se riippuu koko korpusesta. Katsotaanpa nyt käänteispaperin taajuuden määritelmää. Sanan IDF on korpuksessa olevien asiakirjojen lukumäärä erotettuna tekstin tiheydestä.
idf(t) = N/ df(t) = N/N(t)>
Yleisempää sanaa oletetaan pitävän vähemmän merkittävänä, mutta elementti (selvimmät kokonaisluvut) vaikuttaa liian ankaralta. Otetaan sitten paperin käänteistaajuuden logaritmi (kanta 2). Joten termin t if:stä tulee:
idf(t) = log(N/ df(t))>
- Laskenta: Tf-idf on yksi parhaista mittareista sen määrittämiseksi, kuinka merkittävä termi on sarjan tai aineiston tekstille. tf-idf on painotusjärjestelmä, joka antaa painon jokaiselle asiakirjan sanalle sen termitaajuuden (tf) ja käänteisasiakirjan tiheyden (tf) (idf) perusteella. Sanat, joilla on suurempi painopistemäärä, katsotaan merkitsevämmiksi.
Yleensä tf-idf-paino koostuu kahdesta termistä-
- Normalisoitu termitaajuus (tf) Käänteinen asiakirjataajuus (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>
Pythonissa tf-idf-arvot voidaan laskea käyttämällä TfidfVektorizer() menetelmä sisään sklearn moduuli.
Syntaksi:
sklearn.feature_extraction.text.TfidfVectorizer(syöttö)
Parametrit:
syöttö : Se viittaa ohitettuun parametriasiakirjaan, se voi olla tiedostonimi, tiedosto tai itse sisältö.
Ominaisuudet:
sanasto _ : Se palauttaa termien sanakirjan avaimina ja arvoja nimellä ominaisuusindeksit. idf_ : Se palauttaa Parametrina välitetyn asiakirjan käänteinen dokumenttitaajuusvektori.
Palautukset:
fit_transform(): Se palauttaa joukon termejä yhdessä tf-idf-arvojen kanssa. get_feature_names(): Se palauttaa luettelon ominaisuuksien nimistä.
Vaiheittainen lähestymistapa:
- Tuo moduulit.
Python 3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> |
>
>
- Kerää asiakirjoista merkkijonoja ja luo aineisto, jossa on kokoelma merkkijonoja asiakirjoista d0, d1, ja d2 .
Python 3
# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> |
>
>
- Hae tf-idf arvot osoitteesta sovi_transform() menetelmä.
Python 3
# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> |
>
jasmine davis lapsena
>
- Näytä korpuksessa olevien sanojen idf-arvot.
Python 3
# get idf values> print>(>'
idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> |
>
>
Lähtö:

- Näytä tf-idf-arvot indeksoinnin kanssa.
Python 3
# get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf value:'>)> print>(result)> # in matrix form> print>(>'
tf-idf values in matrix form:'>)> print>(result.toarray())> |
>
>
Lähtö:

len of array javassa
The tulos muuttuja koostuu yksilöllisistä sanoista sekä tf-if-arvoista. Sitä voidaan muokata alla olevan kuvan avulla:

Yllä olevasta kuvasta voidaan luoda alla oleva taulukko:
| Asiakirja | Sana | Asiakirjan hakemisto | Sanahakemisto | tf-idf-arvo |
|---|---|---|---|---|
| d0 | varten | 0 | 0 | 0,549 |
| d0 | nörttiä | 0 | 1 | 0,8355 |
| d1 | nörttiä | 1 | 1 | 1 000 |
| d2 | r2j | 2 | 2 | 1 000 |
Alla on joitain esimerkkejä, jotka kuvaavat sanojen tf-idf-arvojen laskemista korpuksesta:
Esimerkki 1: Alla on täydellinen ohjelma, joka perustuu yllä olevaan lähestymistapaan:
Python 3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get idf values> print>(>'
idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> # get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf value:'>)> print>(result)> # in matrix form> print>(>'
tf-idf values in matrix form:'>)> print>(result.toarray())> |
>
>
Lähtö:

Esimerkki 2: Tässä tf-idf-arvot lasketaan korpuksesta, jolla on yksilölliset arvot.
Python 3
javan viipalointi
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'geek1'> d1>=> 'geek2'> d2>=> 'geek3'> d3>=> 'geek4'> # merge documents into a single corpus> string>=> [d0, d1, d2, d3]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf values:'>)> print>(result)> |
>
>
Lähtö:

Esimerkki 3: Tässä ohjelmassa tf-idf-arvot lasketaan korpuksesta, jossa on samanlaisia dokumentteja.
Python 3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'Geeks for geeks!'> d1>=> 'Geeks for geeks!'> # merge documents into a single corpus> string>=> [d0, d1]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf values:'>)> print>(result)> |
>
>
Lähtö:

Esimerkki 4: Alla on ohjelma, jossa yritämme laskea yksittäisen sanan tf-idf-arvon nörttiä toistetaan useita kertoja useissa asiakirjoissa.
Python 3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign corpus> string>=> [>'Geeks geeks'>]>*>5> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>'
Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>'
tf-idf values:'>)> print>(result)> |
>
>
Lähtö:
