File size: 1,230 Bytes
158b61b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
 * AlignedSentence.h
 *
 *  Created on: 18 Feb 2014
 *      Author: s0565741
 */
#pragma once

#include <string>
#include <set>
#include "ConsistentPhrases.h"
#include "Phrase.h"
#include "moses/TypeDef.h"

class Parameter;

class AlignedSentence
{
public:
  AlignedSentence(int lineNum)
    :m_lineNum(lineNum)
  {}

  AlignedSentence(int lineNum,
                  const std::string &source,
                  const std::string &target,
                  const std::string &alignment);
  virtual ~AlignedSentence();
  virtual void Create(const Parameter &params);

  const Phrase &GetPhrase(Moses::FactorDirection direction) const {
    return (direction == Moses::Input) ? m_source : m_target;
  }

  const ConsistentPhrases &GetConsistentPhrases() const {
    return m_consistentPhrases;
  }

  virtual std::string Debug() const;

  int m_lineNum;
protected:
  Phrase m_source, m_target;
  ConsistentPhrases m_consistentPhrases;

  void CreateConsistentPhrases(const Parameter &params);
  void PopulateWordVec(Phrase &vec, const std::string &line);

  // m_source and m_target MUST be populated before calling this
  void PopulateAlignment(const std::string &line);
  std::vector<int> GetSourceAlignmentCount() const;
};