00001 /* 00002 * AlignedSentence.h 00003 * 00004 * Created on: 18 Feb 2014 00005 * Author: s0565741 00006 */ 00007 #pragma once 00008 00009 #include <string> 00010 #include <set> 00011 #include "ConsistentPhrases.h" 00012 #include "Phrase.h" 00013 #include "moses/TypeDef.h" 00014 00015 class Parameter; 00016 00017 class AlignedSentence 00018 { 00019 public: 00020 AlignedSentence(int lineNum) 00021 :m_lineNum(lineNum) 00022 {} 00023 00024 AlignedSentence(int lineNum, 00025 const std::string &source, 00026 const std::string &target, 00027 const std::string &alignment); 00028 virtual ~AlignedSentence(); 00029 virtual void Create(const Parameter ¶ms); 00030 00031 const Phrase &GetPhrase(Moses::FactorDirection direction) const { 00032 return (direction == Moses::Input) ? m_source : m_target; 00033 } 00034 00035 const ConsistentPhrases &GetConsistentPhrases() const { 00036 return m_consistentPhrases; 00037 } 00038 00039 virtual std::string Debug() const; 00040 00041 int m_lineNum; 00042 protected: 00043 Phrase m_source, m_target; 00044 ConsistentPhrases m_consistentPhrases; 00045 00046 void CreateConsistentPhrases(const Parameter ¶ms); 00047 void PopulateWordVec(Phrase &vec, const std::string &line); 00048 00049 // m_source and m_target MUST be populated before calling this 00050 void PopulateAlignment(const std::string &line); 00051 std::vector<int> GetSourceAlignmentCount() const; 00052 }; 00053 00054