TF-IDF pomeni pogostost izraza Inverse Document Frequency zapisov. Opredelimo ga lahko kot izračun, kako pomembna je beseda v seriji ali korpusu za besedilo. Pomen se povečuje sorazmerno s številom pojavov besede v besedilu, vendar se kompenzira s frekvenco besede v korpusu (naboru podatkov).
Terminologije:
- Frekvenca izraza: V dokumentu d frekvenca predstavlja število primerkov dane besede t. Zato lahko vidimo, da postane bolj relevantno, ko se v besedilu pojavi beseda, ki je racionalna. Ker vrstni red terminov ni pomemben, lahko uporabimo vektor za opis besedila v vrečki terminskih modelov. Za vsak določen izraz v prispevku obstaja vnos z vrednostjo izraza pogostost.
Teža izraza, ki se pojavlja v dokumentu, je preprosto sorazmerna s pogostostjo izraza.
tf(t,d) = count of t in d / number of words in d>
- Pogostost dokumenta: Preizkuša pomen besedila, ki je zelo podobno TF, v celotni zbirki korpusa. Edina razlika je v tem, da je v dokumentu d TF frekvenčni števec za izraz t, medtem ko je df število pojavitev v nizu dokumentov N izraza t. Z drugimi besedami, število dokumentov, v katerih je beseda prisotna, je DF.
df(t) = occurrence of t in documents>
- Inverzna pogostost dokumenta: v glavnem preizkuša, kako pomembna je beseda. Ključni cilj iskanja je najti ustrezne zapise, ki ustrezajo povpraševanju. Ker tf meni, da so vsi izrazi enako pomembni, zato ni mogoče uporabiti le frekvenc izrazov za merjenje teže izraza v članku. Najprej poiščite pogostost dokumenta izraza t tako, da preštejete število dokumentov, ki vsebujejo izraz:
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>
Pogostost izraza je število primerkov izraza samo v enem dokumentu; čeprav je pogostnost dokumenta število posameznih dokumentov, v katerih se izraz pojavi, je odvisna od celotnega korpusa. Zdaj pa poglejmo definicijo frekvence inverznega papirja. IDF besede je število dokumentov v korpusu, ločenih s frekvenco besedila.
idf(t) = N/ df(t) = N/N(t)>
Pogostejša beseda naj bi veljala za manj pomembno, element (najbolj določna cela števila) pa se zdi pregrob. Nato vzamemo logaritem (z osnovo 2) inverzne frekvence papirja. Torej če izraza t postane:
idf(t) = log(N/ df(t))>
- Izračun: Tf-idf je ena najboljših metrik za ugotavljanje, kako pomemben je izraz za besedilo v seriji ali korpusu. tf-idf je sistem uteževanja, ki vsaki besedi v dokumentu dodeli težo na podlagi frekvence izraza (tf) in recipročne frekvence dokumenta (tf) (idf). Besede z višjo oceno teže se štejejo za pomembnejše.
Običajno je utež tf-idf sestavljena iz dveh izrazov -
- Normalizirana pogostost izrazov (tf) Inverzna pogostost dokumenta (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>
V pythonu je mogoče vrednosti tf-idf izračunati z uporabo TfidfVectorizer() metoda v sklearn modul.
Sintaksa:
sklearn.feature_extraction.text.TfidfVectorizer(vnos)
Parametri:
vnos : Nanaša se na podani dokument parametrov, lahko je ime datoteke, datoteka ali sama vsebina.
Lastnosti:
besednjak _ : Vrne slovar izrazov kot ključev in vrednosti kot indeksi funkcij. idf_ : Vrne inverzni frekvenčni vektor dokumenta dokumenta, posredovanega kot parameter.
Vrne:
fit_transform(): vrne niz izrazov skupaj z vrednostmi tf-idf. get_feature_names(): Vrne seznam imen funkcij.
Pristop po korakih:
- Uvoz modulov.
Python3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> |
>
>
- Zberite nize iz dokumentov in ustvarite korpus z zbirko nizov iz dokumentov d0, d1, in d2 .
Python3
# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> |
>
>
- Pridobite vrednosti tf-idf iz fit_transform() metoda.
Python3
# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> |
>
obračanje niza v c
>
- Prikaz IDF vrednosti besed, ki so prisotne v korpusu.
Python3
# get idf values> print>(>'
idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> |
>
>
Izhod:

- Prikaz vrednosti tf-idf skupaj z indeksiranjem.
Python3
# 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())> |
>
>
Izhod:

strukture, ki uporabljajo nize v c
The rezultat spremenljivka je sestavljena iz edinstvenih besed in vrednosti tf-if. Lahko se izdela s spodnjo sliko:

Iz zgornje slike je mogoče ustvariti spodnjo tabelo:
| Dokument | Beseda | Indeks dokumenta | Besedno kazalo | vrednost tf-idf |
|---|---|---|---|---|
| d0 | za | 0 | 0 | 0,549 |
| d0 | geeki | 0 | 1 | 0,8355 |
| d1 | geeki | 1 | 1 | 1.000 |
| d2 | r2j | 2 | 2 | 1.000 |
Spodaj je nekaj primerov, ki prikazujejo, kako izračunati vrednosti tf-idf besed iz korpusa:
Primer 1: Spodaj je celoten program, ki temelji na zgornjem pristopu:
Python3
# 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())> |
>
>
Izhod:

Primer 2: Tu so vrednosti tf-idf izračunane iz korpusa z edinstvenimi vrednostmi.
Python3
# 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)> |
>
>
Izhod:

Primer 3: V tem programu so vrednosti tf-idf izračunane iz korpusa s podobnimi dokumenti.
Python3
# 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)> |
>
>
Izhod:

Primer 4: Spodaj je program, v katerem poskušamo izračunati tf-idf vrednost posamezne besede geeki se večkrat ponovi v več dokumentih.
Python3
javafx
# 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)> |
>
>
Izhod:
