sklearn.feature_extraction.text.TfidfTransformer

class sklearn.feature_extraction.text.TfidfTransformer

Transforma una matriz de conteo a una representación de tf o tf-idf normalizada

Tf significa término-frecuencia mientras que tf-idf significa término-frecuencia por el documento-frecuencia inverso. Se trata de un esquema de ponderación de términos comunes en la recuperación de la información, que también ha encontrado un buen uso en la clasificación de documentos.

El objetivo de utilizar tf-idf en lugar de las frecuencias en bruto de la aparición de un token en un documento dado es reducir a escala el impacto de los tokens que aparecen con mucha frecuencia en un corpus dado y que, por tanto, son empíricamente menos informativos que las características que aparecen en una pequeña fracción del corpus de entrenamiento.

La fórmula que se utiliza para calcular el tf-idf para un término t de un documento d en un conjunto de documentos es tf-idf(t, d) = tf(t, d) * idf(t), y el idf se calcula como idf(t) = log [ n / df(t) ] + 1 (si smooth_idf=False), donde n es el número total de documentos en el conjunto de documentos y df(t) es la frecuencia de documentos de t; la frecuencia de documentos es el número de documentos en el conjunto de documentos que contienen el término t. El efecto de añadir «1» al idf en la ecuación anterior es que los términos con idf cero, es decir, los términos que aparecen en todos los documentos de un conjunto de entrenamiento, no se ignorarán por completo. (Ten en cuenta que la fórmula del idf anterior difiere de la notación estándar de los libros de texto que define el idf como idf(t) = log [ n / (df(t) + 1) ]).

Si smooth_idf=True (el valor predeterminado), la constante «1» se añade al numerador y al denominador del idf como si se viera un documento adicional que contiene cada término de la colección exactamente una vez, lo que evita las divisiones cero: idf(t) = log [ (1 + n) / (1 + df(t)) ] + 1.

Además, las fórmulas utilizadas para calcular tf e idf dependen de los ajustes de los parámetros que corresponden a la notación SMART utilizada en IR de la siguiente manera:

Tf es «n» (natural) por defecto, «l» (logarítmico) cuando sublinear_tf=True. Idf es «t» cuando use_idf es dado, «n» (ninguno) en caso contrario. La normalización es «c» (coseno) cuando norm='l2', «n» (ninguna) cuando norm=None.

Lee más en el Manual de usuario.

Parámetros
norm{“l1”, “l2”}, default=”l2”

Cada fila de salida tendrá una norma unitaria, ya sea * “l2”: La suma de cuadrados de los elementos del vector es 1. La similitud coseno entre dos vectores es su producto punto cuando se ha aplicado la norma l2. * “l1”: La suma de valores absolutos de los elementos del vector es 1. Ver preprocessing.normalize

use_idfbool, default=True

Activa la reponderación de documento-frecuencia-inverso (inverse-document-frequency).

smooth_idfbool, default=True

Suaviza los pesos de idf añadiendo uno a las frecuencias del documento, como si se viera un documento extra que contiene cada término en la colección exactamente una vez. Evita las divisiones cero.

sublinear_tfbool, default=False

Aplica el escalamiento sublineal de tf, es decir, reemplaza tf con 1 + log(tf).

Atributos
idf_arreglo de forma (n_features)

El vector de frecuencia de documentos inverso (IDF); sólo se define si use_idf es True.

Nuevo en la versión 0.20.

Referencias

Yates2011

R. Baeza-Yates and B. Ribeiro-Neto (2011). Modern Information Retrieval. Addison Wesley, pp. 68-74.

MRS2008

C.D. Manning, P. Raghavan y H. Schütze (2008). Introduction to Information Retrieval. Cambridge University Press, pp. 118-120.

Ejemplos

>>> from sklearn.feature_extraction.text import TfidfTransformer
>>> from sklearn.feature_extraction.text import CountVectorizer
>>> from sklearn.pipeline import Pipeline
>>> import numpy as np
>>> 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)

Métodos

fit

Aprende el vector idf (pesos globales de los términos).

fit_transform

Ajusta a los datos y luego los transforma.

get_params

Obtiene los parámetros para este estimador.

set_params

Establece los parámetros de este estimador.

transform

Transforma una matriz de conteo a una representación de tf o tf-idf

fit()

Aprende el vector idf (pesos globales de los términos).

Parámetros
Xmatriz dispersa de forma (n_samples, n_features)

Una matriz de conteos de términos/tokens.

fit_transform()

Ajusta a los datos y luego los transforma.

Ajusta el transformador a X e y con los parámetros opcionales fit_params y devuelve una versión transformada de X.

Parámetros
Xarray-like de forma (n_samples, n_features)

Muestras de entrada.

yarray-like de forma (n_samples,) o (n_samples, n_outputs), default=None

Valores objetivo (None para transformaciones no supervisadas).

**fit_paramsdict

Parámetros de ajuste adicionales.

Devuelve
X_newarreglo ndarray de forma (n_samples, n_features_new)

Arreglo transformado.

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Los nombres de los parámetros mapeados a sus valores.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto en estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma <component>__<parameter> para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia de estimador

Instancia del estimador.

transform()

Transforma una matriz de conteo a una representación de tf o tf-idf

Parámetros
Xmatriz dispersa de forma (n_samples, n_features)

una matriz de conteos de términos/tokens

copybool, default=True

Si se copia X y se opera sobre la copia o se realizan operaciones in situ.

Devuelve
vectorsmatriz dispersa de forma (n_samples, n_features)

Ejemplos utilizando sklearn.feature_extraction.text.TfidfTransformer