| #include "mmsapt.h" |
| #include "moses/Manager.h" |
| #include "moses/TranslationModel/PhraseDictionaryTreeAdaptor.h" |
| #include <boost/foreach.hpp> |
| #include <boost/format.hpp> |
| #include <boost/tokenizer.hpp> |
| #include <boost/shared_ptr.hpp> |
| #include <algorithm> |
| #include <iostream> |
|
|
| using namespace Moses; |
| using namespace sapt; |
| using namespace std; |
| using namespace boost; |
|
|
| vector<FactorType> fo(1,FactorType(0)); |
|
|
| ostream& |
| operator<<(ostream& out, Hypothesis const* x) |
| { |
| vector<const Hypothesis*> H; |
| for (const Hypothesis* h = x; h; h = h->GetPrevHypo()) |
| H.push_back(h); |
| for (; H.size(); H.pop_back()) |
| { |
| Phrase const& p = H.back()->GetCurrTargetPhrase(); |
| for (size_t pos = 0 ; pos < p.GetSize() ; pos++) |
| out << *p.GetFactor(pos, 0) << (H.size() ? " " : ""); |
| } |
| return out; |
| } |
|
|
| vector<FactorType> ifo; |
| size_t lineNumber; |
|
|
| string |
| translate(string const& source) |
| { |
| StaticData const& global = StaticData::Instance(); |
|
|
| Sentence sentence; |
| istringstream ibuf(source+"\n"); |
| sentence.Read(ibuf,ifo); |
|
|
| |
| Manager manager(sentence, global.GetSearchAlgorithm()); |
| manager.ProcessSentence(); |
|
|
| ostringstream obuf; |
| const Hypothesis* h = manager.GetBestHypothesis(); |
| obuf << h; |
| return obuf.str(); |
|
|
| } |
|
|
| int main(int argc, char* argv[]) |
| { |
| Parameter params; |
| if (!params.LoadParam(argc,argv) || !StaticData::LoadDataStatic(¶ms, argv[0])) |
| exit(1); |
|
|
| StaticData const& global = StaticData::Instance(); |
| global.SetVerboseLevel(0); |
| ifo = global.GetInputFactorOrder(); |
|
|
| lineNumber = 0; |
| string source, target, alignment; |
| while (getline(cin,source)) |
| { |
| getline(cin,target); |
| getline(cin,alignment); |
| cout << "[S] " << source << endl; |
| cout << "[H] " << translate(source) << endl; |
| cout << "[T] " << target << endl; |
| Mmsapt* pdsa = reinterpret_cast<Mmsapt*>(PhraseDictionary::GetColl()[0]); |
| pdsa->add(source,target,alignment); |
| cout << "[X] " << translate(source) << endl; |
| cout << endl; |
| } |
| exit(0); |
| } |
|
|
|
|
|
|
|
|