TF-IDF: Как компьютеры понимают важность слов в тексте

Сегодня мы поговорим о том, как компьютеры определяют, какие слова в тексте самые важные.

TF-IDF: Как компьютеры понимают важность слов в тексте
TF-IDF: Как компьютеры понимают важность слов в тексте
Краткое содержание

Представьте, что вы ищете информацию о кошках в большой библиотеке. Как вы поймете, какая книга действительно о кошках, а в какой кошки упоминаются лишь мельком? Именно для этого компьютеры используют метод под названием TF-IDF.Что такое TF-IDF? TF-IDF расшифровывается как "Term Frequency - Inverse Document Frequency". Не пугайтесь этих сложных слов! Давайте разберем их по частям:

  1. TF (Term Frequency) - Частота слова Представьте, что вы считаете, сколько раз слово "кошка" встречается в книге. Это и есть TF. Чем чаще слово встречается, тем оно важнее для этой книги.

Пример: В книге "Приключения Мурзика" слово "кошка" встречается 50 раз, а в книге "Собаки и их хозяева" - всего 2 раза. Значит, для первой книги "кошка" важнее.

  1. IDF (Inverse Document Frequency) - Обратная частота документа А теперь представьте, что вы проверяете, в скольких книгах библиотеки встречается слово "кошка". Если оно есть во всех книгах, то оно не очень-то помогает найти книгу именно о кошках. А вот если слово "Мурзик" есть только в одной книге, то оно очень важное для поиска.

Пример: Слово "и" есть во всех 1000 книгах библиотеки. Слово "кошка" есть в 100 книгах. Слово "Мурзик" есть только в 1 книге.IDF показывает, что "Мурзик" важнее "кошки", а "кошка" важнее "и".

Как работает TF-IDF?

TF-IDF объединяет эти два подхода. Он умножает частоту слова в книге (TF) на его редкость во всей библиотеке (IDF). Давайте посмотрим на пример:

У нас есть три коротких "книги":

  1. "Кошка любит молоко"
  2. "Собака любит кости"
  3. "Кошка и собака - друзья"

Посчитаем TF-IDF для слова "кошка":

  • TF: В книге 1: 1/3 (одно слово из трех) В книге 2: 0 В книге 3: 1/5IDF: "Кошка" встречается в 2 книгах из 3.
  • IDF = log(3/2) ≈ 0.18
  • TF-IDF: Для книги 1: 1/3 * 0.18 ≈ 0.06
  • Для книги 2: 0
  • Для книги 3: 1/5 * 0.18 ≈ 0.036

В первой книге "кошка" имеет самый высокий показатель TF-IDF. Это значит, что для этой книги слово "кошка" самое важное!Зачем это нужно?

  1. Поиск информации: помогает находить самые подходящие тексты по запросу.
  2. Анализ текстов: определяет главные темы в тексте.
  3. Рекомендации: предлагает похожие тексты на основе важных слов.

Давайте рассмотрим пример использования TF-IDF на Python. Этот пример будет простым, но наглядным, чтобы показать, как работает TF-IDF на практике.

Пример использования TF-IDF на Python

Для начала, нам нужно будет установить библиотеку scikit-learn, которая содержит готовую реализацию TF-IDF. Вы можете установить ее с помощью pip:

pip install scikit-learn

Теперь давайте напишем код:

from sklearn.feature_extraction.text import TfidfVectorizer

# Наши документы
documents = [
    "Кошка любит молоко",
    "Собака любит кости",
    "Кошка и собака - друзья"
]

# Создаем векторизатор TF-IDF
vectorizer = TfidfVectorizer()

# Применяем векторизатор к нашим документам
tfidf_matrix = vectorizer.fit_transform(documents)

# Получаем список всех слов
feature_names = vectorizer.get_feature_names_out()

# Выводим результаты
for i, doc in enumerate(documents):
    print(f"Документ {i+1}: {doc}")
    for j, feature_name in enumerate(feature_names):
        tfidf_value = tfidf_matrix[i, j]
        if tfidf_value > 0:
            print(f"  {feature_name}: {tfidf_value:.4f}")
    print()

Давайте разберем, что делает этот код:

  1. Мы импортируем TfidfVectorizer из scikit-learn. Это инструмент, который автоматически вычисляет TF-IDF для нас.
  2. Мы создаем список документов, которые хотим проанализировать.
  3. Создаем экземпляр TfidfVectorizer.
  4. Применяем векторизатор к нашим документам с помощью fit_transform(). Это создает матрицу TF-IDF значений.
  5. Получаем список всех уникальных слов в наших документах.
  6. В цикле выводим TF-IDF значения для каждого слова в каждом документе.

Когда вы запустите этот код, вы увидите примерно такой результат:

Документ 1: Кошка любит молоко
  кошка: 0.5802
  любит: 0.5802
  молоко: 0.5802

Документ 2: Собака любит кости
  кости: 0.6187
  любит: 0.4438
  собака: 0.6187

Документ 3: Кошка и собака - друзья
  друзья: 0.4438
  и: 0.4438
  кошка: 0.4438
  собака: 0.4438

Что мы видим в результатах?

  • В первом документе все слова имеют одинаковый вес, потому что каждое слово встречается только один раз и только в этом документе.
  • Во втором документе "кости" и "собака" имеют больший вес, чем "любит", потому что "любит" встречается и в других документах.
  • В третьем документе все слова имеют одинаковый вес, но он меньше, чем в первых двух документах, потому что этот документ длиннее.

Этот пример показывает, как TF-IDF помогает выделить наиболее важные слова в каждом документе. Слова, которые часто встречаются в одном документе, но редко в других, получают более высокий вес.

TF-IDF - это умный способ, который помогает компьютерам понять, какие слова действительно важны в тексте. Это как если бы вы, читая книгу, подчеркивали самые главные слова, только компьютер делает это автоматически!Надеюсь, теперь вы лучше понимаете, как работает TF-IDF. Это действительно крутой инструмент, который помогает компьютерам лучше понимать тексты и находить нужную информацию!

Nerd IT 🌀 ML, DS, ANN, GPT
Привет! Меня зовут Семён, я работаю в сфере ML и аналитики данных и пишу в блог nerdit.ru статьи о своем опыте и том, что может пригодиться начинающим в начале их пути изучения больших данных.

Подписаться на новости Nerd IT

Не пропустите последние выпуски. Зарегистрируйтесь сейчас, чтобы получить полный доступ к статьям.
jamie@example.com
Подписаться