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
Example #2
0
    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