summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgraehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-08-11 01:02:02 +0000
committergraehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-08-11 01:02:02 +0000
commit88827bde7abd9745fb0437a299e0bb6ad96babe6 (patch)
treeea9a838d19f14c1fdf53f2711644c43d506888bd
parent1109095a09368ae29d6aa367334db6512b677f54 (diff)
only print cfg once
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@505 ec762483-ff6d-05da-a07a-a48fb63a330f
-rw-r--r--decoder/cdec.cc5
-rwxr-xr-xdecoder/cfg_format.h24
-rwxr-xr-xdecoder/cfg_options.h1
3 files changed, 24 insertions, 6 deletions
diff --git a/decoder/cdec.cc b/decoder/cdec.cc
index b5d768e8..9696fb69 100644
--- a/decoder/cdec.cc
+++ b/decoder/cdec.cc
@@ -661,11 +661,6 @@ int main(int argc, char** argv) {
HgCFG hgcfg(forest);
cfg_options.maybe_output(hgcfg);
- if (!cfg_options.cfg_output.empty()) {
- WriteFile o(cfg_options.cfg_output);
- CFG &cfg=hgcfg.GetCFG();
- cfg.Print(o.get(),cfg_options.format);
- }
if (!fsa_ffs.empty()) {
Timer t("Target FSA rescoring:");
if (!has_late_models)
diff --git a/decoder/cfg_format.h b/decoder/cfg_format.h
index 10361804..1066c510 100755
--- a/decoder/cfg_format.h
+++ b/decoder/cfg_format.h
@@ -1,6 +1,7 @@
#ifndef CFG_FORMAT_H
#define CFG_FORMAT_H
+#include <iostream>
#include <string>
#include "wordid.h"
#include "feature_vector.h"
@@ -31,6 +32,26 @@ struct CFGFormat {
("nt_span",defaulted_value(&nt_span),"prefix A(i,j) for NT coming from hypergraph node with category A on span [i,j). this is after --nt_prefix if any")
;
}
+
+ void print(std::ostream &o) const {
+ o<<"[";
+ if (identity_scfg)
+ o<<"Identity SCFG ";
+ if (features)
+ o<<"+Features ";
+ if (logprob_feat)
+ o<<logprob_feat_name<<"(logprob) ";
+ if (nt_span)
+ o<<"named-NTs ";
+ if (cfg_comma_nt)
+ o<<",N ";
+ o << "CFG output format";
+ o<<"]";
+ }
+ friend inline std::ostream &operator<<(std::ostream &o,CFGFormat const& me) {
+ me.print(o); return o;
+ }
+
void Validate() { }
template<class CFG>
void print_source_nt(std::ostream &o,CFG const&cfg,int id,int position=1) const {
@@ -43,7 +64,8 @@ struct CFGFormat {
template <class CFG>
void print_nt_name(std::ostream &o,CFG const& cfg,int id) const {
o<<nt_prefix;
- cfg.print_nt_name(o,id);
+ if (nt_span)
+ cfg.print_nt_name(o,id);
o<<id;
}
diff --git a/decoder/cfg_options.h b/decoder/cfg_options.h
index bc7fed5f..cbbe3b42 100755
--- a/decoder/cfg_options.h
+++ b/decoder/cfg_options.h
@@ -33,6 +33,7 @@ struct CFGOptions {
}
void maybe_output(HgCFG &hgcfg) {
if (cfg_output.empty()) return;
+ std::cerr<<"Printing CFG to "<<cfg_output<<": "<<format<<'\n';
WriteFile o(cfg_output);
maybe_binarize(hgcfg);
hgcfg.GetCFG().Print(o.get(),format);