summaryrefslogtreecommitdiff
path: root/mteval/external_scorer.h
diff options
context:
space:
mode:
Diffstat (limited to 'mteval/external_scorer.h')
-rw-r--r--mteval/external_scorer.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/mteval/external_scorer.h b/mteval/external_scorer.h
new file mode 100644
index 00000000..a2c91960
--- /dev/null
+++ b/mteval/external_scorer.h
@@ -0,0 +1,35 @@
+#ifndef _EXTERNAL_SCORER_H_
+#define _EXTERNAL_SCORER_H_
+
+#include <vector>
+#include <cstdio>
+
+#include "scorer.h"
+
+class ScoreServer {
+ public:
+ explicit ScoreServer(const std::string& cmd);
+ virtual ~ScoreServer();
+
+ double ComputeScore(const std::vector<float>& fields);
+ void Evaluate(const std::vector<std::vector<WordID> >& refs, const std::vector<WordID>& hyp, std::vector<float>* 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