mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-10-26 11:28:48 +03:00
Added alignment options to Moses server
This commit is contained in:
parent
2c061823bb
commit
31f19a15e7
@ -1737,7 +1737,7 @@ OutputSurface(std::ostream &out, Hypothesis const& edge, bool const recursive) c
|
|||||||
|
|
||||||
// trace ("report segmentation") option "-t" / "-tt"
|
// trace ("report segmentation") option "-t" / "-tt"
|
||||||
int reportSegmentation = options()->output.ReportSegmentation;
|
int reportSegmentation = options()->output.ReportSegmentation;
|
||||||
if (reportSegmentation > 0 && phrase.GetSize() > 0) {
|
if (reportSegmentation > 0 && phrase.GetSize() > 0) {
|
||||||
const Range &sourceRange = edge.GetCurrSourceWordsRange();
|
const Range &sourceRange = edge.GetCurrSourceWordsRange();
|
||||||
const int sourceStart = sourceRange.GetStartPos();
|
const int sourceStart = sourceRange.GetStartPos();
|
||||||
const int sourceEnd = sourceRange.GetEndPos();
|
const int sourceEnd = sourceRange.GetEndPos();
|
||||||
|
@ -128,11 +128,17 @@ namespace Moses {
|
|||||||
for (size_t i = 0; i < MAX_NUM_FACTORS; ++i)
|
for (size_t i = 0; i < MAX_NUM_FACTORS; ++i)
|
||||||
factor_order.push_back(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);
|
PrintAlignmentInfo = check(param,"word-align",PrintAlignmentInfo);
|
||||||
|
|
||||||
m = param.find("factor-delimiter");
|
m = param.find("factor-delimiter");
|
||||||
|
@ -85,13 +85,14 @@ void
|
|||||||
TranslationRequest::
|
TranslationRequest::
|
||||||
add_phrase_aln_info(Hypothesis const& h, vector<xmlrpc_c::value>& aInfo) const
|
add_phrase_aln_info(Hypothesis const& h, vector<xmlrpc_c::value>& aInfo) const
|
||||||
{
|
{
|
||||||
// if (!m_withAlignInfo) return;
|
if (!m_withAlignInfo) return;
|
||||||
if (!options()->output.ReportSegmentation) return;
|
// if (!options()->output.ReportSegmentation) return;
|
||||||
Range const& trg = h.GetCurrTargetWordsRange();
|
Range const& trg = h.GetCurrTargetWordsRange();
|
||||||
Range const& src = h.GetCurrSourceWordsRange();
|
Range const& src = h.GetCurrSourceWordsRange();
|
||||||
|
|
||||||
std::map<std::string, xmlrpc_c::value> pAlnInfo;
|
std::map<std::string, xmlrpc_c::value> pAlnInfo;
|
||||||
pAlnInfo["tgt-start"] = xmlrpc_c::value_int(trg.GetStartPos());
|
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-start"] = xmlrpc_c::value_int(src.GetStartPos());
|
||||||
pAlnInfo["src-end"] = xmlrpc_c::value_int(src.GetEndPos());
|
pAlnInfo["src-end"] = xmlrpc_c::value_int(src.GetEndPos());
|
||||||
aInfo.push_back(xmlrpc_c::value_struct(pAlnInfo));
|
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");
|
si = params.find("weights");
|
||||||
if (si != params.end())
|
if (si != params.end())
|
||||||
{
|
{
|
||||||
@ -465,8 +472,8 @@ pack_hypothesis(const Moses::Manager& manager,
|
|||||||
<< std::endl);
|
<< std::endl);
|
||||||
dest[key] = xmlrpc_c::value_string(target.str());
|
dest[key] = xmlrpc_c::value_string(target.str());
|
||||||
|
|
||||||
// if (m_withAlignInfo) {
|
if (m_withAlignInfo) {
|
||||||
if (options()->output.ReportSegmentation) {
|
// if (options()->output.ReportSegmentation) {
|
||||||
// phrase alignment, if requested
|
// phrase alignment, if requested
|
||||||
|
|
||||||
vector<xmlrpc_c::value> p_aln;
|
vector<xmlrpc_c::value> p_aln;
|
||||||
@ -475,8 +482,8 @@ pack_hypothesis(const Moses::Manager& manager,
|
|||||||
dest["align"] = xmlrpc_c::value_array(p_aln);
|
dest["align"] = xmlrpc_c::value_array(p_aln);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (m_withWordAlignInfo) {
|
if (m_withWordAlignInfo) {
|
||||||
if (options()->output.PrintAlignmentInfo) {
|
//if (options()->output.PrintAlignmentInfo) {
|
||||||
// word alignment, if requested
|
// word alignment, if requested
|
||||||
vector<xmlrpc_c::value> w_aln;
|
vector<xmlrpc_c::value> w_aln;
|
||||||
BOOST_REVERSE_FOREACH(Hypothesis const* e, edges)
|
BOOST_REVERSE_FOREACH(Hypothesis const* e, edges)
|
||||||
|
@ -38,8 +38,8 @@ TranslationRequest : public virtual Moses::TranslationTask
|
|||||||
|
|
||||||
Translator* m_translator;
|
Translator* m_translator;
|
||||||
std::string m_source_string, m_target_string;
|
std::string m_source_string, m_target_string;
|
||||||
// bool m_withAlignInfo;
|
bool m_withAlignInfo;
|
||||||
// bool m_withWordAlignInfo;
|
bool m_withWordAlignInfo;
|
||||||
bool m_withGraphInfo;
|
bool m_withGraphInfo;
|
||||||
bool m_withTopts;
|
bool m_withTopts;
|
||||||
bool m_withScoreBreakdown;
|
bool m_withScoreBreakdown;
|
||||||
|
Loading…
Reference in New Issue
Block a user