logo

Porozumění TF-IDF (pojemová frekvence-inverzní frekvence dokumentu)

TF-IDF znamená Term Frequency Inverse Document Frequency of records. Lze jej definovat jako výpočet toho, jak relevantní je slovo v řadě nebo korpusu pro text. Význam se zvyšuje úměrně tomu, kolikrát se v textu slovo objeví, ale je kompenzován četností slov v korpusu (souboru dat).

Terminologie:



    Termín Frekvence: V dokumentu d, frekvence představuje počet výskytů daného slova t. Proto můžeme vidět, že se stává relevantnějším, když se v textu objeví slovo, které je racionální. Vzhledem k tomu, že řazení termínů není podstatné, můžeme použít vektor k popisu textu v sáčku termínových modelů. U každého konkrétního termínu v příspěvku je položka, jejíž hodnotou je termín frekvence.

Váha termínu, který se vyskytuje v dokumentu, je jednoduše úměrná frekvenci termínu.

tf(t,d) = count of t in d / number of words in d>
    Document Frequency: Testuje význam textu, který je velmi podobný TF, v celé kolekci korpusů. Jediný rozdíl je v tom, že v dokumentu d je TF frekvenční čítač pro člen t, zatímco df je počet výskytů v sadě dokumentů N pro člen t. Jinými slovy, počet papírů, ve kterých je slovo přítomno, je DF.
df(t) = occurrence of t in documents>
    Inverzní frekvence dokumentu: Především testuje, jak relevantní je slovo. Hlavním cílem vyhledávání je najít vhodné záznamy, které odpovídají poptávce. Vzhledem k tomu, že tf považuje všechny termíny za stejně významné, není tedy možné použít termín frekvence pouze k měření váhy termínu v příspěvku. Nejprve zjistěte frekvenci dokumentu výrazu t spočítáním počtu dokumentů obsahujících daný výraz:
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>

Frekvence výrazů je počet výskytů výrazu pouze v jednom dokumentu; ačkoli četnost dokumentu je počet samostatných dokumentů, ve kterých se daný termín vyskytuje, záleží na celém korpusu. Nyní se podívejme na definici frekvence inverzního papíru. IDF slova je počet dokumentů v korpusu oddělený četností textu.

idf(t) = N/ df(t) = N/N(t)>

Běžnější slovo má být považováno za méně významné, ale prvek (nejurčitější celá čísla) se zdá být příliš tvrdý. Potom vezmeme logaritmus (se základem 2) inverzní frekvence papíru. Takže if termínu t se stává:



idf(t) = log(N/ df(t))>
    Výpočet: Tf-idf je jednou z nejlepších metrik k určení, jak významný je výraz pro text v sérii nebo korpusu. tf-idf je váhový systém, který přiřazuje váhu každému slovu v dokumentu na základě jeho termínové frekvence (tf) a reciproční frekvence dokumentu (tf) (idf). Slova s ​​vyšším skóre hmotnosti jsou považována za významnější.

Obvykle se váha tf-idf skládá ze dvou pojmů-

    Frekvence normalizovaného termínu (tf) Inverzní frekvence dokumentu (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>

V pythonu lze hodnoty tf-idf vypočítat pomocí TfidfVectorizer() metoda v sklearn modul.

Syntax:



sklearn.feature_extraction.text.TfidfVectorizer(vstup)

Parametry:

    vstup : Odkazuje na předaný parametr dokumentu, může to být název souboru, soubor nebo samotný obsah.

Atributy:

    slovní zásoba _ : Vrací slovník termínů jako klíče a hodnoty jako rysové indexy. idf_ : Vrací to inverzní vektor frekvence dokumentu dokumentu předávaného jako parametr.

Vrácení:

    fit_transform(): Vrací pole výrazů spolu s hodnotami tf-idf. get_feature_names(): Vrací seznam názvů funkcí.

Postup krok za krokem:

  • Import modulů.

Python3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer>

>

>

  • Sbírejte řetězce z dokumentů a vytvořte korpus obsahující kolekci řetězců z dokumentů d0, d1, a d2 .

Python3




# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]>

>

>

  • Získejte hodnoty tf-idf z fit_transform() metoda.

Python3




# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)>

>

co dělá počítač rychlým

>

  • Zobrazit hodnoty idf slov přítomných v korpusu.

Python3




# get idf values> print>(>' idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)>

>

>

Výstup:

  • Zobrazte hodnoty tf-idf spolu s indexováním.

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())>

>

>

Výstup:

c struktura ve struktuře

The výsledek proměnná se skládá z jedinečných slov a také z hodnot tf-if. Lze jej upřesnit pomocí níže uvedeného obrázku:

Z výše uvedeného obrázku lze vygenerovat následující tabulku:

Dokument Slovo Rejstřík dokumentů Rejstřík slov hodnota tf-idf
d0 pro 0 0 0,549
d0 geeky 0 1 0,8355
d1 geeky 1 1 1 000
d2 r2j 2 2 1 000

Níže je uvedeno několik příkladů, které znázorňují, jak vypočítat hodnoty tf-idf slov z korpusu:

Příklad 1: Níže je uveden kompletní program založený na výše uvedeném přístupu:

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())>

>

>

Výstup:

Příklad 2: Zde jsou hodnoty tf-idf počítány z korpusu s jedinečnými hodnotami.

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)>

>

>

Výstup:

Příklad 3: V tomto programu jsou hodnoty tf-idf počítány z korpusu s podobnými dokumenty.

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)>

rdbms

>

>

Výstup:

Příklad 4: Níže je program, ve kterém se snažíme vypočítat hodnotu tf-idf jednoho slova geeky se několikrát opakuje ve více dokumentech.

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)>

>

>

Výstup: