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 ...@@ -15,7 +15,7 @@ class Decoder
private : private :
std::string getMetricOfColName(const std::string & colName) const; 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 getMetricScore(const std::string & metric, std::size_t scoreIndex) const;
float getPrecision(const std::string & metric) const; float getPrecision(const std::string & metric) const;
float getF1Score(const std::string & metric) const; float getF1Score(const std::string & metric) const;
...@@ -27,10 +27,10 @@ class Decoder ...@@ -27,10 +27,10 @@ class Decoder
Decoder(ReadingMachine & machine); Decoder(ReadingMachine & machine);
void decode(BaseConfig & config, std::size_t beamSize, bool debug); void decode(BaseConfig & config, std::size_t beamSize, bool debug);
void evaluate(const Config & config, std::filesystem::path modelPath, const std::string goldTSV); 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<std::pair<float,std::string>> getF1Scores(const std::set<std::string> & colNames) const;
std::vector<float> getAlignedAccs(const std::set<std::string> & colNames) const; std::vector<std::pair<float,std::string>> getAlignedAccs(const std::set<std::string> & colNames) const;
std::vector<float> getRecalls(const std::set<std::string> & colNames) const; std::vector<std::pair<float,std::string>> 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>> getPrecisions(const std::set<std::string> & colNames) const;
}; };
#endif #endif
...@@ -92,32 +92,32 @@ float Decoder::getAlignedAcc(const std::string & metric) const ...@@ -92,32 +92,32 @@ float Decoder::getAlignedAcc(const std::string & metric) const
return getMetricScore(metric, 3); 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); 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); 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); 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); 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) 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; return scores;
} }
......
...@@ -99,13 +99,13 @@ int main(int argc, char * argv[]) ...@@ -99,13 +99,13 @@ int main(int argc, char * argv[])
fmt::print(stderr, "\r{:80}\rDecoding dev...", " "); fmt::print(stderr, "\r{:80}\rDecoding dev...", " ");
decoder.decode(devConfig, 1, debug); decoder.decode(devConfig, 1, debug);
decoder.evaluate(devConfig, modelPath, devTsvFile); 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 = ""; std::string devScoresStr = "";
float devScoreMean = 0; float devScoreMean = 0;
for (auto & score : devScores) for (auto & score : devScores)
{ {
devScoresStr += fmt::format("{:5.2f}%,", score); devScoresStr += fmt::format("{}({:5.2f}%),", score.second, score.first);
devScoreMean += score; devScoreMean += score.first;
} }
if (!devScoresStr.empty()) if (!devScoresStr.empty())
devScoresStr.pop_back(); 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