TF-IDF són les sigles de Term Frequency Inverse Document Frequency of records. Es pot definir com el càlcul de la rellevància d'una paraula d'una sèrie o corpus per a un text. El significat augmenta proporcionalment al nombre de vegades que apareix una paraula al text, però es compensa amb la freqüència de la paraula al corpus (conjunt de dades).
Terminologies:
- Terme Freqüència: al document d, la freqüència representa el nombre d'instàncies d'una paraula donada t. Per tant, podem veure que adquireix més rellevància quan apareix una paraula al text, que és racional. Com que l'ordenació dels termes no és significativa, podem utilitzar un vector per descriure el text de la bossa de models de termes. Per a cada terme específic del document, hi ha una entrada amb el valor de la freqüència del terme.
El pes d'un terme que apareix en un document és simplement proporcional a la freqüència del terme.
tf(t,d) = count of t in d / number of words in d>
- Freqüència del document: Això prova el significat del text, que és molt semblant al TF, a tota la col·lecció del corpus. L'única diferència és que al document d, TF és el comptador de freqüències d'un terme t, mentre que df és el nombre d'ocurrències en el conjunt de documents N del terme t. És a dir, el nombre de papers en què la paraula està present és DF.
df(t) = occurrence of t in documents>
- Freqüència inversa del document: principalment, prova la rellevància de la paraula. L'objectiu principal de la cerca és localitzar els registres adequats que s'adaptin a la demanda. Com que tf considera tots els termes igualment significatius, no només és possible utilitzar el terme freqüències per mesurar el pes del terme en el document. Primer, trobeu la freqüència del document d'un terme t comptant el nombre de documents que contenen el terme:
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>
La freqüència del terme és el nombre d'instàncies d'un terme en un sol document; encara que la freqüència del document és el nombre de documents separats en què apareix el terme, depèn de tot el corpus. Vegem ara la definició de la freqüència del paper invers. L'IDF de la paraula és el nombre de documents del corpus separats per la freqüència del text.
idf(t) = N/ df(t) = N/N(t)>
Se suposa que la paraula més comuna es considera menys significativa, però l'element (nombres enters més definits) sembla massa dur. A continuació, prenem el logaritme (amb base 2) de la freqüència inversa del paper. Així, el si del terme t esdevé:
idf(t) = log(N/ df(t))>
- Càlcul: Tf-idf és una de les millors mètriques per determinar la importància d'un terme per a un text d'una sèrie o d'un corpus. tf-idf és un sistema de ponderació que assigna un pes a cada paraula d'un document en funció de la seva freqüència de termes (tf) i la freqüència recíproca del document (tf) (idf). Les paraules amb puntuacions més altes de pes es consideren més significatives.
Normalment, el pes tf-idf consta de dos termes:
- Freqüència de terme normalitzada (tf) Freqüència inversa del document (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>
A Python, els valors tf-idf es poden calcular mitjançant TfidfVectorizer() mètode en sklearn mòdul.
Sintaxi:
sklearn.feature_extraction.text.TfidfVectorizer (entrada)
Paràmetres:
entrada : Es refereix al document de paràmetre passat, pot ser un nom de fitxer, fitxer o contingut en si.
Atributs:
vocabulari _ : Retorna un diccionari de termes com a claus i valors com a índexs de característiques. idf_ : Torna el vector de freqüència de document invers del document passat com a paràmetre.
Devolucions:
fit_transform(): retorna una matriu de termes juntament amb valors tf-idf. get_feature_names(): retorna una llista de noms de funcions.
Enfocament pas a pas:
- Importa mòduls.
Python 3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> |
>
>
- Recolliu cadenes dels documents i creeu un corpus amb una col·lecció de cadenes dels documents d0, d1, i d2 .
Python 3
# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> |
>
>
- Obteniu valors tf-idf de fit_transform() mètode.
Python 3
# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> |
>
apache
>
- Mostra els valors idf de les paraules presents al corpus.
Python 3
# get idf values> print>(>'
idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> |
>
>
Sortida:

- Mostra els valors tf-idf juntament amb la indexació.
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())> |
>
>
Sortida:

hashtable versus hashmap
El resultat La variable consta de paraules úniques així com dels valors tf-if. Es pot elaborar amb la imatge següent:

A partir de la imatge de dalt es pot generar la taula següent:
| Document | Paraula | Índex de documents | Índex de paraules | valor tf-idf |
|---|---|---|---|---|
| d0 | per | 0 | 0 | 0.549 |
| d0 | frikis | 0 | 1 | 0.8355 |
| d1 | frikis | 1 | 1 | 1.000 |
| d2 | r2j | 2 | 2 | 1.000 |
A continuació es mostren alguns exemples que mostren com calcular els valors tf-idf de paraules d'un corpus:
Exemple 1: A continuació es mostra el programa complet basat en l'enfocament anterior:
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())> |
>
>
Sortida:
java dormir

Exemple 2: Aquí, els valors tf-idf es calculen a partir d'un corpus que té valors únics.
Python 3
# 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)> |
>
>
Sortida:

Exemple 3: En aquest programa, els valors tf-idf es calculen a partir d'un corpus amb documents similars.
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)> |
>
>
Sortida:

Exemple 4: A continuació es mostra el programa en el qual intentem calcular el valor tf-idf d'una sola paraula frikis es repeteix diverses vegades en diversos documents.
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)> |
>
>
Sortida:
