| | #ifndef GLOBALLEXICALMODELUNLIMITED_H_ |
| | #define GLOBALLEXICALMODELUNLIMITED_H_ |
| |
|
| | #include <stdexcept> |
| | #include <string> |
| | #include <vector> |
| | #include <boost/unordered_set.hpp> |
| | #include <boost/unordered_map.hpp> |
| |
|
| | #include "StatelessFeatureFunction.h" |
| | #include "moses/Factor.h" |
| | #include "moses/Phrase.h" |
| | #include "moses/TypeDef.h" |
| | #include "moses/Util.h" |
| | #include "moses/Range.h" |
| | #include "moses/FactorTypeSet.h" |
| | #include "moses/Sentence.h" |
| |
|
| | #ifdef WITH_THREADS |
| | #include <boost/thread/tss.hpp> |
| | #endif |
| |
|
| | namespace Moses |
| | { |
| |
|
| | class Factor; |
| | class Phrase; |
| | class Hypothesis; |
| | class InputType; |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | class GlobalLexicalModelUnlimited : public StatelessFeatureFunction |
| | { |
| | typedef std::map< char, short > CharHash; |
| | typedef std::map< std::string, short > StringHash; |
| |
|
| | struct ThreadLocalStorage { |
| | |
| | const Sentence *input; |
| | }; |
| |
|
| | private: |
| | #ifdef WITH_THREADS |
| | boost::thread_specific_ptr<ThreadLocalStorage> m_local; |
| | #else |
| | std::auto_ptr<ThreadLocalStorage> m_local; |
| | #endif |
| |
|
| | CharHash m_punctuationHash; |
| |
|
| | std::vector< FactorType > m_inputFactors; |
| | std::vector< FactorType > m_outputFactors; |
| | bool m_unrestricted; |
| |
|
| | bool m_sourceContext; |
| | bool m_biphrase; |
| | bool m_bitrigger; |
| |
|
| | bool m_biasFeature; |
| | bool m_ignorePunctuation; |
| |
|
| | boost::unordered_set<std::string> m_vocabSource; |
| | boost::unordered_set<std::string> m_vocabTarget; |
| |
|
| | public: |
| | GlobalLexicalModelUnlimited(const std::string &line); |
| |
|
| | bool Load(const std::string &filePathSource, const std::string &filePathTarget); |
| |
|
| | void InitializeForInput(ttasksptr const& ttask); |
| |
|
| | |
| | |
| | void EvaluateWhenApplied(const Hypothesis& cur_hypo, |
| | ScoreComponentCollection* accumulator) const; |
| |
|
| | void EvaluateWhenApplied(const ChartHypothesis& , |
| | int , |
| | ScoreComponentCollection* ) const { |
| | throw std::logic_error("GlobalLexicalModelUnlimited not supported in chart decoder, yet"); |
| | } |
| |
|
| | void EvaluateWithSourceContext(const InputType &input |
| | , const InputPath &inputPath |
| | , const TargetPhrase &targetPhrase |
| | , const StackVec *stackVec |
| | , ScoreComponentCollection &scoreBreakdown |
| | , ScoreComponentCollection *estimatedScores = NULL) const { |
| | } |
| |
|
| | void EvaluateTranslationOptionListWithSourceContext(const InputType &input |
| | , const TranslationOptionList &translationOptionList) const { |
| | } |
| |
|
| | void EvaluateInIsolation(const Phrase &source |
| | , const TargetPhrase &targetPhrase |
| | , ScoreComponentCollection &scoreBreakdown |
| | , ScoreComponentCollection &estimatedScores) const { |
| | } |
| |
|
| | void AddFeature(ScoreComponentCollection* accumulator, |
| | StringPiece sourceTrigger, StringPiece sourceWord, StringPiece targetTrigger, |
| | StringPiece targetWord) const; |
| | }; |
| |
|
| | } |
| | #endif |
| |
|