как получить частоту терминов, сгенерированных с помощью tfidf.get_feature_names_out()

Вопрос или проблема

После применения tfidf я рассматриваю сгенерированные характеристики:

from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
    'This is the first document.',
    'This document is the second document.',
    'And this is the third one.',
    'Is this the first document?',
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names_out())

но я хочу также получить частоту каждого термина или характеристики. Как мне это сделать?

Исходя из приведенного примера, существует 9 различных слов, которые будут напечатаны в вашем операторе print. Корпус состоит из 4 предложений, каждое слово будет представлено в строке из 4 строк с указанием своей частоты, таким образом X, который содержит значения частоты, которые вы пытаетесь найти, будет иметь форму (4, 9).

Если вы выведете на печать значение X[0][0], вы получите частоту слова and в первом предложении корпуса.

Ответ или решение

Вопрос о том, как получить частоту терминов, сгенерированных методом tfidf.get_feature_names_out(), требует понимания работы алгоритма TfidfVectorizer из библиотеки Scikit-learn. Прежде чем углубиться в детали решения этой задачи, рассмотрим теорию, примеры и практическое применение.

Теория

Метод TfidfVectorizer является распространенным инструментом для преобразования текста в количественные данные. Он вычисляет вес каждого слова в документе, опираясь на частоту его появления в этом документе (TF — term frequency) и обратную частоту вхождений в корпусе (IDF — inverse document frequency). Итоговое значение TF-IDF отражает важность термина в конкретном документе в сравнении с его значением в наборе документов.

Алгоритм TfidfVectorizer выполняет следующие шаги:

  1. Токенизация: разделение текста на отдельные слова.
  2. Построение словаря: формирование набора уникальных терминов из корпуса текста.
  3. Расчет TF: вычисление количества вхождений каждого термина в каждом документе.
  4. Расчет IDF: вычисление обратной частоты вхождений термина в наборе документов.
  5. Матричное представление: создание матрицы TF-IDF, где строки соответствуют документам, а столбцы — уникальным терминам, и значение на пересечении строки и столбца представляет взвешенную частоту термина.

Пример

Давайте рассмотрим пример на основе приведенного кода:

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [
    'This is the first document.',
    'This document is the second document.',
    'And this is the third one.',
    'Is this the first document?',
]

vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
features = vectorizer.get_feature_names_out()

print(features)

Этот фрагмент кода создает TfidfVectorizer и применяет его к корпусу из четырех предложений. После вызова fit_transform мы получаем разреженную матрицу X, в которой содержатся веса TF-IDF для каждого термина в каждом документе. Метод get_feature_names_out() возвращает массив уникальных терминов, найденных в корпусе текста.

Применение

Для получения частоты вхождений термина в каждом документе, может быть использован метод toarray(), чтобы конвертировать разреженную матрицу в плотный формат:

# Получение плотной матрицы из разреженной
dense_matrix = X.toarray()

# Печать частот каждого термина в первом документе
first_document_tfidf = dense_matrix[0]
print("Частоты терминов в первом документе:")
for term, freq in zip(features, first_document_tfidf):
    print(f"{term}: {freq:.3f}")

Этот код преобразует разреженную матрицу в массив NumPy, где каждая строка соответствует документу, а каждый столбец — термину из массива features.

Дополнительные аспекты

Имея на руках матрицу TF-IDF, можно использовать её для различных задач, таких как:

  • Кластеризация текстов: группировка документов с подобным содержимым.
  • Классификация: определение тематики документа на основе частоты терминов.
  • Рекомендательные системы: подбор контента, основываясь на совпадении терминов.

Более того, понимание работы TfidfVectorizer и методов работы с токенами помогает в реализации предобработки текстов, что является важным этапом в машинном обучении для работы с данными.

Заключение

Использование TfidfVectorizer и методов для извлечения информации о частоте терминов позволяет не только количественно оценить текстовые данные, но и извлечь скрытые закономерности в текстах. Это открывает потенциал для дальнейшего анализа и востребовано в различных прикладных задачах, включая анализ тенденций в текстах, автоматическое аннотирование и улучшение поисковых систем.

Оцените материал
Добавить комментарий

Капча загружается...