vector<float> AvaliadorAcuracia::calcularDesempenho( Corpus &corpus, int atributo_padrao, int atributo_teste ) { /** * * Calcula a porcentagem de acerto para um determinado atributo * */ vector<float> vectorAcuracia; int row = corpus.pegarQtdSentencas(), column, acertos = 0, totalTokens = 0; for ( register int i = 0; i < row; ++i ) { column = corpus.pegarQtdTokens( i ); for ( register int j = 0; j < column; ++j ) { if ( corpus.pegarValor(i,j,atributo_padrao) == corpus.pegarValor(i,j,atributo_teste) ) ++acertos; ++totalTokens; } } vectorAcuracia.push_back( (float)acertos / totalTokens ); return vectorAcuracia; }
bool ProcessadorAttDisc::processarCorpus(Corpus &objCorpus) { int totlinhas, qtdConjExemplos,c; int idCol, linha; int *indices; indices = new int[numatributos]; for(int i=0; i<numatributos; i++) { indices[i] = objCorpus.pegarPosAtributo(atributo[i]); } criarAtributos(objCorpus); idCol = objCorpus.pegarPosAtributo("New"+atributo[0]); qtdConjExemplos = objCorpus.pegarQtdConjExemplos(); for (c=0; c<qtdConjExemplos; c++){ totlinhas = objCorpus.pegarQtdExemplos(c); for (linha=0; linha < totlinhas; linha++){ for( int i=0; i<numatributos; i++) { int vatual= objCorpus.pegarValor(c,linha,indices[i]); string valor_atual = objCorpus.pegarSimbolo(vatual); int logatual=0; if(valor_atual == "VERDADEIRO" ) logatual = 1; std::stringstream out2; out2 << setprecision(0) << setiosflags(ios::fixed); out2 << logatual; objCorpus.ajustarValor(c, linha, idCol+i, objCorpus.pegarIndice(out2.str())); } } } return true; }