#pragma once #include #include #include #include #include "moses/PP/PhraseProperty.h" namespace Moses { class SpanLengthPhraseProperty : public PhraseProperty { public: SpanLengthPhraseProperty(); void ProcessValue(const std::string &value); float GetProb(size_t ntInd, size_t sourceWidth, float smoothing) const; protected: // fractional counts typedef std::map Map; typedef std::vector > Vec; Vec m_source, m_target; void Populate(const std::set< std::vector > &indices, float count); void Populate(const std::vector &toks, float count); void Populate(Map &map, size_t span, float count); void CalcTotals(Vec &vec); }; } // namespace Moses