TfidfTransformer#

класс sklearn.feature_extraction.text.TfidfTransformer(*, norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)[источник]#

Преобразовать матрицу частот в нормализованное представление tf или tf-idf.

Tf означает частоту термина, а tf-idf означает частоту термина, умноженную на обратную частоту документа. Это распространенная схема взвешивания терминов в информационном поиске, которая также хорошо зарекомендовала себя в классификации документов.

Цель использования tf-idf вместо сырых частот встречаемости токена в данном документе — уменьшить влияние токенов, которые встречаются очень часто в данном корпусе и, следовательно, эмпирически менее информативны, чем признаки, встречающиеся в небольшой части обучающего корпуса.

Формула, используемая для вычисления tf-idf для термина t документа d в наборе документов: tf-idf(t, d) = tf(t, d) * idf(t), где idf вычисляется как idf(t) = log [ n / df(t) ] + 1 (если smooth_idf=False), где n - общее количество документов в наборе документов, а df(t) - частота документа t; частота документа - это количество документов в наборе, содержащих термин t. Эффект добавления "1" к idf в уравнении выше заключается в том, что термины с нулевым idf, т.е. термины, которые встречаются во всех документах обучающего набора, не будут полностью игнорироваться. (Обратите внимание, что формула idf выше отличается от стандартной учебной записи, которая определяет idf как idf(t) = log [ n / (df(t) + 1) ]).

Если smooth_idf=True (по умолчанию), константа "1" добавляется к числителю и знаменателю idf, как если бы был увиден дополнительный документ, содержащий каждый термин в коллекции ровно один раз, что предотвращает деление на ноль: idf(t) = log [ (1 + n) / (1 + df(t)) ] + 1.

Кроме того, формулы, используемые для вычисления tf и idf, зависят от настроек параметров, которые соответствуют обозначению SMART, используемому в информационном поиске, следующим образом:

Tf по умолчанию "n" (натуральный), "l" (логарифмический), когда sublinear_tf=True. Idf имеет значение "t", когда задан use_idf, и "n" (none) в противном случае. Нормализация имеет значение "c" (cosine), когда norm='l2', “n” (нет) когда norm=None.

Подробнее в Руководство пользователя.

Параметры:
norm{‘l1’, ‘l2’} или None, по умолчанию=’l2’

Каждая строка вывода будет иметь единичную норму, либо:

  • 'l2': Сумма квадратов элементов вектора равна 1. Косинусное сходство между двумя векторами — это их скалярное произведение, когда применена норма l2.

  • ‘l1’: Сумма абсолютных значений элементов вектора равна 1. См. normalize.

  • None: Без нормализации.

use_idfbool, по умолчанию=True

Включить перевзвешивание по обратной частоте документа. Если False, idf(t) = 1.

smooth_idfbool, по умолчанию=True

Сглаживание idf-весов путём добавления единицы к частотам документов, как если бы дополнительный документ был просмотрен, содержащий каждый термин в коллекции ровно один раз. Предотвращает деление на ноль.

sublinear_tfbool, по умолчанию=False

Применить сублинейное масштабирование tf, т.е. заменить tf на 1 + log(tf).

Атрибуты:
idf_массив формы (n_features)

Вектор обратной частоты документа (IDF); определен только если use_idf равно True.

Добавлено в версии 0.20.

n_features_in_int

Количество признаков, замеченных во время fit.

Добавлено в версии 1.0.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, наблюдаемых во время fit. Определено только когда X имеет имена признаков, которые все являются строками.

Добавлено в версии 1.0.

Смотрите также

CountVectorizer

Преобразует текст в разреженную матрицу подсчётов n-грамм.

TfidfVectorizer

Преобразовать коллекцию необработанных документов в матрицу признаков TF-IDF.

HashingVectorizer

Преобразовать коллекцию текстовых документов в матрицу встречаемости токенов.

Ссылки

[Yates2011]

R. Baeza-Yates и B. Ribeiro-Neto (2011). Современный поиск информации. Addison Wesley, стр. 68-74.

[MRS2008]

C.D. Manning, P. Raghavan и H. Schütze (2008). Введение в информационный поиск. Cambridge University Press, стр. 118-120.

Примеры

