Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте TF-IDF | Базові Текстові Моделі
Вступ до NLP

bookTF-IDF

Розуміння TF-IDF

Хоча модель мішка слів є простою та ефективною, вона має тенденцію переоцінювати поширені терміни, що ускладнює виявлення рідкісніших, але більш інформативних слів. Щоб вирішити цю проблему, часто використовується модель TF-IDF.

Note
Визначення

TF-IDF (частота терміна — обернена частота документа) — це статистична міра, яка відображає важливість слова для конкретного документа відносно більшого корпусу.

На відміну від BoW, яка базується на підрахунку термінів, TF-IDF враховує як частоту терміна в документі, так і його обернену частоту в усьому корпусі. Це зменшує вплив поширених термінів і виділяє рідкісніші, більш інформативні слова.

Як працює TF-IDF

TF-IDF-оцінка для терміна в документі обчислюється за формулою:

tf-idf(t,d)=tf(t,d)×idf(t)\def\tfidf{\operatorname{tf-idf}} \def\tf{\operatorname{tf}} \def\idf{\operatorname{idf}} \tfidf(t, d) = \tf(t, d) \times \idf(t)

де:

  • tt — термін (слово або n-грам);
  • dd — документ.

Існує багато варіантів обчислення значень tf\operatorname{tf} та idf\operatorname{idf}. Розглянемо один із поширених підходів для кожного з них:

Частота терміна (TF)

Відображає, наскільки часто термін зустрічається в документі, визначаючи його відносну важливість у цьому документі. Подібно до моделі мішок слів, часто використовується простий підрахунок:

tf(t,d)=count(t,d)\def\tf{\operatorname{tf}} \def\count{\operatorname{count}} \tf(t, d) = \count(t, d)

Зворотна частота документа (IDF)

Вимірює рідкість терміна в усьому корпусі. Може обчислюватися як натуральний логарифм відношення загальної кількості документів до кількості документів, що містять цей термін:

idf(t)=log(1+Ndocuments1+df(t))+1\def\idf{\operatorname{idf}} \def\df{\operatorname{df}} \idf(t) = \log\Bigl(\frac{1 + N_{documents}}{1 + \df(t)}\Bigr) + 1

У цій формулі використовується згладжування (додавання 1), щоб уникнути ділення на нуль, і гарантується, що навіть поширені терміни отримують ненульове значення IDF. Таким чином, IDF зменшує вагу частих термінів і підкреслює більш інформативні, рідкісні слова.

Без компонента IDF TF-IDF зводиться до простого підрахунку термінів — фактично повертаючись до моделі мішок слів.

Обчислення TF-IDF

Розглянемо простий приклад:

У цьому випадку маємо лише два документи та використовуємо лише уніграмми (окремі слова), тому обчислення є простими. Спочатку обчислюємо частоти термів для кожного слова в обох документах, а потім — значення IDF для термінів "a" та "is".

Note
Примітка

Оскільки в нашому корпусі лише два документи, кожен термін, що зустрічається в обох документах, матиме значення IDF 1, а інші терміни — значення IDF ~1.406465.

Нарешті, можемо обчислити значення TF-IDF для кожного терміну в кожному документі, перемноживши TF на IDF, що дає наступну матрицю:

L2-нормалізація

Отримані TF-IDF-вектори можуть суттєво відрізнятися за модулем, особливо у великих корпусах, через різну довжину документів. Саме тому часто застосовується L2-нормалізація — для приведення всіх векторів до однакової довжини, що забезпечує коректне та неупереджене порівняння документів різної довжини.

Note
Дізнатися більше

L2-нормалізація, також відома як евклідова нормалізація, — це процес, який застосовується до окремих векторів для коригування їхніх значень так, щоб довжина вектора дорівнювала 1.

L2-нормалізація виконується шляхом ділення кожного елемента вектора на евклідову норму цього вектора.

Якщо вектор документа має вигляд:

d=(w1,w2,w3,...,wN)d = (w_1, w_2, w_3, ..., w_N)

де wiw_i — це вага терміна ii,

тоді евклідова норма обчислюється так:

d2=w12+w22+w32+...+wN2\|d\|_2 = \sqrt{w^2_1 + w^2_2 + w^2_3 + ... + w^2_N}

а нормалізований вектор виглядає так:

dnorm=(w1d2,w2d2,w3d2,...,wNd2)d_{norm} = \Bigl(\frac{w_1}{\|d\|_2}, \frac{w_2}{\|d\|_2}, \frac{w_3}{\|d\|_2}, ..., \frac{w_N}{\|d\|_2})

Нижче показано, як працює L2-нормалізація для двовимірного вектора (документ з двома термінами):

Note
Примітка

Не хвилюйтеся, якщо формули здаються складними. Все, що ми робимо — це ділимо кожне значення TF-IDF у документі на довжину (або модуль) вектора TF-IDF цього документа. Це масштабує вектор так, що його довжина стає 1, забезпечуючи коректне порівняння векторів.

Тепер застосуємо L2-нормалізацію до нашої TF-IDF матриці, яку ми обчислили вище:

Отримана матриця — це саме той приклад, який ми розглядали в одному з попередніх розділів.

question mark

Яка основна перевага моделі TF-IDF у порівнянні з моделлю BoW?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain why L2 normalization is important for comparing documents?

How does TF-IDF differ from the bag of words model in practice?

