diff options
Diffstat (limited to 'moses-cmd/src/IOCommandLine.cpp')
-rwxr-xr-x | moses-cmd/src/IOCommandLine.cpp | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/moses-cmd/src/IOCommandLine.cpp b/moses-cmd/src/IOCommandLine.cpp deleted file mode 100755 index 17c20739c..000000000 --- a/moses-cmd/src/IOCommandLine.cpp +++ /dev/null @@ -1,232 +0,0 @@ -// $Id$ - -/*********************************************************************** -Moses - factored phrase-based language decoder -Copyright (c) 2006 University of Edinburgh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the University of Edinburgh nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -// example file on how to use moses library - -#include <iostream> -#include "TypeDef.h" -#include "Util.h" -#include "IOCommandLine.h" -#include "Hypothesis.h" -#include "WordsRange.h" -#include "LatticePathList.h" -#include "StaticData.h" -#include "DummyScoreProducers.h" - -using namespace std; - -IOCommandLine::IOCommandLine( - const vector<FactorType> &inputFactorOrder - , const vector<FactorType> &outputFactorOrder - , const FactorMask &inputFactorUsed - , FactorCollection &factorCollection - , size_t nBestSize - , const string &nBestFilePath) -:m_inputFactorOrder(inputFactorOrder) -,m_outputFactorOrder(outputFactorOrder) -,m_inputFactorUsed(inputFactorUsed) -,m_factorCollection(factorCollection) -{ - if (nBestSize > 0) - { - m_nBestFile.open(nBestFilePath.c_str()); - } -} - -InputType*IOCommandLine::GetInput(InputType* in) -{ - return InputOutput::GetInput(in,std::cin,m_inputFactorOrder, m_factorCollection); -} - -/*** - * print surface factor only for the given phrase - */ -void OutputSurface(std::ostream &out, const Phrase &phrase, const std::vector<FactorType> &outputFactorOrder, bool reportAllFactors) -{ - assert(outputFactorOrder.size() > 0); - if (reportAllFactors == true) - { - out << phrase; - } - else - { - size_t size = phrase.GetSize(); - for (size_t pos = 0 ; pos < size ; pos++) - { - const Factor *factor = phrase.GetFactor(pos, outputFactorOrder[0]); - out << *factor; - - for (size_t i = 1 ; i < outputFactorOrder.size() ; i++) - { - const Factor *factor = phrase.GetFactor(pos, outputFactorOrder[i]); - out << "|" << *factor; - } - out << " "; - } - } -} - -void OutputSurface(std::ostream &out, const Hypothesis *hypo, const std::vector<FactorType> &outputFactorOrder - ,bool reportSourceSpan, bool reportAllFactors) -{ - if ( hypo != NULL) - { - OutputSurface(out, hypo->GetPrevHypo(), outputFactorOrder, reportSourceSpan, reportAllFactors); - OutputSurface(out, hypo->GetTargetPhrase(), outputFactorOrder, reportAllFactors); - - if (reportSourceSpan == true - && hypo->GetTargetPhrase().GetSize() > 0) { - out << "|" << hypo->GetCurrSourceWordsRange().GetStartPos() - << "-" << hypo->GetCurrSourceWordsRange().GetEndPos() << "| "; - } - } -} - -void IOCommandLine::Backtrack(const Hypothesis *hypo){ - - if (hypo->GetPrevHypo() != NULL) { - TRACE_ERR("["<< hypo ->m_id<<" => "<<hypo->GetPrevHypo()->m_id<<"]" <<endl); - Backtrack(hypo->GetPrevHypo()); - } -} - -void IOCommandLine::SetOutput(const Hypothesis *hypo, long /*translationId*/, bool reportSourceSpan, bool reportAllFactors) -{ - if (hypo != NULL) - { - TRACE_ERR("BEST HYPO: " << *hypo << endl); - TRACE_ERR(hypo->GetScoreBreakdown() << std::endl); - Backtrack(hypo); - - OutputSurface(cout, hypo, m_outputFactorOrder, reportSourceSpan, reportAllFactors); - } - else - { - TRACE_ERR("NO BEST HYPO" << endl); - } - - cout << endl; -} - -void IOCommandLine::SetNBest(const LatticePathList &nBestList, long translationId) -{ - bool labeledOutput = StaticData::Instance()->IsLabeledNBestList(); - - LatticePathList::const_iterator iter; - for (iter = nBestList.begin() ; iter != nBestList.end() ; ++iter) - { - const LatticePath &path = **iter; - const std::vector<const Hypothesis *> &edges = path.GetEdges(); - - // print the surface factor of the translation - m_nBestFile << translationId << " ||| "; - for (int currEdge = (int)edges.size() - 1 ; currEdge >= 0 ; currEdge--) - { - const Hypothesis &edge = *edges[currEdge]; - OutputSurface(m_nBestFile, edge.GetTargetPhrase(), m_outputFactorOrder, false); // false for not reporting all factors - } - m_nBestFile << " ||| "; - - // print the scores in a hardwired order - // before each model type, the corresponding command-line-like name must be emitted - // MERT script relies on this - - // basic distortion - if (labeledOutput) - m_nBestFile << "d: "; - m_nBestFile << path.GetScoreBreakdown().GetScoreForProducer(StaticData::Instance()->GetDistortionScoreProducer()) << " "; - -// reordering - vector<LexicalReordering*> rms = StaticData::Instance()->GetReorderModels(); - if(rms.size() > 0) - { - vector<LexicalReordering*>::iterator iter; - for(iter = rms.begin(); iter != rms.end(); ++iter) - { - vector<float> scores = path.GetScoreBreakdown().GetScoresForProducer(*iter); - for (size_t j = 0; j<scores.size(); ++j) - { - m_nBestFile << scores[j] << " "; - } - } - } - - // lm - const LMList& lml = StaticData::Instance()->GetAllLM(); - if (lml.size() > 0) { - if (labeledOutput) - m_nBestFile << "lm: "; - LMList::const_iterator lmi = lml.begin(); - for (; lmi != lml.end(); ++lmi) { - m_nBestFile << path.GetScoreBreakdown().GetScoreForProducer(*lmi) << " "; - } - } - - // translation components - vector<PhraseDictionaryBase*> pds = StaticData::Instance()->GetPhraseDictionaries(); - if (pds.size() > 0) { - if (labeledOutput) - m_nBestFile << "tm: "; - vector<PhraseDictionaryBase*>::iterator iter; - for (iter = pds.begin(); iter != pds.end(); ++iter) { - vector<float> scores = path.GetScoreBreakdown().GetScoresForProducer(*iter); - for (size_t j = 0; j<scores.size(); ++j) - m_nBestFile << scores[j] << " "; - - } - } - - // word penalty - if (labeledOutput) - m_nBestFile << "w: "; - m_nBestFile << path.GetScoreBreakdown().GetScoreForProducer(StaticData::Instance()->GetWordPenaltyProducer()) << " "; - - // generation - vector<GenerationDictionary*> gds = StaticData::Instance()->GetGenerationDictionaries(); - if (gds.size() > 0) { - if (labeledOutput) - m_nBestFile << "g: "; - vector<GenerationDictionary*>::iterator iter; - for (iter = gds.begin(); iter != gds.end(); ++iter) { - vector<float> scores = path.GetScoreBreakdown().GetScoresForProducer(*iter); - for (size_t j = 0; j<scores.size(); j++) { - m_nBestFile << scores[j] << " "; - } - } - } - - // total - m_nBestFile << "||| " << path.GetTotalScore() << endl; - } - - m_nBestFile<<std::flush; -} |