>>> from sklearn.feature_extraction.text import TfidfTransformer
>>> from sklearn.feature_extraction.text import CountVectorizer
>>> from sklearn.pipeline import Pipeline
>>> corpus = ['this is the first document',
...           'this document is the second document',
...           'and this is the third one',
...           'is this the first document']
>>> vocabulary = ['this', 'document', 'first', 'is', 'second', 'the',
...               'and', 'one']
>>> pipe = Pipeline([('count', CountVectorizer(vocabulary=vocabulary)),
...                  ('tfid', TfidfTransformer())]).fit(corpus)
>>> pipe['count'].transform(corpus).toarray()
array([[1, 1, 1, 1, 0, 1, 0, 0],
       [1, 2, 0, 1, 1, 1, 0, 0],
       [1, 0, 0, 1, 0, 1, 1, 1],
       [1, 1, 1, 1, 0, 1, 0, 0]])
>>> pipe['tfid'].idf_
array([1.        , 1.22314355, 1.51082562, 1.        , 1.91629073,
       1.        , 1.91629073, 1.91629073])
>>> pipe.transform(corpus).shape
(4, 8)
fit(X, y=None)[источник]#

Изучить вектор idf (глобальные веса терминов).

Параметры:
Xразреженная матрица формы (n_samples, n_features)

Матрица подсчётов терминов/токенов.

yNone

Этот параметр не нужен для вычисления tf-idf.

Возвращает:
selfobject

Обученный преобразователь.

fit_transform(X, y=None, **fit_params)[источник]#

Обучение на данных с последующим преобразованием.

Обучает преобразователь на X и y с необязательными параметрами fit_params и возвращает преобразованную версию X.

Параметры:
Xarray-like формы (n_samples, n_features)

Входные выборки.

yarray-like формы (n_samples,) или (n_samples, n_outputs), default=None

Целевые значения (None для неконтролируемых преобразований).

**fit_paramsdict

Дополнительные параметры обучения. Передавайте только если оценщик принимает дополнительные параметры в своем fit метод.

Возвращает:
X_newndarray массив формы (n_samples, n_features_new)

Преобразованный массив.

get_feature_names_out(input_features=None)[источник]#

Получить имена выходных признаков для преобразования.

Параметры:
input_featuresarray-like из str или None, по умолчанию=None

Входные признаки.

  • Если input_features является None, затем feature_names_in_ используется как имена признаков в. Если feature_names_in_ не определено, тогда генерируются следующие имена входных признаков: ["x0", "x1", ..., "x(n_features_in_ - 1)"].

  • Если input_features является массивоподобным, тогда input_features должен соответствовать feature_names_in_ if feature_names_in_ определен.

Возвращает:
feature_names_outndarray из str объектов

То же, что и входные признаки.

6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

Получить параметры для этого оценщика.

Параметры:
глубокийbool, по умолчанию=True

Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

set_output(*, преобразовать=None)[источник]#

Установить контейнер вывода.

См. Введение API set_output для примера использования API.

Параметры:
преобразовать{“default”, “pandas”, “polars”}, по умолчанию=None

Настройка вывода transform и fit_transform.

  • "default": Формат вывода трансформера по умолчанию

  • "pandas": DataFrame вывод

  • "polars": Вывод Polars

  • None: Конфигурация преобразования не изменена

Добавлено в версии 1.4: "polars" опция была добавлена.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_params(**params)[источник]#

Установить параметры этого оценщика.

Метод работает как на простых оценщиках, так и на вложенных объектах (таких как Pipeline). Последние имеют параметры вида __ чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_transform_request(*, copy: bool | None | str = '$UNCHANGED$') TfidfTransformer[источник]#

Настроить, следует ли запрашивать передачу метаданных в transform метод.

Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Варианты для каждого параметра:

  • True: запрашиваются метаданные и передаются transform если предоставлено. Запрос игнорируется, если метаданные не предоставлены.

  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в transform.

  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.

  • str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.

Добавлено в версии 1.3.

Параметры:
copystr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для copy параметр в transform.

Возвращает:
selfobject

Обновленный объект.

преобразовать(X, copy=True)[источник]#

Преобразовать матрицу частот в представление tf или tf-idf.

Параметры:
Xразреженная матрица (n_samples, n_features)

Матрица подсчётов терминов/токенов.

copybool, по умолчанию=True

Копировать ли X и работать с копией или выполнять операции на месте. copy=False будет эффективен только с разреженной матрицей CSR.

Возвращает:
векторыразреженная матрица формы (n_samples, n_features)

Tf-idf-взвешенная матрица документ-термин.