| | #include "VWState.h" |
| |
|
| | #include "moses/FF/FFState.h" |
| | #include "moses/Phrase.h" |
| | #include "moses/Hypothesis.h" |
| | #include "moses/Util.h" |
| | #include "moses/TypeDef.h" |
| | #include "moses/StaticData.h" |
| | #include "moses/TranslationOption.h" |
| | #include <boost/functional/hash.hpp> |
| |
|
| | namespace Moses |
| | { |
| |
|
| | VWState::VWState() : m_spanStart(0), m_spanEnd(0) |
| | { |
| | ComputeHash(); |
| | } |
| |
|
| | VWState::VWState(const Phrase &phrase) |
| | : m_phrase(phrase), m_spanStart(0), m_spanEnd(0) |
| | { |
| | ComputeHash(); |
| | } |
| |
|
| | VWState::VWState(const VWState &prevState, const Hypothesis &curHypo) |
| | { |
| | VERBOSE(3, "VW :: updating state\n>> previous state: " << prevState << "\n"); |
| |
|
| | |
| | Phrase phrase = prevState.GetPhrase(); |
| | size_t contextSize = phrase.GetSize(); |
| |
|
| | |
| | phrase.Append(curHypo.GetCurrTargetPhrase()); |
| |
|
| | VERBOSE(3, ">> current hypo: " << curHypo.GetCurrTargetPhrase() << "\n"); |
| |
|
| | |
| | Range range(phrase.GetSize() - contextSize, phrase.GetSize() - 1); |
| | m_phrase = phrase.GetSubString(range); |
| |
|
| | |
| | m_spanStart = curHypo.GetTranslationOption().GetStartPos(); |
| | m_spanEnd = curHypo.GetTranslationOption().GetEndPos(); |
| |
|
| | |
| | ComputeHash(); |
| |
|
| | VERBOSE(3, ">> updated state: " << *this << "\n"); |
| | } |
| |
|
| | bool VWState::operator==(const FFState& o) const |
| | { |
| | const VWState &other = static_cast<const VWState &>(o); |
| |
|
| | return m_phrase == other.GetPhrase() |
| | && m_spanStart == other.GetSpanStart() |
| | && m_spanEnd == other.GetSpanEnd(); |
| | } |
| |
|
| | void VWState::ComputeHash() |
| | { |
| | m_hash = 0; |
| |
|
| | boost::hash_combine(m_hash, m_phrase); |
| | boost::hash_combine(m_hash, m_spanStart); |
| | boost::hash_combine(m_hash, m_spanEnd); |
| | } |
| |
|
| | std::ostream &operator<<(std::ostream &out, const VWState &state) |
| | { |
| | out << state.GetPhrase() << "::" << state.GetSpanStart() << "-" << state.GetSpanEnd(); |
| | return out; |
| | } |
| |
|
| | } |
| |
|