File size: 1,921 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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
/*
* LRModel.h
*
* Created on: 23 Mar 2016
* Author: hieu
*/
#pragma once
#include <string>
namespace Moses2
{
class MemPool;
class Range;
class Bitmap;
class LRState;
class LexicalReordering;
class LRModel
{
public:
enum ModelType {
Monotonic, MSD, MSLR, LeftRight, None
};
enum Direction {
Forward, Backward, Bidirectional
};
enum Condition {
F, E, FE
};
enum ReorderingType {
M = 0, // monotonic
NM = 1, // non-monotonic
S = 1, // swap
D = 2, // discontinuous
DL = 2, // discontinuous, left
DR = 3, // discontinuous, right
R = 0, // right
L = 1, // left
MAX = 3, // largest possible
NONE = 4 // largest possible
};
LRModel(const std::string &modelType, LexicalReordering &ff);
virtual ~LRModel();
ModelType GetModelType() const {
return m_modelType;
}
Direction GetDirection() const {
return m_direction;
}
Condition GetCondition() const {
return m_condition;
}
bool IsPhraseBased() const {
return m_phraseBased;
}
bool CollapseScores() const {
return m_collapseScores;
}
size_t GetNumberOfTypes() const;
LexicalReordering*
GetScoreProducer() const {
return m_scoreProducer;
}
LRState *CreateLRState(MemPool &pool) const;
ReorderingType // for first phrase in phrase-based
GetOrientation(Range const& cur) const;
ReorderingType // for non-first phrases in phrase-based
GetOrientation(Range const& prev, Range const& cur) const;
ReorderingType // for HReorderingForwardState
GetOrientation(Range const& prev, Range const& cur, Bitmap const& cov) const;
ReorderingType // for HReorderingBackwarddState
GetOrientation(int const reoDistance) const;
protected:
ModelType m_modelType;
bool m_phraseBased;
bool m_collapseScores;
Direction m_direction;
Condition m_condition;
LexicalReordering *m_scoreProducer;
};
} /* namespace Moses2 */
|