00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef moses_TranslationOptionCollectionText_h
00023 #define moses_TranslationOptionCollectionText_h
00024
00025 #include "TranslationOptionCollection.h"
00026 #include "InputPath.h"
00027 #include <map>
00028 #include <vector>
00029
00030 namespace Moses
00031 {
00032
00033 class Sentence;
00034
00038 class TranslationOptionCollectionText : public TranslationOptionCollection
00039 {
00040 public:
00041 typedef std::vector< std::vector<InputPath*> > InputPathMatrix;
00042
00043 protected:
00044 InputPathMatrix m_inputPathMatrix;
00045
00046 InputPath &GetInputPath(size_t startPos, size_t endPos);
00047
00048 public:
00049 void ProcessUnknownWord(size_t sourcePos);
00050
00051 TranslationOptionCollectionText(ttasksptr const& ttask, Sentence const& input);
00052
00053
00054 bool HasXmlOptionsOverlappingRange(size_t startPosition, size_t endPosition) const;
00055 bool ViolatesXmlOptionsConstraint(size_t startPosition, size_t endPosition, TranslationOption *transOpt) const;
00056 void CreateXmlOptionsForRange(size_t startPosition, size_t endPosition);
00057
00058 void CreateTranslationOptions();
00059
00060 bool CreateTranslationOptionsForRange(const DecodeGraph &decodeStepList
00061 , size_t startPosition
00062 , size_t endPosition
00063 , bool adhereTableLimit
00064 , size_t graphInd);
00065
00066 };
00067
00068 }
00069
00070 #endif
00071