def run_validation(dominios, folds, featureVector, participantesInput, incluirParticipante): [inputs, frequencias, participantes] = [{}, {}, {}] # Inicializa Vetor de Caracteristicas for fold in folds: frequencias[fold] = utils.countAttributeFrequencyIndividual(folds, fold) participantes[fold] = parser.descriptionsMeans(folds, fold, participantesInput, dominios) inputs[fold] = parser.parseSVMInput( folds[fold], featureVector, participantes[fold], frequencias[fold], incluirParticipante ) [acertos, total] = [{}, {}] keys = folds.keys() keys.sort() for fold in folds: # print "Fold: ", fold # print 50 * "-" resultados = svm.run(inputs, fold) for combination in resultados.keys(): if combination not in acertos.keys(): acertos[combination] = {} total[combination] = {} for svm1 in resultados[combination][0].keys(): if svm1 not in acertos[combination].keys(): acertos[combination][svm1] = 0.0 total[combination][svm1] = 0.0 acertos[combination][svm1] = acertos[combination][svm1] + resultados[combination][0][svm1] total[combination][svm1] = total[combination][svm1] + resultados[combination][1][svm1] combinacoes = {} acuracias = {} for combination in acertos.keys(): aux = combination.split(",") C = float(aux[0]) gamma = float(aux[1]) # print 20 * "-" # print str(C) + " - " + str(gamma) # print 20 * "-" for svm1 in acertos[combination].keys(): if total[combination][svm1] == 0: acuracia = 0 else: acuracia = acertos[combination][svm1] / total[combination][svm1] # print str(svm1) + ": " + str(acuracia) if svm1 not in combinacoes.keys(): acuracias[svm1] = acuracia combinacoes[svm1] = {} combinacoes[svm1]["C"] = C combinacoes[svm1]["gamma"] = gamma elif acuracia > acuracias[svm1]: acuracias[svm1] = acuracia combinacoes[svm1]["C"] = C combinacoes[svm1]["gamma"] = gamma return combinacoes
def initialize(): anotacoes = parser.parseAnnotation() dominios = parser.parseDominio() participantes = parser.parseParticipantes() targets = {"1":"b3","2":"b2","3":"b3","4":"b2","5":"b3","6":"b1","7":"b3","8":"b1","9":"b2","10":"b1","11":"b2","12":"b1","13":"b3","14":"b1","15":"b3","16":"b1","17":"b1","18":"b1","19":"b1","20":"b1","21":"b1","22":"b1","23":"b1","24":"b1","25":"b4","26":"b3","27":"b4","28":"b3","29":"b3","30":"b3","31":"b3","32":"b3"} atributos = ['loc', 'left-of', 'next-to', 'on-top-of', 'right-of', 'type', 'col', 'size'] return dominios, targets, anotacoes, participantes, atributos
def crossValidation(fold = int, anotacoes = {}): if len(anotacoes) == 0: anotacoes = parser.parseAnnotation() folds = {} nroParticipantes = contabilizaParticipantes(anotacoes) nroAnotacoes = len(anotacoes) expressoesParticipantePorFold = (nroAnotacoes / nroParticipantes) / fold nroExpressoes = {} for i in range(1,fold+1): folds[str(i)] = {} nroExpressoes[str(i)] = {} for anotacao in anotacoes: contexto = anotacao["caracteristicas"]["context"] participante = anotacao["caracteristicas"]["trial"] achou = False for i in range(1,fold+1): if participante not in folds[str(i)]: folds[str(i)][participante] = [] nroExpressoes[str(i)][participante] = expressoesParticipantePorFold if nroExpressoes[str(i)][participante] > 0: folds[str(i)][participante].append(anotacao) nroExpressoes[str(i)][participante] = nroExpressoes[str(i)][participante] -1 achou = True break if achou == False: for i in range(1,fold+1): if nroExpressoes[str(i)][participante] == 0: folds[str(i)][participante].append(anotacao) nroExpressoes[str(i)][participante] = nroExpressoes[str(i)][participante] -1 break newFolds = {} for fold in folds: if fold not in newFolds.keys(): newFolds[fold] = [] for participante in folds[fold].keys(): for anotacao in folds[fold][participante]: newFolds[fold].append(anotacao) return newFolds
def run(dominios, targets, folds, atributos, participantesInput, incluirParticipante): featureVector = parser.parseFeatureVector(dominios, targets) inputs = {} frequencias = {} participantes = {} for fold in folds: frequencias[fold] = countAttributeFrequency(folds, fold) participantes[fold] = parser.descriptionsMeans(folds, fold, participantesInput, dominios) inputs[fold] = parser.parseSVMInput(folds[fold], featureVector, participantes[fold], frequencias[fold], incluirParticipante) resultadoTotal = [] dice = [] masi = [] acuracia = 0.0 # print 10 * "*" # if incluirParticipante == True: # print "SVM com o id do participante" # else: # print "SVM sem o id do participante" # print 10 * "*" for fold in ["1","2","3","4","5","6","7","8","9","10"]: # print "FOLD: " + fold resultados = tree.run(inputs, fold) resultadoTotal.append(resultados) acertos = resultados[0] total = resultados[1] expressoes = resultados[2] tp = resultados[3] tn = resultados[4] fp = resultados[5] fn = resultados[6] for expressao in expressoes: contexto = expressao["anotacao"]["caracteristicas"]["context"] descricao = defineExpressao(expressao["previsoes"], dominios[contexto], targets[contexto]) descricaoR = expressao["anotacao"]["descricao"] A = ass.parse(descricao, targets[contexto]) B = ass.parse(descricaoR) DICE = ass.dice(A, B) MASI = ass.masi(A, B) if DICE == 1.0: acuracia = acuracia + 1.0 dice.append(DICE) masi.append(MASI) # if expressao["previsoes"]["relation"] > 0: # print "Descricao Prevista : " + str(expressao["previsoes"]) # print "Descricao Prevista : " + str(descricao) # print "Descricao Real : " + str(expressao["classes"]) # print "Descricao Real : " + str(descricaoR) # print "Dice: " + str(DICE) # print 30 * "-" # for atributo in acertos.keys(): # print "Atributo: " + str(atributo) # print "Acuracia: " + str(acertos[atributo] / total[atributo]) # # print "Verdadeiros Positivos: " + str(tp[atributo]) # # print "Falsos Positivos: " + str(fp[atributo]) # # print "Verdadeiros Negativos: " + str(tn[atributo]) # # print "Falsos Negativos: " + str(fn[atributo]) # print 10 * "-" # # print 50 * "*" # print 50 * "*" # print "Expressoes: " # print "Dice Total: " + str(np.mean(dice)) # print "Masi Total: " + str(np.mean(masi)) # print "Acuracia: " + str(acuracia / len(dice)) # print 50 * "*" acertosT = {} totalT = {} for resultados in resultadoTotal: acertos = resultados[0] total = resultados[1] for atributo in acertos.keys(): if atributo not in acertosT: acertosT[atributo] = 0.0 totalT[atributo] = 0.0 acertosT[atributo] = acertosT[atributo] + acertos[atributo] totalT[atributo] = totalT[atributo] + total[atributo] # for atributo in acertosT.keys(): # print "Atributo: " + str(atributo) # print "Acuracia: " + str(acertosT[atributo] / totalT[atributo]) # print 10 * "-" return resultadoTotal, dice, masi, acuracia
def run(dominios, targets, folds, atributos, participantesInput, incluirParticipante): featureVector = parser.parseFeatureVector(dominios, targets) inputs = {} frequencias = {} participantes = {} # Cross Validation # folds = cross.crossValidation(10, annotations) # Inicializa Vetor de Caracteristicas for fold in folds: frequencias[fold] = utils.countAttributeFrequencyIndividual(folds, fold) participantes[fold] = parser.descriptionsMeans(folds, fold, participantesInput, dominios) inputs[fold] = parser.parseSVMInput( folds[fold], featureVector, participantes[fold], frequencias[fold], incluirParticipante ) resultadoTotal = [] diceTotal = [] masiTotal = [] acuraciaTotal = 0.0 for testeFold in folds: teste = folds[testeFold] inputTeste = inputs[testeFold] treinamentoFolds = {} inputsTreinamento = {} for foldAux in folds: if foldAux != testeFold: treinamentoFolds[foldAux] = folds[foldAux] inputsTreinamento[foldAux] = inputs[foldAux] combinacoes = run_validation(dominios, treinamentoFolds, featureVector, participantesInput, incluirParticipante) resultados = svm.run2(inputsTreinamento, inputTeste, combinacoes) resultadoTotal.append(resultados) acertos = resultados[0] total = resultados[1] expressoes = resultados[2] dice = [] masi = [] acuracia = 0 for expressao in expressoes: contexto = expressao["anotacao"]["caracteristicas"]["context"] participante = expressao["anotacao"]["caracteristicas"]["trial"] descricao = utils.defineExpressao( expressao, frequencias[testeFold][participante], participantes[testeFold][participante]["numeroExpressoes"], dominios[contexto], targets[contexto], ) descricaoR = expressao["anotacao"]["descricao"] A = ass.parse(descricao, targets[contexto]) B = ass.parse(descricaoR) DICE = ass.dice(A, B) MASI = ass.masi(A, B) # print descricao # print descricaoR # print DICE # print "\n" if DICE == 1.0: acuracia = acuracia + 1.0 acuraciaTotal = acuraciaTotal + 1.0 dice.append(DICE) masi.append(MASI) diceTotal.append(DICE) masiTotal.append(MASI) # for atributo in acertos.keys(): # print "Attribute: " + str(atributo) # print "Accuracy: " + str(acertos[atributo] / total[atributo]) # print 10 * "-" # # print 50 * "*" # # print "\n" # print "General:" # print 50 * "*" # print "Expressions: " # print "Dice: " + str(np.mean(dice)) # print "Masi: " + str(np.mean(masi)) # print "Accuracy: " + str(acuracia / len(dice)) # print "\n" print "\n" print "General:" print 50 * "*" print "Expressions: " print "Dice: " + str(np.mean(diceTotal)) print "Masi: " + str(np.mean(masiTotal)) print "Accuracy: " + str(acuraciaTotal / len(diceTotal)) print "\n" acertosT = {} totalT = {} for resultados in resultadoTotal: acertos = resultados[0] total = resultados[1] for atributo in acertos.keys(): if atributo not in acertosT: acertosT[atributo] = 0.0 totalT[atributo] = 0.0 acertosT[atributo] = acertosT[atributo] + acertos[atributo] totalT[atributo] = totalT[atributo] + total[atributo] print "Attributes:" print 15 * "-" for atributo in acertosT.keys(): print "Attribute: " + str(atributo) print "Accuracy: " + str(acertosT[atributo] / totalT[atributo]) print 10 * "-" return resultadoTotal, diceTotal, masiTotal, acuraciaTotal
def initialize(): anotacoes = parser.parseAnnotation() dominios = parser.parseDominio() targets = {"1":"b1","2":"b1","3":"b1","4":"c2","5":"c1","6":"b1","7":"b1","8":"b1","9":"c1","10":"c2","11":"b1","12":"b1","13":"b1","14":"c2","15":"c1","16":"b1","17":"b1","18":"b1","19":"c1","20":"c1"} atributos = ['loc', 'left-of', 'next-to', 'on-top-of', 'right-of', 'type', 'col', 'size', 'in-front-of'] return dominios, targets, anotacoes, atributos
def run(): expressoes = parser.parseAnnotation() dadosParticipantes = parser.parseParticipantes() participantes = {} participantesRelacionaiss = {} expressoesSimples = 0 expressoesConjunto = 0 expressoesSubespecificadas = 0 expressoesSubespecificadasMulheres = 0 expressoesSubespecificadasHomens = 0 expressoesSuperespecificadas = 0 expressoesSuperespecificadasMulheres = 0 expressoesSuperespecificadasHomens = 0 expressoesRelacionais = 0 expressoesRelacionaisConjunto = 0 participantesHomens = 0 participantesMulheres = 0 participantesRelacionais = 0 participantesMistos = 0 participantesNaoRelacionais = 0 participantesHomensRelacionais = 0 participantesHomensNaoRelacionais = 0 participantesHomensSuperespecificadas = {} participantesHomensSubespecificadas = {} participantesMulheresRelacionais = 0 participantesMulheresNaoRelacionais = 0 participantesMulheresSuperespecificadas = {} participantesMulheresSubespecificadas = {} participantesRelacionaisEtaria = {} participantesRelacionaisEtaria["<=20"] = 0 participantesRelacionaisEtaria["20-25"] = 0 participantesRelacionaisEtaria["26-30"] = 0 participantesRelacionaisEtaria["30-40"] = 0 participantesRelacionaisEtaria["40-50"] = 0 participantesRelacionaisEtaria["50-60"] = 0 participantesRelacionaisEtaria[">60"] = 0 participantesNaoRelacionaisEtaria = {} participantesNaoRelacionaisEtaria["<=20"] = 0 participantesNaoRelacionaisEtaria["20-25"] = 0 participantesNaoRelacionaisEtaria["26-30"] = 0 participantesNaoRelacionaisEtaria["30-40"] = 0 participantesNaoRelacionaisEtaria["40-50"] = 0 participantesNaoRelacionaisEtaria["50-60"] = 0 participantesNaoRelacionaisEtaria[">60"] = 0 participantesSuperespecificadosHomens = 0 participantesSuperespecificadosMulheres = 0 participantesSubespecificadosHomens = 0 participantesSubespecificadosMulheres = 0 participantesSuperespecificadosEtaria = {} participantesSuperespecificadosEtaria["<=20"] = 0 participantesSuperespecificadosEtaria["20-25"] = 0 participantesSuperespecificadosEtaria["26-30"] = 0 participantesSuperespecificadosEtaria["30-40"] = 0 participantesSuperespecificadosEtaria["40-50"] = 0 participantesSuperespecificadosEtaria["50-60"] = 0 participantesSuperespecificadosEtaria[">60"] = 0 participantesSubespecificadosEtaria = {} participantesSubespecificadosEtaria["<=20"] = 0 participantesSubespecificadosEtaria["20-25"] = 0 participantesSubespecificadosEtaria["26-30"] = 0 participantesSubespecificadosEtaria["30-40"] = 0 participantesSubespecificadosEtaria["40-50"] = 0 participantesSubespecificadosEtaria["50-60"] = 0 participantesSubespecificadosEtaria[">60"] = 0 frequencias = {} frequencias["tg"] = {} frequencias["lm"] = {} for expressao in expressoes: if expressao["caracteristicas"]["trial"] not in participantesHomensSuperespecificadas.keys(): participantesHomensSuperespecificadas[expressao["caracteristicas"]["trial"]] = True participantesHomensSubespecificadas[expressao["caracteristicas"]["trial"]] = True participantesMulheresSuperespecificadas[expressao["caracteristicas"]["trial"]] = True participantesMulheresSubespecificadas[expressao["caracteristicas"]["trial"]] = True if isUnderspecified(expressao) == True: expressoesSubespecificadas = expressoesSubespecificadas + 1 if dadosParticipantes[expressao["caracteristicas"]["trial"]][0] == 0: expressoesSubespecificadasHomens = expressoesSubespecificadasHomens + 1 participantesHomensSuperespecificadas[expressao["caracteristicas"]["trial"]] = False else: expressoesSubespecificadasMulheres = expressoesSubespecificadasMulheres + 1 participantesMulheresSuperespecificadas[expressao["caracteristicas"]["trial"]] = False if isOverspecified(expressao) == True: expressoesSuperespecificadas = expressoesSuperespecificadas + 1 if dadosParticipantes[expressao["caracteristicas"]["trial"]][0] == 0: expressoesSuperespecificadasHomens = expressoesSuperespecificadasHomens + 1 participantesHomensSubespecificadas[expressao["caracteristicas"]["trial"]] = False else: expressoesSuperespecificadasMulheres = expressoesSuperespecificadasMulheres + 1 participantesMulheresSubespecificadas[expressao["caracteristicas"]["trial"]] = False for objeto in expressao["descricao"].keys(): for atributo in expressao["descricao"][objeto].keys(): if objeto == "tg": if atributo not in frequencias["tg"].keys(): frequencias["tg"][atributo] = 1 else: frequencias["tg"][atributo] = frequencias["tg"][atributo] + 1 else: if atributo not in frequencias["lm"].keys(): frequencias["lm"][atributo] = 1 else: frequencias["lm"][atributo] = frequencias["lm"][atributo] + 1 if expressao["caracteristicas"]["trial"] not in participantes.keys(): participantes[expressao["caracteristicas"]["trial"]] = False participantesRelacionaiss[expressao["caracteristicas"]["trial"]] = True #print expressao["anotacoes"] if checkRelation(expressao["descricao"]) == True: expressoesRelacionais = expressoesRelacionais + 1 if participantes[expressao["caracteristicas"]["trial"]] == False: participantes[expressao["caracteristicas"]["trial"]] = True else: if participantesRelacionaiss[expressao["caracteristicas"]["trial"]] == True: participantesRelacionaiss[expressao["caracteristicas"]["trial"]] = False for participante in participantes.keys(): if dadosParticipantes[participante][0] == 0: participantesHomens = participantesHomens + 1 if participantesHomensSuperespecificadas[participante] == True: participantesSuperespecificadosHomens = participantesSuperespecificadosHomens + 1 if dadosParticipantes[participante][1] == 0: participantesSuperespecificadosEtaria["<=20"] = participantesSuperespecificadosEtaria["<=20"] + 1 elif dadosParticipantes[participante][1] == 1: participantesSuperespecificadosEtaria["20-25"] = participantesSuperespecificadosEtaria["20-25"] + 1 elif dadosParticipantes[participante][1] == 2: participantesSuperespecificadosEtaria["26-30"] = participantesSuperespecificadosEtaria["26-30"] + 1 elif dadosParticipantes[participante][1] == 3: participantesSuperespecificadosEtaria["30-40"] = participantesSuperespecificadosEtaria["30-40"] + 1 elif dadosParticipantes[participante][1] == 4: participantesSuperespecificadosEtaria["40-50"] = participantesSuperespecificadosEtaria["40-50"] + 1 elif dadosParticipantes[participante][1] == 5: participantesSuperespecificadosEtaria["50-60"] = participantesSuperespecificadosEtaria["50-60"] + 1 else: participantesSuperespecificadosEtaria[">60"] = participantesSuperespecificadosEtaria[">60"] + 1 elif participantesHomensSubespecificadas[participante] == True: participantesSubespecificadosHomens = participantesSubespecificadosHomens + 1 if dadosParticipantes[participante][1] == 0: participantesSubespecificadosEtaria["<=20"] = participantesSubespecificadosEtaria["<=20"] + 1 elif dadosParticipantes[participante][1] == 1: participantesSubespecificadosEtaria["20-25"] = participantesSubespecificadosEtaria["20-25"] + 1 elif dadosParticipantes[participante][1] == 2: participantesSubespecificadosEtaria["26-30"] = participantesSubespecificadosEtaria["26-30"] + 1 elif dadosParticipantes[participante][1] == 3: participantesSubespecificadosEtaria["30-40"] = participantesSubespecificadosEtaria["30-40"] + 1 elif dadosParticipantes[participante][1] == 4: participantesSubespecificadosEtaria["40-50"] = participantesSubespecificadosEtaria["40-50"] + 1 elif dadosParticipantes[participante][1] == 5: participantesSubespecificadosEtaria["50-60"] = participantesSubespecificadosEtaria["50-60"] + 1 else: participantesSubespecificadosEtaria[">60"] = participantesSubespecificadosEtaria[">60"] + 1 else: participantesMulheres = participantesMulheres + 1 if participantesMulheresSuperespecificadas[participante] == True: participantesSuperespecificadosMulheres = participantesSuperespecificadosMulheres + 1 if dadosParticipantes[participante][1] == 0: participantesSuperespecificadosEtaria["<=20"] = participantesSuperespecificadosEtaria["<=20"] + 1 elif dadosParticipantes[participante][1] == 1: participantesSuperespecificadosEtaria["20-25"] = participantesSuperespecificadosEtaria["20-25"] + 1 elif dadosParticipantes[participante][1] == 2: participantesSuperespecificadosEtaria["26-30"] = participantesSuperespecificadosEtaria["26-30"] + 1 elif dadosParticipantes[participante][1] == 3: participantesSuperespecificadosEtaria["30-40"] = participantesSuperespecificadosEtaria["30-40"] + 1 elif dadosParticipantes[participante][1] == 4: participantesSuperespecificadosEtaria["40-50"] = participantesSuperespecificadosEtaria["40-50"] + 1 elif dadosParticipantes[participante][1] == 5: participantesSuperespecificadosEtaria["50-60"] = participantesSuperespecificadosEtaria["50-60"] + 1 else: participantesSuperespecificadosEtaria[">60"] = participantesSuperespecificadosEtaria[">60"] + 1 elif participantesMulheresSubespecificadas[participante] == True: participantesSubespecificadosMulheres = participantesSubespecificadosMulheres + 1 if dadosParticipantes[participante][1] == 0: participantesSubespecificadosEtaria["<=20"] = participantesSubespecificadosEtaria["<=20"] + 1 elif dadosParticipantes[participante][1] == 1: participantesSubespecificadosEtaria["20-25"] = participantesSubespecificadosEtaria["20-25"] + 1 elif dadosParticipantes[participante][1] == 2: participantesSubespecificadosEtaria["26-30"] = participantesSubespecificadosEtaria["26-30"] + 1 elif dadosParticipantes[participante][1] == 3: participantesSubespecificadosEtaria["30-40"] = participantesSubespecificadosEtaria["30-40"] + 1 elif dadosParticipantes[participante][1] == 4: participantesSubespecificadosEtaria["40-50"] = participantesSubespecificadosEtaria["40-50"] + 1 elif dadosParticipantes[participante][1] == 5: participantesSubespecificadosEtaria["50-60"] = participantesSubespecificadosEtaria["50-60"] + 1 else: participantesSubespecificadosEtaria[">60"] = participantesSubespecificadosEtaria[">60"] + 1 if participantes[participante] == False: participantesNaoRelacionais = participantesNaoRelacionais + 1 if dadosParticipantes[participante][1] == 0: participantesNaoRelacionaisEtaria["<=20"] = participantesNaoRelacionaisEtaria["<=20"] + 1 elif dadosParticipantes[participante][1] == 1: participantesNaoRelacionaisEtaria["20-25"] = participantesNaoRelacionaisEtaria["20-25"] + 1 elif dadosParticipantes[participante][1] == 2: participantesNaoRelacionaisEtaria["26-30"] = participantesNaoRelacionaisEtaria["26-30"] + 1 elif dadosParticipantes[participante][1] == 3: participantesNaoRelacionaisEtaria["30-40"] = participantesNaoRelacionaisEtaria["30-40"] + 1 elif dadosParticipantes[participante][1] == 4: participantesNaoRelacionaisEtaria["40-50"] = participantesNaoRelacionaisEtaria["40-50"] + 1 elif dadosParticipantes[participante][1] == 5: participantesNaoRelacionaisEtaria["50-60"] = participantesNaoRelacionaisEtaria["50-60"] + 1 else: participantesNaoRelacionaisEtaria[">60"] = participantesNaoRelacionaisEtaria[">60"] + 1 if dadosParticipantes[participante][0] == 0: participantesHomensNaoRelacionais = participantesHomensNaoRelacionais + 1 else: participantesMulheresNaoRelacionais = participantesMulheresNaoRelacionais + 1 else: participantesMistos = participantesMistos + 1 if dadosParticipantes[participante][1] == 0: participantesRelacionaisEtaria["<=20"] = participantesRelacionaisEtaria["<=20"] + 1 elif dadosParticipantes[participante][1] == 1: participantesRelacionaisEtaria["20-25"] = participantesRelacionaisEtaria["20-25"] + 1 elif dadosParticipantes[participante][1] == 2: participantesRelacionaisEtaria["26-30"] = participantesRelacionaisEtaria["26-30"] + 1 elif dadosParticipantes[participante][1] == 3: participantesRelacionaisEtaria["30-40"] = participantesRelacionaisEtaria["30-40"] + 1 elif dadosParticipantes[participante][1] == 4: participantesRelacionaisEtaria["40-50"] = participantesRelacionaisEtaria["40-50"] + 1 elif dadosParticipantes[participante][1] == 5: participantesRelacionaisEtaria["50-60"] = participantesRelacionaisEtaria["50-60"] + 1 else: participantesRelacionaisEtaria[">60"] = participantesRelacionaisEtaria[">60"] + 1 if participantesRelacionaiss[participante] == True: participantesRelacionais = participantesRelacionais + 1 if dadosParticipantes[participante][0] == 0: participantesHomensRelacionais = participantesHomensRelacionais + 1 else: participantesMulheresRelacionais = participantesMulheresRelacionais + 1 print "Numero de Expressoes do Corpus: " + str(len(expressoes)) print 20 * "*" print "Expressoes Subespecificadas: " + str(expressoesSubespecificadas) print "Expressoes Subespecificadas Homens: " + str(expressoesSubespecificadasHomens) print "Expressoes Subespecificadas Mulheres: " + str(expressoesSubespecificadasMulheres) print 20 * "*" print "Expressoes Superespecificadas: " + str(expressoesSuperespecificadas) print "Expressoes Superespecificadas Homens: " + str(expressoesSuperespecificadasHomens) print "Expressoes Superespecificadas Mulheres: " + str(expressoesSuperespecificadasMulheres) print 20 * "-" print "Numero de Expressoes Relacionais: " + str(expressoesRelacionais + expressoesRelacionaisConjunto) print "Expressoes Simples Relacionais: " + str(expressoesRelacionais) print "Expressoes a Conjuntos Relacionais: " + str(expressoesRelacionaisConjunto) print 20 * "-" print "Numero de Participantes: " + str(len(participantes)) print 20 * "*" print "Numero de Participantes Homens: " + str(participantesHomens) print "Numero de Participantes Homens Superespecificados: " + str(participantesSuperespecificadosHomens) print "Numero de Participantes Homens Subespecificados: " + str(participantesSubespecificadosHomens) print 20 * "*" print "Numero de Participantes Mulheres: " + str(participantesMulheres) print "Numero de Participantes Mulheres Superespecificados: " + str(participantesSuperespecificadosMulheres) print "Numero de Participantes Mulheres Subespecificados: " + str(participantesSubespecificadosMulheres) print 20 * "*" print "Participantes Nao Relacionais: " + str(participantesNaoRelacionais) print "Participantes Nao Relacionais Homens: " + str(participantesHomensNaoRelacionais) print "Participantes Nao Relacionais Mulheres: " + str(participantesMulheresNaoRelacionais) print 20 * "*" for etaria in participantesNaoRelacionaisEtaria.keys(): print "Participantes Nao Relacionais " + etaria + ": " + str(participantesNaoRelacionaisEtaria[etaria]) print 20 * "*" print "Participantes Relacionais: " + str(participantesRelacionais) print "Participantes Relacionais Homens: " + str(participantesHomensRelacionais) print "Participantes Relacionais Mulheres: " + str(participantesMulheresRelacionais) print 20 * "*" for etaria in participantesRelacionaisEtaria.keys(): print "Participantes Relacionais " + etaria + ": " + str(participantesRelacionaisEtaria[etaria]) print 20 * "-" print "Frequencias Target:" for atributo in frequencias["tg"].keys(): print atributo, ": ", str(frequencias["tg"][atributo]) print 20 * "-" print "Frequencias Landmark:" for atributo in frequencias["lm"].keys(): print atributo, ": ", str(frequencias["lm"][atributo])
''' Created on 06/01/2014 @author: thiagocastroferreira ''' import ParserGRE3D as parser import itertools as iter targets = {"1":"b1","2":"b1","3":"b1","4":"c2","5":"c1","6":"b1","7":"b1","8":"b1","9":"c1","10":"c2","11":"b1","12":"b1","13":"b1","14":"c2","15":"c1","16":"b1","17":"b1","18":"b1","19":"c1","20":"c1"} dominios = parser.parseDominio() def isUnderspecified(expressao): for target in expressao["descricao"].keys(): if target == "tg": properties = expressao["descricao"][target] dominio = dominios[expressao["caracteristicas"]["context"]] distractors = {} for property in properties.keys(): distractors = {} for element in properties[property]: for object in dominio.keys(): if property in dominio[object].keys(): if element in dominio[object][property]: distractors[object] = dominio[object] dominio = distractors if len(distractors.keys()) > 1: return True return False