TF-IDF означає частоту терміну, інверсну частоту записів документа. Його можна визначити як обчислення того, наскільки слово в серії або корпусі є релевантним для тексту. Значення збільшується пропорційно кількості разів у тексті слова, але компенсується частотою слова в корпусі (наборі даних).
Терміни:
- Частота терміну: у документі d частота представляє кількість випадків даного слова t. Тому ми бачимо, що воно стає актуальнішим, коли в тексті з’являється слово, яке є раціональним. Оскільки впорядкування термінів не є суттєвим, ми можемо використовувати вектор для опису тексту в пакеті моделей термінів. Для кожного конкретного терміна в статті є запис із значенням частоти терміну.
Вагомість терміна, який зустрічається в документі, просто пропорційна частоті терміну.
tf(t,d) = count of t in d / number of words in d>
- Частота документа: це перевіряє значення тексту, який дуже схожий на TF, у всій колекції корпусу. Єдина відмінність полягає в тому, що в документі d TF є частотним лічильником для терміну t, тоді як df є кількістю входжень у наборі документів N терміну t. Іншими словами, кількість статей, у яких присутнє слово, дорівнює DF.
df(t) = occurrence of t in documents>
- Зворотна частота документа: головним чином перевіряє, наскільки релевантним є слово. Основна мета пошуку - знайти відповідні записи, які відповідають попиту. Оскільки tf вважає всі терміни однаково значущими, тому можна не лише використовувати частоти термінів для вимірювання ваги терміна в статті. Спочатку знайдіть частоту документа терміна t, підрахувавши кількість документів, що містять термін:
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>
Частота термінів – це кількість випадків терміну лише в одному документі; Хоча частота документа – це кількість окремих документів, у яких з’являється термін, вона залежить від усього корпусу. Тепер давайте подивимося на визначення частоти інверсного паперу. IDF слова — це кількість документів у корпусі, розділених частотою тексту.
idf(t) = N/ df(t) = N/N(t)>
Вважається, що більш поширене слово вважається менш значущим, але елемент (найбільш певні цілі числа) здається занадто жорстким. Потім ми беремо логарифм (з основою 2) зворотної частоти паперу. Таким чином, if члена t стає:
idf(t) = log(N/ df(t))>
- Обчислення: Tf-idf є одним із найкращих показників для визначення того, наскільки термін є значущим для тексту в серії чи корпусі. tf-idf — це система зважування, яка призначає вагу кожному слову в документі на основі частоти термінів (tf) і зворотної частоти документа (tf) (idf). Слова з вищою оцінкою ваги вважаються більш значущими.
Зазвичай вага tf-idf складається з двох складових:
- Нормована частота термінів (tf) Інверсна частота документів (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>
У Python значення tf-idf можна обчислити за допомогою TfidfVectorizer() метод в sklearn модуль.
Синтаксис:
sklearn.feature_extraction.text.TfidfVectorizer(введення)
Параметри:
введення : Він посилається на переданий документ параметра, це може бути назва файлу, файл або сам вміст.
Атрибути:
словниковий запас _ : Він повертає словник термінів у вигляді ключів і значень індекси ознак. idf_ : Це повертає зворотний вектор частоти документа документа, переданого як параметр.
Повернення:
fit_transform(): повертає масив термінів разом із значеннями tf-idf. get_feature_names(): повертає список імен функцій.
Покроковий підхід:
- Імпорт модулів.
Python3
# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> |
>
>
- Зберіть рядки з документів і створіть корпус із колекцією рядків із документів d0, d1, і d2 .
Python3
# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> |
>
>
- Отримати значення tf-idf з fit_transform() метод.
Python3
# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> |
>
до рядкового методу java
>
- Відобразити значення IDF слів, присутніх у корпусі.
Python3
цифри алфавіту
# get idf values> print>(>'
idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> |
>
>
Вихід:

- Відображати значення tf-idf разом з індексацією.
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())> |
>
>
Вихід:

The результат змінна складається з унікальних слів, а також значень tf-if. Його можна розробити за допомогою зображення нижче:

З наведеного вище зображення можна створити таблицю нижче:
| документ | Слово | Індекс документа | Покажчик слів | значення tf-idf |
|---|---|---|---|---|
| d0 | для | 0 | 0 | 0,549 |
| d0 | вундеркінди | 0 | 1 | 0,8355 |
| d1 | вундеркінди | 1 | 1 | 1000 |
| d2 | r2j | 2 | 2 | 1000 |
Нижче наведено кілька прикладів, які показують, як обчислити значення tf-idf для слів із корпусу:
приклад 1: Нижче наведено повну програму, засновану на описаному вище підході:
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())> |
>
>
Вихід:

приклад 2: Тут значення tf-idf обчислюються з корпусу, що має унікальні значення.
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)> |
>
>
Вихід:

приклад 3: У цій програмі значення tf-idf обчислюються з корпусу, що має подібні документи.
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)> |
>
>
Вихід:

Приклад 4: Нижче наведено програму, в якій ми намагаємося обчислити значення tf-idf окремого слова вундеркінди повторюється кілька разів у кількох документах.
Python3
примітивні типи даних у java
# 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)> |
>
>
Вихід:
