def construir_corpus(self, nombre, busqueda_inicial, conjunto_a, conjunto_s, conjunto_j, conjunto_o, clasificados, conjuntos_red = None, diccionario_todos_autores = None): '''Construye el corpus del modelo base a partir de la búsqueda incial y los conjuntos de atributos''' #Booleano que indica si estamos construyendo un corpus con redes corpus_red = conjuntos_red != None #Booleano que indica si estamos construyendo un corpus con redes recibiendo un diccionario corpus_red_diccionario = type(conjuntos_red) is dict corpus = open(nombre, 'w') ##corpus.write('nom,nom,nom,nom\n') #corpus.write('a'+'\n') if corpus_red: if self.EXP_BASE_WEIGHTS in nombre: corpus.write('nom,nom,nom,nom,num\n') corpus.write('A,S,J,O,AS,R\n') elif self.EXP_TODAS_MEDIDAS in nombre: corpus.write('nom,nom,nom,nom,num,num,num\n') corpus.write('A,S,J,O,AD,CC,APL,AS,R\n') elif self.EXP_ADCCAPLAS in nombre: corpus.write('num,num,num,num\n') corpus.write('AD,CC,APL,AS,R\n') elif self.EXP_CCAPLAS in nombre: corpus.write('num,num,num\n') corpus.write('CC,APL,AS,R\n') self.red = Red(dicci_to_list(conjuntos_red),'redCorpus', range(len(conjuntos_red))) else: corpus.write('nom,nom,nom,nom\n') corpus.write('A,S,J,O,R\n') lineaBI = 0 for lineaBI, clasificacion in zip(busqueda_inicial,clasificados): print 'iteracion corpus' perteneceA = lineaBI in conjunto_a perteneceS = lineaBI in conjunto_s perteneceJ = lineaBI in conjunto_j perteneceO = lineaBI in conjunto_o #print (perteneceA) if corpus_red: #Autores qye trabajaron en el paper lineaBI autores_borrados= self.obtener_autores_borrados(lineaBI,diccionario_todos_autores) #Diccionario autores-eid sin los autores que se borran dicci_sin_autores = self.generar_dicci_sin_autores(autores_borrados, conjuntos_red) #Red sin autores redsita = Red(dicci_to_list(dicci_sin_autores), self.DIRECTORIO_REDES+str(lineaBI)) ##print 'red retornada' average_path_lenght = redsita.average_path_lenght() ##print 'APL' average_degree = redsita.average_degree() ##print 'AD' clustering_coefficient = redsita.clustering_coefficient() ##print 'CC' ##print 'medidas basicas' average_strength = redsita.average_strength() ##print 'AS' ##print 'apl' '''corpus.write(str(int(perteneceA))+','+str(int(perteneceS))+','+str(int(perteneceJ))+','+ str(int(perteneceO))+','+str(average_degree)+','+str(clustering_coefficient)+','+ str(average_path_lenght)+','+str(average_strength)+','+clasificacion.rstrip()+'\n')''' if self.EXP_BASE_WEIGHTS in nombre: corpus.write(str(int(perteneceA))+','+str(int(perteneceS))+','+str(int(perteneceJ))+','+ str(int(perteneceO))+','+str(redsita.weights())+','+clasificacion.rstrip()+'\n') elif self.EXP_TODAS_MEDIDAS in nombre: corpus.write(str(int(perteneceA))+','+str(int(perteneceS))+','+str(int(perteneceJ))+','+ str(int(perteneceO))+','+str(average_degree)+','+str(clustering_coefficient)+','+ str(average_path_lenght)+','+str(average_strength)+','+clasificacion.rstrip()+'\n') elif self.EXP_ADCCAPLAS in nombre: corpus.write(str(average_degree)+','+str(clustering_coefficient)+','+ str(average_path_lenght)+','+str(average_strength)+','+clasificacion.rstrip()+'\n') elif self.EXP_CCAPLAS in nombre: corpus.write(str(clustering_coefficient)+','+ str(average_path_lenght)+','+str(average_strength)+','+clasificacion.rstrip()+'\n') else: self.data.append([int(perteneceA), int(perteneceS), int(perteneceJ), int(perteneceO)])#, int(incide_red_sc)]) corpus.write(str(int(perteneceA))+','+str(int(perteneceS))+','+str(int(perteneceJ))+','+ str(int(perteneceO))+','+clasificacion.rstrip()+'\n') self.target.append(int(clasificacion.rstrip())) #return corpus corpus.close() print self.data print self.target
def construir_corpus(self, nombre, busqueda_inicial, conjunto_a, conjunto_s, conjunto_j, conjunto_o, clasificados, conjuntos_red = None, diccionario_todos_autores = None): '''Construye el corpus del modelo base a partir de la búsqueda incial y los conjuntos de atributos''' #Booleano que indica si estamos construyendo un corpus con redes corpus_red = conjuntos_red != None #Booleano que indica si estamos construyendo un corpus con redes recibiendo un diccionario corpus_red_diccionario = type(conjuntos_red) is dict corpus = open(nombre, 'w') ##corpus.write('nom,nom,nom,nom\n') #corpus.write('a'+'\n') if corpus_red: if corpus_red_diccionario: #corpus.write('A,S,J,O,AD,CC,APL,AS,R\n') corpus.write('nom,nom,nom,nom,num\n') corpus.write('A,S,J,O,AS,R\n') self.red = Red(dicci_to_list(conjuntos_red),'redCorpus') else: corpus.write('A,S,J,O,redS,redSC,R\n') average_strength_red_s = self.average_strength(self.obtener_grafo('s', 'EID')) average_strength_red_sc = self.average_strength(self.obtener_grafo('sc', 'EID')) #Medidas globales de las redes enteras. else: corpus.write('nom,nom,nom,nom\n') corpus.write('A,S,J,O,R\n') lineaBI = 0 for lineaBI, clasificacion in zip(busqueda_inicial,clasificados): perteneceA = lineaBI in conjunto_a perteneceS = lineaBI in conjunto_s perteneceJ = lineaBI in conjunto_j perteneceO = lineaBI in conjunto_o #print (perteneceA) if corpus_red: if corpus_red_diccionario: #Autores qye trabajaron en el paper lineaBI autores_borrados= self.obtener_autores_borrados(lineaBI,diccionario_todos_autores) #Diccionario autores-eid sin los autores que se borran dicci_sin_autores = self.generar_dicci_sin_autores(autores_borrados, conjuntos_red) #Red sin autores redsita = Red(dicci_to_list(dicci_sin_autores), self.DIRECTORIO_REDES+str(lineaBI)) average_path_lenght = redsita.average_path_lenght() average_degree = redsita.average_degree() clustering_coefficient = redsita.clustering_coefficient() average_strength = redsita.average_strength() '''corpus.write(str(int(perteneceA))+','+str(int(perteneceS))+','+str(int(perteneceJ))+','+ str(int(perteneceO))+','+str(average_degree)+','+str(clustering_coefficient)+','+ str(average_path_lenght)+','+str(average_strength)+','+clasificacion.rstrip()+'\n')''' corpus.write(str(int(perteneceA))+','+str(int(perteneceS))+','+str(int(perteneceJ))+','+ str(int(perteneceO))+','+str(redsita.weights())+','+clasificacion.rstrip()+'\n') else: incide_red_s = self.obtener_atributo_existe_relacion('s', lineaBI, average_strength_red_s) incide_red_sc = self.obtener_atributo_existe_relacion('sc', lineaBI, average_strength_red_sc) self.data.append([int(perteneceA), int(perteneceS), int(perteneceJ), int(perteneceO), int(incide_red_sc)]) corpus.write(str(int(perteneceA))+','+str(int(perteneceS))+','+str(int(perteneceJ))+','+ str(int(perteneceO))+','+incide_red_s+','+incide_red_sc+','+clasificacion.rstrip()+'\n') else: self.data.append([int(perteneceA), int(perteneceS), int(perteneceJ), int(perteneceO)])#, int(incide_red_sc)]) corpus.write(str(int(perteneceA))+','+str(int(perteneceS))+','+str(int(perteneceJ))+','+ str(int(perteneceO))+','+clasificacion.rstrip()+'\n') self.target.append(int(clasificacion.rstrip())) corpus.close() print self.data print self.target