File size: 843 Bytes
36ceee4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #pragma once
#include <cmath>
#include <string>
#include "OutputFileStream.h"
#include "Options.h"
#include "TokenizedRuleHalf.h"
namespace MosesTraining
{
namespace Syntax
{
namespace ScoreStsg
{
class RuleTableWriter
{
public:
RuleTableWriter(const Options &options, Moses::OutputFileStream &out)
: m_options(options)
, m_out(out) {}
void WriteLine(const TokenizedRuleHalf &, const TokenizedRuleHalf &,
const std::string &, double, double, int, int, int);
private:
double MaybeLog(double a) const {
if (!m_options.logProb) {
return a;
}
return m_options.negLogProb ? -log(a) : log(a);
}
void WriteRuleHalf(const TokenizedRuleHalf &);
const Options &m_options;
Moses::OutputFileStream &m_out;
};
} // namespace ScoreStsg
} // namespace Syntax
} // namespace MosesTraining
|