diff options
Diffstat (limited to 'moses-cmd/src/Main.cpp')
-rw-r--r-- | moses-cmd/src/Main.cpp | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/moses-cmd/src/Main.cpp b/moses-cmd/src/Main.cpp deleted file mode 100644 index 6b89e281b..000000000 --- a/moses-cmd/src/Main.cpp +++ /dev/null @@ -1,229 +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 - -#ifdef WIN32 -// Include Visual Leak Detector -#include <vld.h> -#endif - -#include <fstream> -#include "Main.h" -#include "LatticePath.h" -#include "FactorCollection.h" -#include "Manager.h" -#include "Phrase.h" -#include "Util.h" -#include "LatticePathList.h" -#include "Timer.h" -#include "IOCommandLine.h" -#include "IOFile.h" -#include "Sentence.h" -#include "ConfusionNet.h" - -#if HAVE_CONFIG_H -#include "config.h" -# ifdef HAVE_MYSQLPP -# define USE_MYSQL 1 -# endif -#else -// those not using autoconf have to build MySQL support for now -# define USE_MYSQL 1 -#endif - -#undef USE_MYSQL -#ifdef USE_MYSQL -#include "IOMySQL.h" -#endif - -using namespace std; -Timer timer; - -int main(int argc, char* argv[]) -{ - timer.start("Starting..."); - - std::cerr - <<"============================================================================\n" - <<"starting "<<argv[0]<<" (build on "<<__DATE__<<")\n" - <<"============================================================================\n" - <<"\n" - <<"the command line was: \n"; - for(int i=0;i<argc;++i) std::cerr<<argv[i]<<" "; - std::cerr - <<"\n" - <<"============================================================================\n"; - - StaticData staticData; - - if (!staticData.LoadParameters(argc, argv)) - return EXIT_FAILURE; - - /* - * boost::shared_ptr<UnknownWordHandler> unknownWordHandler(new UnknownWordHandler); - staticData.SetUnknownWordHandler(unknownWordHandler); - */ - if (staticData.GetVerboseLevel() > 0) - { -#if N_BEST - std::cerr << "N_BEST=enabled\n"; -#else - std::cerr << "N_BEST=disabled\n"; -#endif - } - - - // set up read/writing class - InputOutput *inputOutput = GetInputOutput(staticData); - - std::cerr << "The score component vector looks like this:\n" << staticData.GetScoreIndexManager(); - std::cerr << "The global weight vector looks like this:\n"; - vector<float> weights = staticData.GetAllWeights(); - std::cerr << weights[0]; - for (size_t j=1; j<weights.size(); j++) { std::cerr << ", " << weights[j]; } - std::cerr << "\n"; - // every score must have a weight! check that here: - assert(weights.size() == staticData.GetScoreIndexManager().GetTotalNumberOfScores()); - - if (inputOutput == NULL) - return EXIT_FAILURE; - - // read each sentence & decode - while(InputType *source = inputOutput->GetInput((staticData.GetInputType() ? - static_cast<InputType*>(new ConfusionNet) : - static_cast<InputType*>(new Sentence(Input))))) - { - TRACE_ERR(*source<<"\n"); - - TranslationOptionCollection *translationOptionCollection=source->CreateTranslationOptionCollection(); - assert(translationOptionCollection); - - staticData.InitializeBeforeSentenceProcessing(*source); - Manager manager(*source, *translationOptionCollection, staticData); - manager.ProcessSentence(); - inputOutput->SetOutput(manager.GetBestHypothesis(), source->GetTranslationId(), - staticData.GetReportSourceSpan(), - staticData.GetReportAllFactors() - ); - - // n-best - size_t nBestSize = staticData.GetNBestSize(); - if (nBestSize > 0) - { - TRACE_ERR(nBestSize << " " << staticData.GetNBestFilePath() << endl); - LatticePathList nBestList; - manager.CalcNBest(nBestSize, nBestList); - inputOutput->SetNBest(nBestList, source->GetTranslationId()); - RemoveAllInColl< LatticePathList::iterator > (nBestList); - } - - // delete source - // inputOutput->Release(source); - staticData.CleanUpAfterSentenceProcessing(); - delete translationOptionCollection; - delete source; - } - - delete inputOutput; - - timer.check("End."); - return EXIT_SUCCESS; -} - -InputOutput *GetInputOutput(StaticData &staticData) -{ - InputOutput *inputOutput; - const std::vector<FactorType> &inputFactorOrder = staticData.GetInputFactorOrder() - ,&outputFactorOrder = staticData.GetOutputFactorOrder(); - FactorTypeSet inputFactorUsed(inputFactorOrder); - - // io - if (staticData.GetIOMethod() == IOMethodMySQL) - { - TRACE_ERR("IO from MySQL" << endl); -#if USE_MYSQL - const PARAM_VEC &mySQLParam = staticData.GetParam("mysql"); - inputOutput = new IOMySQL(mySQLParam[0], mySQLParam[1], mySQLParam[2], mySQLParam[3] - , Scan<long>(mySQLParam[4]), Scan<long>(mySQLParam[5]) - , inputFactorOrder, inputFactorUsed, staticData.GetFactorCollection()); - staticData.LoadPhraseTables(); -#else - TRACE_ERR( "moses was not built with mysql libraries, please configure\n" - << " to use another input method.\n"); - inputOutput = NULL; -#endif - } - else if (staticData.GetIOMethod() == IOMethodFile) - { - TRACE_ERR("IO from File" << endl); - string inputFileHash; - list< Phrase > inputPhraseList; - string filePath = staticData.GetParam("input-file")[0]; - - TRACE_ERR("About to create ioFile" << endl); - IOFile *ioFile = new IOFile(inputFactorOrder, outputFactorOrder, inputFactorUsed - , staticData.GetFactorCollection() - , staticData.GetNBestSize() - , staticData.GetNBestFilePath() - , filePath); - if(staticData.GetInputType()) - { - TRACE_ERR("Do not read input phrases for confusion net translation\n"); - } - else - { - TRACE_ERR("About to GetInputPhrase\n"); - ioFile->GetInputPhrase(inputPhraseList); - } - TRACE_ERR("After GetInputPhrase" << endl); - inputOutput = ioFile; - inputFileHash = GetMD5Hash(filePath); - TRACE_ERR("About to LoadPhraseTables" << endl); - staticData.LoadPhraseTables(true, inputFileHash, inputPhraseList); - ioFile->ResetSentenceId(); - } - else - { - TRACE_ERR("IO from STDOUT/STDIN" << endl); - inputOutput = new IOCommandLine(inputFactorOrder, outputFactorOrder, inputFactorUsed - , staticData.GetFactorCollection() - , staticData.GetNBestSize() - , staticData.GetNBestFilePath()); - staticData.LoadPhraseTables(); - } - staticData.LoadMapping(); - timer.check("Created input-output object"); - - return inputOutput; -} - |