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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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])
Esempio n. 8
0
'''
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