Esempio n. 1
0
int calculateStatisticsOrAnotate(ChainsContainer &generatedChains, NarratorGraph *generatedPor, QString *text,
                                 QString fileName) {
    HadithChainGraph *dummyChainGraph = new HadithChainGraph();
    OutputDataList outputList;
    HadithDagGraph *generatedGraph = new HadithDagGraph(generatedPor);

    for (int i = 0; i < generatedChains.size(); i++) {
        Chain *chain = generatedChains[i];
        int start = chain->getStart();
        int end = chain->getEnd();
        OutputData sel(dummyChainGraph->duplicate(), text, start, end);
        Chain c_narrators(text);

        for (int j = 0; j < chain->m_chain.size(); j++) {
            ChainPrim *c = chain->m_chain[j];

            if (c->isNarrator()) {
                Narrator *narr = dynamic_cast<Narrator *>(c);
                start = narr->getStart();
                end = narr->getEnd();
                Name name(text, start, end);
                sel.addName(name);
                c_narrators.m_chain.append(narr);
            }
        }

        HadithChainGraph *localGraph = new HadithChainGraph(
            c_narrators); //we should not call deleteGraph() else we corrupt 'chain'
        delete sel.getGraph();
        sel.setGraph(localGraph);
        outputList.append(sel);
    }

    HadithInterAnnotatorAgreement h(text, fileName, generatedGraph, outputList, true);

    if (h.calculateStatisticsOrAnotate() == 0) {
        h.displayStatistics();
    }

    return 0;
#undef NULL_CORRECT
#undef NULL_DETECTED
}