Skip to content
Snippets Groups Projects
Commit 2465f80b authored by Franck Dary's avatar Franck Dary
Browse files

When printing scores on dev, show metrics

parent f669bcfa
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,7 @@ class Decoder
private :
std::string getMetricOfColName(const std::string & colName) const;
std::vector<float> getScores(const std::set<std::string> & colNames, float (Decoder::* metric2score)(const std::string &) const) const;
std::vector<std::pair<float,std::string>> getScores(const std::set<std::string> & colNames, float (Decoder::* metric2score)(const std::string &) const) const;
float getMetricScore(const std::string & metric, std::size_t scoreIndex) const;
float getPrecision(const std::string & metric) const;
float getF1Score(const std::string & metric) const;
......@@ -27,10 +27,10 @@ class Decoder
Decoder(ReadingMachine & machine);
void decode(BaseConfig & config, std::size_t beamSize, bool debug);
void evaluate(const Config & config, std::filesystem::path modelPath, const std::string goldTSV);
std::vector<float> getF1Scores(const std::set<std::string> & colNames) const;
std::vector<float> getAlignedAccs(const std::set<std::string> & colNames) const;
std::vector<float> getRecalls(const std::set<std::string> & colNames) const;
std::vector<float> getPrecisions(const std::set<std::string> & colNames) const;
std::vector<std::pair<float,std::string>> getF1Scores(const std::set<std::string> & colNames) const;
std::vector<std::pair<float,std::string>> getAlignedAccs(const std::set<std::string> & colNames) const;
std::vector<std::pair<float,std::string>> getRecalls(const std::set<std::string> & colNames) const;
std::vector<std::pair<float,std::string>> getPrecisions(const std::set<std::string> & colNames) const;
};
#endif
......@@ -92,32 +92,32 @@ float Decoder::getAlignedAcc(const std::string & metric) const
return getMetricScore(metric, 3);
}
std::vector<float> Decoder::getF1Scores(const std::set<std::string> & colNames) const
std::vector<std::pair<float,std::string>> Decoder::getF1Scores(const std::set<std::string> & colNames) const
{
return getScores(colNames, &Decoder::getF1Score);
}
std::vector<float> Decoder::getAlignedAccs(const std::set<std::string> & colNames) const
std::vector<std::pair<float,std::string>> Decoder::getAlignedAccs(const std::set<std::string> & colNames) const
{
return getScores(colNames, &Decoder::getAlignedAcc);
}
std::vector<float> Decoder::getRecalls(const std::set<std::string> & colNames) const
std::vector<std::pair<float,std::string>> Decoder::getRecalls(const std::set<std::string> & colNames) const
{
return getScores(colNames, &Decoder::getRecall);
}
std::vector<float> Decoder::getPrecisions(const std::set<std::string> & colNames) const
std::vector<std::pair<float,std::string>> Decoder::getPrecisions(const std::set<std::string> & colNames) const
{
return getScores(colNames, &Decoder::getPrecision);
}
std::vector<float> Decoder::getScores(const std::set<std::string> & colNames, float (Decoder::* metric2score)(const std::string &) const) const
std::vector<std::pair<float,std::string>> Decoder::getScores(const std::set<std::string> & colNames, float (Decoder::* metric2score)(const std::string &) const) const
{
std::vector<float> scores;
std::vector<std::pair<float, std::string>> scores;
for (auto & colName : colNames)
scores.push_back((this->*metric2score)(getMetricOfColName(colName)));
scores.emplace_back(std::make_pair((this->*metric2score)(getMetricOfColName(colName)), getMetricOfColName(colName)));
return scores;
}
......
......@@ -99,13 +99,13 @@ int main(int argc, char * argv[])
fmt::print(stderr, "\r{:80}\rDecoding dev...", " ");
decoder.decode(devConfig, 1, debug);
decoder.evaluate(devConfig, modelPath, devTsvFile);
std::vector<float> devScores = decoder.getF1Scores(machine.getPredicted());
std::vector<std::pair<float,std::string>> devScores = decoder.getF1Scores(machine.getPredicted());
std::string devScoresStr = "";
float devScoreMean = 0;
for (auto & score : devScores)
{
devScoresStr += fmt::format("{:5.2f}%,", score);
devScoreMean += score;
devScoresStr += fmt::format("{}({:5.2f}%),", score.second, score.first);
devScoreMean += score.first;
}
if (!devScoresStr.empty())
devScoresStr.pop_back();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment