Added alignment options to Moses server

This commit is contained in:
Lane Schwartz 2017-02-24 15:52:39 -06:00
parent 2c061823bb
commit 31f19a15e7
4 changed files with 26 additions and 13 deletions

View File

@ -1737,7 +1737,7 @@ OutputSurface(std::ostream &out, Hypothesis const& edge, bool const recursive) c
// trace ("report segmentation") option "-t" / "-tt"
int reportSegmentation = options()->output.ReportSegmentation;
if (reportSegmentation > 0 && phrase.GetSize() > 0) {
if (reportSegmentation > 0 && phrase.GetSize() > 0) {
const Range &sourceRange = edge.GetCurrSourceWordsRange();
const int sourceStart = sourceRange.GetStartPos();
const int sourceEnd = sourceRange.GetEndPos();

View File

@ -128,11 +128,17 @@ namespace Moses {
for (size_t i = 0; i < MAX_NUM_FACTORS; ++i)
factor_order.push_back(i);
}
m = param.find("no-ReportSegmentation");
if (m == param.end() || !Scan<bool>(xmlrpc_c::value_string(m->second))) {
// If we are reporting alignment info, turn on ReportSegmentation, unless XML request explicitly says not to
m = param.find("align");
if (m != param.end() && Scan<bool>(xmlrpc_c::value_string(m->second)))
ReportSegmentation = 1;
m = param.find("align");
if (m != param.end() && Scan<bool>(xmlrpc_c::value_string(m->second)))
ReportSegmentation = 1;
}
PrintAlignmentInfo = check(param,"word-align",PrintAlignmentInfo);
m = param.find("factor-delimiter");

View File

@ -85,13 +85,14 @@ void
TranslationRequest::
add_phrase_aln_info(Hypothesis const& h, vector<xmlrpc_c::value>& aInfo) const
{
// if (!m_withAlignInfo) return;
if (!options()->output.ReportSegmentation) return;
if (!m_withAlignInfo) return;
// if (!options()->output.ReportSegmentation) return;
Range const& trg = h.GetCurrTargetWordsRange();
Range const& src = h.GetCurrSourceWordsRange();
std::map<std::string, xmlrpc_c::value> pAlnInfo;
pAlnInfo["tgt-start"] = xmlrpc_c::value_int(trg.GetStartPos());
pAlnInfo["tgt-end"] = xmlrpc_c::value_int(trg.GetEndPos());
pAlnInfo["src-start"] = xmlrpc_c::value_int(src.GetStartPos());
pAlnInfo["src-end"] = xmlrpc_c::value_int(src.GetEndPos());
aInfo.push_back(xmlrpc_c::value_struct(pAlnInfo));
@ -356,6 +357,12 @@ parse_request(std::map<std::string, xmlrpc_c::value> const& params)
}
}
// Report alignment info if Moses config says to or if XML request says to
m_withAlignInfo = options()->output.ReportSegmentation || check(params, "align");
// Report word alignment info if Moses config says to or if XML request says to
m_withWordAlignInfo = options()->output.PrintAlignmentInfo || check(params, "word-align");
si = params.find("weights");
if (si != params.end())
{
@ -465,8 +472,8 @@ pack_hypothesis(const Moses::Manager& manager,
<< std::endl);
dest[key] = xmlrpc_c::value_string(target.str());
// if (m_withAlignInfo) {
if (options()->output.ReportSegmentation) {
if (m_withAlignInfo) {
// if (options()->output.ReportSegmentation) {
// phrase alignment, if requested
vector<xmlrpc_c::value> p_aln;
@ -475,8 +482,8 @@ pack_hypothesis(const Moses::Manager& manager,
dest["align"] = xmlrpc_c::value_array(p_aln);
}
// if (m_withWordAlignInfo) {
if (options()->output.PrintAlignmentInfo) {
if (m_withWordAlignInfo) {
//if (options()->output.PrintAlignmentInfo) {
// word alignment, if requested
vector<xmlrpc_c::value> w_aln;
BOOST_REVERSE_FOREACH(Hypothesis const* e, edges)

View File

@ -38,8 +38,8 @@ TranslationRequest : public virtual Moses::TranslationTask
Translator* m_translator;
std::string m_source_string, m_target_string;
// bool m_withAlignInfo;
// bool m_withWordAlignInfo;
bool m_withAlignInfo;
bool m_withWordAlignInfo;
bool m_withGraphInfo;
bool m_withTopts;
bool m_withScoreBreakdown;