From 2465f80b37691e1a88e0fbe38d0e2876be9b22db Mon Sep 17 00:00:00 2001 From: Franck Dary <franck.dary@lis-lab.fr> Date: Mon, 17 Feb 2020 10:48:53 +0100 Subject: [PATCH] When printing scores on dev, show metrics --- decoder/include/Decoder.hpp | 10 +++++----- decoder/src/Decoder.cpp | 14 +++++++------- trainer/src/macaon_train.cpp | 6 +++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/decoder/include/Decoder.hpp b/decoder/include/Decoder.hpp index e576e0e..4eabde1 100644 --- a/decoder/include/Decoder.hpp +++ b/decoder/include/Decoder.hpp @@ -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 diff --git a/decoder/src/Decoder.cpp b/decoder/src/Decoder.cpp index 6f209dd..0c0f9bb 100644 --- a/decoder/src/Decoder.cpp +++ b/decoder/src/Decoder.cpp @@ -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; } diff --git a/trainer/src/macaon_train.cpp b/trainer/src/macaon_train.cpp index f762c3d..936d16c 100644 --- a/trainer/src/macaon_train.cpp +++ b/trainer/src/macaon_train.cpp @@ -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(); -- GitLab