buscador-periodicos-dominicanos / entrenamiento_modelo.py
Lisibonny's picture
Upload 12 files
c188624 verified
raw
history blame
1.93 kB
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