TF-IDF reprezintă Termenul Frecvența Inversa Documentului Frecvența înregistrărilor. Poate fi definit ca calculul cât de relevant este un cuvânt dintr-o serie sau corpus pentru un text. Sensul crește proporțional cu numărul de ori în text care apare un cuvânt, dar este compensat de frecvența cuvântului din corpus (setul de date).
Terminologii:
- Frecvența termenului: În documentul d, frecvența reprezintă numărul de instanțe ale unui anumit cuvânt t. Prin urmare, putem vedea că devine mai relevant atunci când în text apare un cuvânt, ceea ce este rațional. Deoarece ordonarea termenilor nu este semnificativă, putem folosi un vector pentru a descrie textul din pachetul de modele de termeni. Pentru fiecare termen specific din lucrare, există o intrare cu valoarea fiind frecvența termenului.
Greutatea unui termen care apare într-un document este pur și simplu proporțională cu frecvența termenului.
tf(t,d) = count of t in d / number of words in d>
- Frecvența documentului: Aceasta testează sensul textului, care este foarte asemănător cu TF, în întreaga colecție de corpus. Singura diferență este că în documentul d, TF este contorul de frecvență pentru un termen t, în timp ce df este numărul de apariții din setul de documente N al termenului t. Cu alte cuvinte, numărul de lucrări în care este prezent cuvântul este DF.
df(t) = occurrence of t in documents>
- Frecvența inversă a documentelor: în principal, testează cât de relevant este cuvântul. Scopul cheie al căutării este de a localiza înregistrările adecvate care se potrivesc cererii. Deoarece tf consideră toți termenii la fel de semnificativi, este, prin urmare, nu numai posibil să se folosească termenul frecvențe pentru a măsura ponderea termenului în lucrare. Mai întâi, găsiți frecvența documentului a unui termen t numărând numărul de documente care conțin termenul:
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>
Frecvența termenului este numărul de cazuri ale unui termen dintr-un singur document; deși frecvența documentului este numărul de documente separate în care apare termenul, aceasta depinde de întregul corpus. Acum să ne uităm la definiția frecvenței hârtiei inverse. IDF-ul cuvântului este numărul de documente din corpus, separate de frecvența textului.
idf(t) = N/ df(t) = N/N(t)>
Cuvântul mai obișnuit se presupune a fi considerat mai puțin semnificativ, dar elementul (cele mai multe numere întregi definite) pare prea dur. Luăm apoi logaritmul (cu baza 2) al frecvenței inverse a hârtiei. Deci, dacă al termenului t devine:
idf(t) = log(N/ df(t))>
- Calcul: Tf-idf este una dintre cele mai bune valori pentru a determina cât de semnificativ este un termen pentru un text dintr-o serie sau un corpus. tf-idf este un sistem de ponderare care atribuie o pondere fiecărui cuvânt dintr-un document pe baza frecvenței termenului său (tf) și a frecvenței reciproce a documentului (tf) (idf). Cuvintele cu scoruri mai mari de greutate sunt considerate a fi mai semnificative.
De obicei, ponderea tf-idf constă din doi termeni-
- Frecvența termenului normalizat (tf) Frecvența documentului invers (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>
În python, valorile tf-idf pot fi calculate folosind TfidfVectorizer() metoda in sklearn modul.
Sintaxă:
sklearn.feature_extraction.text.TfidfVectorizer(input)
Parametri:
intrare : Se referă la documentul parametru transmis, poate fi un nume de fișier, fișier sau conținut în sine.
Atribute:
vocabular _ : Returnează un dicționar de termeni ca chei și valori ca indici de caracteristici. idf_ : Acesta returnează vectorul de frecvență inversă a documentului trecut ca parametru.
Se intoarce:
fit_transform(): returnează o matrice de termeni împreună cu valorile tf-idf. get_feature_names(): returnează o listă de nume de caracteristici.
Abordare pas cu pas:
- Importă module.
Python3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> |
>
>
- Colectați șiruri din documente și creați un corpus cu o colecție de șiruri din documente d0, d1, și d2 .
Python3
# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> |
>
>
- Obțineți valorile tf-idf de la fit_transform() metodă.
Python3
# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> |
>
arraylist și linkedlist
>
- Afișați valorile idf ale cuvintelor prezente în corpus.
Python3
# get idf values> print>(>'
idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> |
>
>
Ieșire:

- Afișează valorile tf-idf împreună cu indexarea.
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())> |
>
>
Ieșire:

programare round robin
The rezultat variabila constă din cuvinte unice, precum și din valorile tf-if. Poate fi elaborat folosind imaginea de mai jos:

Din imaginea de mai sus se poate genera tabelul de mai jos:
| Document | Cuvânt | Indexul documentelor | Indexul cuvintelor | valoarea tf-idf |
|---|---|---|---|---|
| d0 | pentru | 0 | 0 | 0,549 |
| d0 | tocilari | 0 | 1 | 0,8355 |
| d1 | tocilari | 1 | 1 | 1.000 |
| d2 | r2j | 2 | 2 | 1.000 |
Mai jos sunt câteva exemple care descriu cum se calculează valorile tf-idf ale cuvintelor dintr-un corpus:
Exemplul 1: Mai jos este programul complet bazat pe abordarea de mai sus:
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())> |
>
>
Ieșire:

Exemplul 2: Aici, valorile tf-idf sunt calculate dintr-un corpus având valori unice.
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)> |
>
>
Ieșire:

declarația if-else java
Exemplul 3: În acest program, valorile tf-idf sunt calculate dintr-un corpus care are documente similare.
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)> |
>
>
Ieșire:

Exemplul 4: Mai jos este programul în care încercăm să calculăm valoarea tf-idf a unui singur cuvânt tocilari se repetă de mai multe ori în mai multe documente.
Python3
# 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)> |
>
>
Ieșire:
