logo

Zrozumienie TF-IDF (częstotliwość terminu odwrotna do częstotliwości dokumentu)

TF-IDF oznacza termin częstotliwość odwrotna częstotliwość dokumentów. Można go zdefiniować jako obliczenie, jak istotne jest słowo w serii lub korpusie dla tekstu. Znaczenie wzrasta proporcjonalnie do liczby wystąpień słowa w tekście, ale jest kompensowane przez częstotliwość występowania słów w korpusie (zbiorze danych).

Terminologie:



    Termin Częstotliwość: W dokumencie d częstotliwość reprezentuje liczbę wystąpień danego słowa t. Widzimy zatem, że staje się to bardziej istotne, gdy w tekście pojawia się słowo, które jest racjonalne. Ponieważ kolejność terminów nie jest znacząca, możemy użyć wektora do opisania tekstu w zestawie modeli terminów. Dla każdego konkretnego terminu w artykule znajduje się wpis, którego wartością jest częstotliwość terminu.

Waga terminu występującego w dokumencie jest po prostu proporcjonalna do częstotliwości występowania tego terminu.

tf(t,d) = count of t in d / number of words in d>
    Częstotliwość dokumentów: Testuje znaczenie tekstu, które jest bardzo podobne do TF, w całym zbiorze korpusów. Jedyna różnica polega na tym, że w dokumencie d TF jest licznikiem częstotliwości dla terminu t, podczas gdy df jest liczbą wystąpień terminu t w zbiorze dokumentów N. Innymi słowy, liczba artykułów, w których występuje to słowo, to DF.
df(t) = occurrence of t in documents>
    Odwrotna częstotliwość dokumentów: głównie sprawdza, jak trafne jest dane słowo. Kluczowym celem wyszukiwania jest zlokalizowanie odpowiednich rekordów odpowiadających zapotrzebowaniu. Ponieważ tf uważa wszystkie terminy za jednakowo istotne, możliwe jest zatem użycie częstotliwości terminów nie tylko do pomiaru wagi terminu w artykule. Najpierw znajdź częstotliwość występowania terminu t, licząc liczbę dokumentów zawierających ten termin:
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>

Częstotliwość terminów to liczba wystąpień terminu tylko w jednym dokumencie; choć częstotliwość dokumentu jest liczbą oddzielnych dokumentów, w których pojawia się termin, to zależy od całego korpusu. Przyjrzyjmy się teraz definicji częstotliwości papieru odwrotnego. IDF słowa to liczba dokumentów w korpusie oddzielonych częstotliwością tekstu.

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

Uważa się, że bardziej powszechne słowo jest mniej znaczące, ale element (najbardziej określone liczby całkowite) wydaje się zbyt surowy. Następnie obliczamy logarytm (o podstawie 2) częstotliwości odwrotnej papieru. Zatem if wyrazu t ma postać:



idf(t) = log(N/ df(t))>
    Obliczenia: Tf-idf to jeden z najlepszych wskaźników pozwalających określić znaczenie terminu dla tekstu w serii lub korpusie. tf-idf to system ważenia, który przypisuje wagę każdemu słowu w dokumencie na podstawie częstotliwości jego terminów (tf) i wzajemnej częstotliwości dokumentów (tf) (idf). Słowa z wyższą oceną wagi są uważane za bardziej znaczące.

Zwykle waga tf-idf składa się z dwóch składników:

    Znormalizowana częstotliwość terminów (tf) Odwrotna częstotliwość dokumentów (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>

W Pythonie wartości tf-idf można obliczyć za pomocą TfidfWektor() metoda w sklearować moduł.

Składnia:



sklearn.feature_extraction.text.TfidfVectorizer(wejście)

Parametry:

    wejście : Odnosi się do przekazanego dokumentu parametru, może to być nazwa pliku, plik lub sama treść.

Atrybuty:

    słownictwo _ : Zwraca słownik terminów jako klucze i wartości jako indeksy cech. idf_ : Zwraca odwrotny wektor częstotliwości dokumentu przekazanego jako parametr.

Zwroty:

    fit_transform(): Zwraca tablicę terminów wraz z wartościami tf-idf. get_feature_names(): Zwraca listę nazw funkcji.

Podejście krok po kroku:

  • Importuj moduły.

Python3




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

>

>

  • Zbieraj ciągi znaków z dokumentów i twórz korpus zawierający zbiór ciągów znaków z dokumentów 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]>

>

>

  • Pobierz wartości tf-idf z fit_transform() metoda.

Python3




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

>

ustaw ogranicznik Java

>

  • Wyświetl wartości if słów obecnych w korpusie.

Python3




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

>

>

Wyjście:

  • Wyświetl wartości tf-idf wraz z indeksowaniem.

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

>

>

Wyjście:

konwencja nazewnictwa Java

The wynik zmienna składa się z unikalnych słów oraz wartości tf-if. Można to rozwinąć, korzystając z poniższego obrazu:

Z powyższego obrazu można wygenerować poniższą tabelę:

Dokument Słowo Indeks dokumentów Indeks słów wartość tf-idf
d0 Do 0 0 0,549
d0 maniacy 0 1 0,8355
d1 maniacy 1 1 1000
d2 r2j 2 2 1000

Poniżej znajduje się kilka przykładów ilustrujących sposób obliczania wartości tf-idf słów z korpusu:

Przykład 1: Poniżej znajduje się pełny program oparty na powyższym podejściu:

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

>

>

Wyjście:

Przykład 2: Tutaj wartości tf-idf są obliczane z korpusu mającego unikalne wartości.

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

>

>

Wyjście:

Przykład 3: W tym programie wartości tf-idf są obliczane na podstawie korpusu zawierającego podobne 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)>

>

plik .tif
>

Wyjście:

Przykład 4: Poniżej znajduje się program w którym próbujemy obliczyć wartość tf-idf pojedynczego słowa maniacy powtarza się wielokrotnie w wielu dokumentach.

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

>

>

Wyjście: