00001 00002 #pragma once 00003 00004 #include "moses/PP/PhraseProperty.h" 00005 #include "util/exception.hh" 00006 #include <string> 00007 00008 namespace Moses 00009 { 00010 00011 class OrientationPhraseProperty : public PhraseProperty 00012 { 00013 public: 00014 OrientationPhraseProperty() {}; 00015 00016 virtual void ProcessValue(const std::string &value); 00017 00018 00019 double GetLeftToRightProbabilityMono() const { 00020 return m_l2rMonoProbability; 00021 }; 00022 00023 double GetLeftToRightProbabilitySwap() const { 00024 return m_l2rSwapProbability; 00025 }; 00026 00027 double GetLeftToRightProbabilityDleft() const { 00028 return m_l2rDleftProbability; 00029 }; 00030 00031 double GetLeftToRightProbabilityDright() const { 00032 return m_l2rDrightProbability; 00033 }; 00034 00035 double GetLeftToRightProbabilityDiscontinuous() const { 00036 return m_l2rDleftProbability + m_l2rDrightProbability; 00037 }; 00038 00039 00040 double GetRightToLeftProbabilityMono() const { 00041 return m_r2lMonoProbability; 00042 }; 00043 00044 double GetRightToLeftProbabilitySwap() const { 00045 return m_r2lSwapProbability; 00046 }; 00047 00048 double GetRightToLeftProbabilityDleft() const { 00049 return m_r2lDleftProbability; 00050 }; 00051 00052 double GetRightToLeftProbabilityDright() const { 00053 return m_r2lDrightProbability; 00054 }; 00055 00056 double GetRightToLeftProbabilityDiscontinuous() const { 00057 return m_r2lDleftProbability + m_r2lDrightProbability; 00058 }; 00059 00060 00061 virtual const std::string *GetValueString() const { 00062 UTIL_THROW2("OrientationPhraseProperty: value string not available in this phrase property"); 00063 return NULL; 00064 }; 00065 00066 protected: 00067 00068 float m_l2rMonoProbability, m_l2rSwapProbability, m_l2rDrightProbability, m_l2rDleftProbability, 00069 m_r2lMonoProbability, m_r2lSwapProbability, m_r2lDrightProbability, m_r2lDleftProbability; 00070 }; 00071 00072 } // namespace Moses 00073