Spaces:
Build error
Build error
import pandas as pd | |
import numpy as np | |
# data = Conjunto de datos. Es un dataframe | |
# vocab = el vocabulario obtenido desde los documentos. Es una lista de cadenas. | |
# document_index = Nombre de la columna del dataframe en donde esta el id de los documentos | |
# text = Nombre de la columna del dataframe donde esta el texto de los documentos | |
def term_document_matrix (df, vocab, document_index, text): | |
vocab_index = pd.DataFrame(columns=df[document_index], index=vocab).fillna(0) | |
for word in vocab_index.index: | |
for doc in df[document_index]: | |
freq = df[df[document_index]==doc][text].values[0].count(word) | |
vocab_index.loc[word,doc]=freq | |
return vocab_index # Devuelve un dataframe con la matriz de los documentos y sus frecuencias | |
# vocab_index = Es el term document matrix que se calcula en la seccion anterior | |
# document_index = Serie conteniendo los ids de los documentos. | |
# inv_df = Nombre de la columna que contiene la frecuencia inversa de los documentos calculada | |
def tf_idf_score(vocab_index, document_index, inv_df='inverse_document_frequency'): | |
total_docx=len(document_index) | |
vocab_index['document_frequency']=vocab_index.sum(axis=1) | |
vocab_index['inverse_document_frequency']=np.log2(total_docx/vocab_index['document_frequency']) | |
for word in vocab_index.index: | |
for doc in document_index: | |
tf_idf=np.log2(1+vocab_index.loc[word,doc]) * np.log2(vocab_index.loc[word][inv_df]) | |
vocab_index.loc[word]['tf_idf_'+str(doc)]=tf_idf | |
return vocab_index # Devuelve un dataframe que contiene: matriz de los terminos del documento, | |
# la frecuencia de los documentos, la frecuencia inversa de los documentos, | |
# y el score tf_idf | |
def generar_archivo_indexado(): | |
return 0 |