Red de conocimiento informático - Conocimiento del nombre de dominio - Algoritmo TF-IDF para análisis de sentimiento

Algoritmo TF-IDF para análisis de sentimiento

/bdmip/180414224336264.html

Los temas principales de este artículo son:

1. Convertir palabras en vectores de características

2. Calcular TF-IDF de palabra asociación

Preprocesamiento y segmentación de texto.

Cómo convertir datos categóricos, como palabras, a formato digital para que luego podamos utilizar el aprendizaje automático para entrenar modelos.

I. Convertir palabras en vectores de características

Modelo de bolsa de palabras: el texto se representa en forma de vectores de características numéricos. El modelo de bolsa de palabras se implementa principalmente en dos pasos:

1. Cree una etiqueta única para cada palabra en todo el conjunto de documentos (que contiene muchos documentos).

2. Construya un vector de características para cada documento, que contenga principalmente el número de apariciones de cada palabra en el documento.

Nota: Dado que el número de palabras que aparecen en cada documento es solo una pequeña parte del conjunto completo de documentos, habrá muchas palabras que no aparecerán y se marcarán como 0.

Por lo tanto, la mayoría de los elementos del vector propio serán 0 y el resultado será una matriz dispersa.

El siguiente es un modelo de bolsa de palabras implementado a través de CountVectorizer de sklearn, que convierte documentos en vectores de características.

A través de count.vocabulary_, podemos ver la posición del índice correspondiente a cada palabra. , Cada oración consta de un vector de características de 6 dimensiones. El índice de la primera columna es 0, correspondiente a la palabra "y". La palabra no aparece en la primera y segunda oración, por lo que el índice es 0. Aparece en la tercera oración, por lo que el índice es 1. El valor en el vector de características también se denomina frecuencia del término bruto, abreviado como tf (t, d), que representa el número de veces que aparece la palabra t en el documento d.

Tenga en cuenta que podemos ver la posición del índice de cada palabra a través de count.vocabulary_, pero podemos ver que cada oración está compuesta por un vector de características de 6 dimensiones, que también se denomina frecuencia de palabra original.

Nota: En el modelo de bolsa de palabras anterior, utilizamos una sola palabra para construir un vector de palabras. Esta secuencia se denomina modelo de 1 gramo o unigramo. El valor n del modelo n-gram está relacionado con escenarios de aplicación específicos. Por ejemplo, en antispam, un n-gram con un valor n de 3 o 4 puede lograr mejores resultados. Aquí hay un ejemplo de una n-tupla, por ejemplo, en la oración "el clima es dulce",

1 tupla: "el", "el clima", "es", "dulce".

2 tuplas: "clima", "el clima es", "es dulce".

En sklearn, puede configurar el parámetro ngram_range en CountVecorizer para construir diferentes modelos de n-tuplas, el valor predeterminado es ngram_range=(1,1).

sklearn construye 2 tuplas a través de CountVecorizer

En segundo lugar, TF-IDF calcula asociaciones de palabras

Al utilizar el método anterior para crear vectores de palabras, puede encontrar uno Problema: una palabra aparece en diferentes tipos de documentos y este tipo de palabra en realidad no tiene la capacidad de distinguir el tipo de documento. El problema es que una palabra aparece en diferentes tipos de documentos. Superamos este problema utilizando el algoritmo TF-IDF para construir vectores de palabras.

Término frecuencia-frecuencia de documento inversa (TF-IDF, término frecuencia-frecuencia de documento inversa): tf-idf se puede definir como término frecuencia × frecuencia de documento inversa

Entre ellos, tf (t,d) representa el número de apariciones de la palabra t en el documento d, y idf(t,d) es la frecuencia inversa del documento. La fórmula de cálculo es la siguiente

Entre ellos, nd representa el número total de documentos y df (t, d) representa el número de documentos d que contienen la palabra t.

La constante 1 se suma al denominador para evitar la situación en la que df(t,d)=0, lo que da como resultado un denominador de 0.

Utilice TfidfTransformer y CountVectorizer de sklearn para calcular tf-idf

Se puede encontrar que "es" (segunda columna) y "el" (sexta columna) aparecen en las tres oraciones. columnas) no proporcionan mucha información para la clasificación de documentos, por lo que sus valores tf-idf son relativamente pequeños.

Nota: La fórmula de cálculo TF-IDF de TfidfTransformer en sklearn es diferente de la fórmula de cálculo TF-IDF que definimos anteriormente.

Normalmente, antes de calcular TF-IDF, normaliza la frecuencia de la palabra original tf(t,d). TfidfTransformer puede normalizar directamente tf-IDF. TfidfTransformer utiliza la normalización L2 de forma predeterminada, lo que hace que la relación entre la longitud del vector devuelto y el parámetro L2 del vector de características no normalizado sea 1. La fórmula de cálculo es la siguiente:

El siguiente ejemplo ilustra el cálculo de tf a través de TfidfTransformer en el proceso sklearn -idf, tome la primera oración "El sol brilla" arriba como ejemplo

1. Calcule la frecuencia de la palabra original

La palabra correspondiente. al subíndice

b, Calcule la frecuencia de palabras original tf(t,d) de la tercera oración

c Calcule la frecuencia de palabras del documento inverso idf(t,d)

p>

Nota: Al calcular tf-idf, other La frecuencia de la palabra es 0, porque la frecuencia de la palabra original es 0, por lo que no es necesario calcular idf y el logaritmo se basa en el número natural e. .

d. Calcule tf-idf

Por lo tanto, el vector de características tf-idf de la primera oración es

e normalización L2 de tf-idf

p>