summaryrefslogtreecommitdiff
path: root/decoder
diff options
context:
space:
mode:
Diffstat (limited to 'decoder')
-rwxr-xr-xdecoder/oracle_bleu.h2
-rwxr-xr-xdecoder/sentences.h32
2 files changed, 29 insertions, 5 deletions
diff --git a/decoder/oracle_bleu.h b/decoder/oracle_bleu.h
index 470d311d..94548c18 100755
--- a/decoder/oracle_bleu.h
+++ b/decoder/oracle_bleu.h
@@ -115,7 +115,6 @@ struct OracleBleu {
set_oracle_doc_size(doc_size);
}
- typedef boost::shared_ptr<Score> ScoreP;
ScoreP doc_score,sentscore; // made from factory, so we delete them
ScoreP GetScore(Sentence const& sentence,int sent_id) {
return ScoreP(ds[sent_id]->ScoreCandidate(sentence));
@@ -185,6 +184,7 @@ struct OracleBleu {
}
// destroys forest (replaces it w/ rescored oracle one)
+ // sets sentscore
Oracle ComputeOracle(SentenceMetadata const& smeta,Hypergraph *forest_in_out,WeightVector const& feature_weights,unsigned kbest=0,std::string const& forest_output="") {
Hypergraph &forest=*forest_in_out;
Oracle r;
diff --git a/decoder/sentences.h b/decoder/sentences.h
index 842072b9..622a6f43 100755
--- a/decoder/sentences.h
+++ b/decoder/sentences.h
@@ -9,6 +9,10 @@
#include "stringlib.h"
typedef std::vector<WordID> Sentence;
+inline std::ostream & operator<<(std::ostream &out,Sentence const& s) {
+ return out<<TD::GetString(s);
+}
+
inline void StringToSentence(std::string const& str,Sentence &s) {
using namespace std;
vector<string> ss=SplitOnWhitespace(str);
@@ -38,15 +42,35 @@ public:
Sentences() { }
Sentences(unsigned n,Sentence const& sentence) : VS(n,sentence) { }
Sentences(unsigned n,std::string const& sentence) : VS(n,StringToSentence(sentence)) { }
+ std::string filename;
void Load(std::string file) {
ReadFile r(file);
- Load(*r.stream());
+ Load(r.get(),file);
}
- void Load(std::istream &in) {
- this->push_back(Sentence());
- while(in>>this->back()) ;
+ void Load(std::istream &in,std::string filen="-") {
+ filename=filen;
+ do {
+ this->push_back(Sentence());
+ } while(in>>this->back());
this->pop_back();
}
+ void Print(std::ostream &out,int headn=0) const {
+ out << "[" << size()<< " sentences from "<<filename<<"]";
+ if (headn!=0) {
+ int i=0,e=this->size();
+ if (headn>0&&headn<e) {
+ e=headn;
+ out << " (first "<<headn<<")";
+ }
+ out << " :\n";
+ for (;i<e;++i)
+ out<<(*this)[i] << "\n";
+ }
+ }
+ friend inline std::ostream& operator<<(std::ostream &out,Sentences const& s) {
+ s.Print(out);
+ return out;
+ }
};