Can you walk me through a step-by-step example of calculating TF-IDF for a small dataset?

Awesome!

Completion rate improved to 3.45

bookTF-IDF

Свайпніть щоб показати меню

Розуміння TF-IDF

Хоча модель мішка слів є простою та ефективною, вона має тенденцію переоцінювати поширені терміни, що ускладнює виявлення рідкісніших, але більш інформативних слів. Щоб вирішити цю проблему, часто використовується модель TF-IDF.

Note
Визначення

TF-IDF (частота терміна — обернена частота документа) — це статистична міра, яка відображає важливість слова для конкретного документа відносно більшого корпусу.

На відміну від BoW, яка базується на підрахунку термінів, TF-IDF враховує як частоту терміна в документі, так і його обернену частоту в усьому корпусі. Це зменшує вплив поширених термінів і виділяє рідкісніші, більш інформативні слова.

Як працює TF-IDF

TF-IDF-оцінка для терміна в документі обчислюється за формулою:

tf-idf(t,d)=tf(t,d)×idf(t)\def\tfidf{\operatorname{tf-idf}} \def\tf{\operatorname{tf}} \def\idf{\operatorname{idf}} \tfidf(t, d) = \tf(t, d) \times \idf(t)

де:

  • tt — термін (слово або n-грам);
  • dd — документ.

Існує багато варіантів обчислення значень tf\operatorname{tf} та idf\operatorname{idf}. Розглянемо один із поширених підходів для кожного з них:

Частота терміна (TF)

Відображає, наскільки часто термін зустрічається в документі, визначаючи його відносну важливість у цьому документі. Подібно до моделі мішок слів, часто використовується простий підрахунок:

tf(t,d)=count(t,d)\def\tf{\operatorname{tf}} \def\count{\operatorname{count}} \tf(t, d) = \count(t, d)

Зворотна частота документа (IDF)

Вимірює рідкість терміна в усьому корпусі. Може обчислюватися як натуральний логарифм відношення загальної кількості документів до кількості документів, що містять цей термін:

idf(t)=log(1+Ndocuments1+df(t))+1\def\idf{\operatorname{idf}} \def\df{\operatorname{df}} \idf(t) = \log\Bigl(\frac{1 + N_{documents}}{1 + \df(t)}\Bigr) + 1

У цій формулі використовується згладжування (додавання 1), щоб уникнути ділення на нуль, і гарантується, що навіть поширені терміни отримують ненульове значення IDF. Таким чином, IDF зменшує вагу частих термінів і підкреслює більш інформативні, рідкісні слова.

Без компонента IDF TF-IDF зводиться до простого підрахунку термінів — фактично повертаючись до моделі мішок слів.

Обчислення TF-IDF

Розглянемо простий приклад:

У цьому випадку маємо лише два документи та використовуємо лише уніграмми (окремі слова), тому обчислення є простими. Спочатку обчислюємо частоти термів для кожного слова в обох документах, а потім — значення IDF для термінів "a" та "is".

Note
Примітка

Оскільки в нашому корпусі лише два документи, кожен термін, що зустрічається в обох документах, матиме значення IDF 1, а інші терміни — значення IDF ~1.406465.

Нарешті, можемо обчислити значення TF-IDF для кожного терміну в кожному документі, перемноживши TF на IDF, що дає наступну матрицю:

L2-нормалізація

Отримані TF-IDF-вектори можуть суттєво відрізнятися за модулем, особливо у великих корпусах, через різну довжину документів. Саме тому часто застосовується L2-нормалізація — для приведення всіх векторів до однакової довжини, що забезпечує коректне та неупереджене порівняння документів різної довжини.

Note
Дізнатися більше

L2-нормалізація, також відома як евклідова нормалізація, — це процес, який застосовується до окремих векторів для коригування їхніх значень так, щоб довжина вектора дорівнювала 1.

L2-нормалізація виконується шляхом ділення кожного елемента вектора на евклідову норму цього вектора.

Якщо вектор документа має вигляд:

d=(w1,w2,w3,...,wN)d = (w_1, w_2, w_3, ..., w_N)

де wiw_i — це вага терміна ii,

тоді евклідова норма обчислюється так:

d2=w12+w22+w32+...+wN2\|d\|_2 = \sqrt{w^2_1 + w^2_2 + w^2_3 + ... + w^2_N}

а нормалізований вектор виглядає так:

dnorm=(w1d2,w2d2,w3d2,...,wNd2)d_{norm} = \Bigl(\frac{w_1}{\|d\|_2}, \frac{w_2}{\|d\|_2}, \frac{w_3}{\|d\|_2}, ..., \frac{w_N}{\|d\|_2})

Нижче показано, як працює L2-нормалізація для двовимірного вектора (документ з двома термінами):

Note
Примітка

Не хвилюйтеся, якщо формули здаються складними. Все, що ми робимо — це ділимо кожне значення TF-IDF у документі на довжину (або модуль) вектора TF-IDF цього документа. Це масштабує вектор так, що його довжина стає 1, забезпечуючи коректне порівняння векторів.

Тепер застосуємо L2-нормалізацію до нашої TF-IDF матриці, яку ми обчислили вище:

Отримана матриця — це саме той приклад, який ми розглядали в одному з попередніх розділів.

question mark

Яка основна перевага моделі TF-IDF у порівнянні з моделлю BoW?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 6
some-alt