una tutorial transpuesta multiplicar matriz matrices libreria inversa identidad español ejemplos como calcular python scikit-learn term-document-matrix

python - tutorial - cómo calcular la matriz de documento de término?



numpy tutorial español pdf (1)

Sé que Term-Document Matrix es una matriz matemática que describe la frecuencia de los términos que ocurren en una colección de documentos. En una matriz de documento y plazo, las filas corresponden a documentos en la colección y las columnas corresponden a términos.

Estoy usando CountVectorizer de sklearn para extraer características de cadenas (archivo de texto) para facilitar mi tarea. El siguiente código devuelve una matriz de documento de términos de acuerdo con la documentación de sklear

from sklearn.feature_extraction.text import CountVectorizer import numpy as np vectorizer = CountVectorizer(min_df=1) print(vectorizer) content = ["how to format my hard disk", "hard disk format problems"] X = vectorizer.fit_transform(content) #X is Term-document matrix print(X)

El resultado es el siguiente

No entiendo cómo se ha calculado esta matriz. Por favor, analicen el ejemplo que se muestra en el código. He leído un ejemplo más de la Wikipedia pero no pude entender.


La salida de un CountVectorizer().fit_transform() es una matriz dispersa. Significa que solo almacenará los elementos distintos de cero de una matriz. Cuando print(X) , solo se mostrarán las entradas que no sean cero a medida que observa en la imagen.

En cuanto a cómo se realiza el cálculo, puede consultar la documentación oficial aquí .

El CountVectorizer en su configuración predeterminada, tokenize el documento dado o el texto en bruto (Tomará solo los términos que tienen 2 o más caracteres en él) y contar las ocurrencias de palabras.

Básicamente, los pasos son los siguientes:

  • Paso 1: reúne todos los términos diferentes de todos los documentos presentes en fit() .

    Para sus datos, son [u''disk'', u''format'', u''hard'', u''how'', u''my'', u''problems'', u''to''] Esto está disponible en vectorizer.get_feature_names()

  • Paso 2: en la transform() , cuente el número de términos en cada documento que estaban presentes en el fit() en la matriz de frecuencia de términos.

    En su caso, está suministrando ambos documentos a transform () ( fit_transform() es una abreviatura de fit() y luego transform() ). Entonces, el resultado es

    [u''disk'', u''format'', u''hard'', u''how'', u''my'', u''problems'', u''to'']

Primero 1 1 1 1 1 0 1

Sec 0 1 1 0 0 1 0

Puede obtener el resultado anterior llamando a X.toarray() .

En la imagen de la impresión (X) que publicó, la primera columna representa el índice de la matriz de término-frecuencia y la segunda representa la frecuencia de ese término.

<0,0> significa primera fila, primera columna, es decir, frecuencias del término "disk" (first term in our tokens) en el primer documento = 1

<0,2> significa primera fila, tercera columna, es decir, frecuencias del término "hard" (third term in our tokens) en el primer documento = 1

<0,5> significa primera fila, sexta columna, es decir, frecuencias del término "problems" (sixth term in our tokens) en el primer documento = 0. Pero dado que es 0, no se muestra en su imagen.