Saltar al contenido

¿Cómo se calculan los TF-IDF mediante el TfidfVectorizer de scikit-learn?

Nuestro equipo de redactores ha estado por horas investigando para dar respuesta a tus interrogantes, te compartimos la respuestas y nuestro deseo es resultarte de mucha ayuda.

Solución:

TF-IDF se realiza en varios pasos mediante TfidfVectorizer de Scikit Learn, que de hecho usa TfidfTransformer y hereda CountVectorizer.

Permítanme resumir los pasos que realiza para que sea más sencillo:

  1. tfs se calculan mediante fit_transform() de CountVectorizer
  2. Los idf se calculan mediante el ajuste de TfidfTransformer ()
  3. tfidfs son calculados por transform() de TfidfTransformer

Puedes consultar el código fuente aquí.

Volvamos a tu ejemplo. Aquí está el cálculo que se hace para el peso tfidf para el 5to término del vocabulario, 1er documento (X_mat[0,4]):

Primero, la tf para ‘string’, en el 1er documento:

tf = 1

En segundo lugar, el idf para ‘string’, con suavizado habilitado (comportamiento predeterminado):

df = 2
N = 4
idf = ln(N + 1 / df + 1) + 1 = ln (5 / 3) + 1 = 1.5108256238

Y finalmente, el peso tfidf para (documento 0, función 4):

tfidf(0,4) = tf * idf = 1 * 1.5108256238 = 1.5108256238

Noté que eliges no normalizar la matriz tfidf. Tenga en cuenta que la normalización de la matriz tfidf es un enfoque común y generalmente recomendado, ya que la mayoría de los modelos requerirán la normalización de la matriz de características (o matriz de diseño).

TfidfVectorizer L-2 normalizará la matriz de salida de forma predeterminada, como paso final del cálculo. Tenerlo normalizado significa que solo tendrá pesos entre 0 y 1.

La fórmula de cálculo precisa se proporciona en los documentos:

La fórmula real utilizada para tf-idf es tf * (idf + 1) = tf + tf * idf, en lugar de tf * idf

y

Suavice los pesos de idf agregando uno a las frecuencias de los documentos, como si se viera un documento adicional que contiene todos los términos de la colección exactamente una vez.

Eso significa 1.51082562 se obtiene como 1.51082562=1+ln((4+1)/(2+1))

valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *