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) cuandonorm='l2'
, «n» (ninguna) cuandonorm=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
Aprende el vector idf (pesos globales de los términos).
Ajusta a los datos y luego los transforma.
Obtiene los parámetros para este estimador.
Establece los parámetros de este estimador.
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
ey
con los parámetros opcionalesfit_params
y devuelve una versión transformada deX
.- 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)