Skip to content
Snippets Groups Projects
Decoder.hpp 1.41 KiB
Newer Older
  • Learn to ignore specific revisions
  • Franck Dary's avatar
    Franck Dary committed
    #ifndef DECODER__H
    #define DECODER__H
    
    #include <filesystem>
    #include "ReadingMachine.hpp"
    #include "SubConfig.hpp"
    
    class Decoder
    {
      private :
    
      ReadingMachine & machine;
      std::map<std::string, std::array<float,4>> evaluation;
    
    
      private :
    
      std::string getMetricOfColName(const std::string & colName) 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;
      float getRecall(const std::string & metric) const;
      float getAlignedAcc(const std::string & metric) const;
    
    
    Franck Dary's avatar
    Franck Dary committed
      public :
    
      Decoder(ReadingMachine & machine);
    
    Franck Dary's avatar
    Franck Dary committed
      void decode(BaseConfig & config, std::size_t beamSize, bool debug, bool printAdvancement);
    
    Franck Dary's avatar
    Franck Dary committed
      void evaluate(const Config & config, std::filesystem::path modelPath, const std::string goldTSV);
    
      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;
    
    Franck Dary's avatar
    Franck Dary committed
    };
    
    #endif