#ifndef _EXTERNAL_SCORER_H_ #define _EXTERNAL_SCORER_H_ #include #include #include "scorer.h" class ScoreServer { public: explicit ScoreServer(const std::string& cmd); virtual ~ScoreServer(); double ComputeScore(const std::vector& fields); void Evaluate(const std::vector >& refs, const std::vector& hyp, std::vector* fields); private: void RequestResponse(const std::string& request, std::string* response); FILE* pipe_; }; class ExternalSentenceScorer : public SentenceScorer { public: virtual ScoreP ScoreCandidate(const Sentence& hyp) const = 0; virtual ScoreP ScoreCCandidate(const Sentence& hyp) const =0; protected: ScoreServer* eval_server; }; class METEORServer : public ScoreServer { public: METEORServer() : ScoreServer("java -Xmx1024m -jar meteor-1.3.jar - - -mira -lower") {} }; #endif