| |
| |
| |
| |
| |
| |
|
|
| #include <boost/foreach.hpp> |
| #include <sstream> |
| #include <algorithm> |
| #include "TargetPhrases.h" |
| #include "TargetPhraseImpl.h" |
| #include "../TargetPhrase.h" |
| #include "../TranslationModel/PhraseTable.h" |
|
|
| namespace Moses2 |
| { |
| namespace SCFG |
| { |
| TargetPhrases::TargetPhrases(MemPool &pool) |
| :m_coll(pool) |
| { |
| } |
|
|
| TargetPhrases::TargetPhrases(MemPool &pool, size_t size) |
| :m_coll(pool) |
| { |
| m_coll.reserve(size); |
| } |
|
|
| TargetPhrases::~TargetPhrases() |
| { |
| |
| } |
|
|
| void TargetPhrases::SortAndPrune(size_t tableLimit) |
| { |
| iterator iterMiddle; |
| iterMiddle = |
| (tableLimit == 0 || m_coll.size() < tableLimit) ? |
| m_coll.end() : m_coll.begin() + tableLimit; |
|
|
| std::partial_sort(m_coll.begin(), iterMiddle, m_coll.end(), |
| CompareScoreForPruning<SCFG::TargetPhraseImpl>()); |
|
|
| if (tableLimit && m_coll.size() > tableLimit) { |
| m_coll.resize(tableLimit); |
| } |
|
|
| |
| } |
|
|
| std::string TargetPhrases::Debug(const System &system) const |
| { |
| std::stringstream out; |
|
|
| out << m_coll.size() << std::endl; |
| BOOST_FOREACH(const SCFG::TargetPhraseImpl *tp, m_coll) { |
| out << tp->Debug(system); |
| out << std::endl; |
| } |
| return out.str(); |
| } |
|
|
| } |
| } |
|
|