|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef MERT_HYP_PACK_COLLECTION_H |
|
#define MERT_HYP_PACK_COLLECTION_H |
|
|
|
#include <string> |
|
#include <vector> |
|
#include <utility> |
|
#include <cstddef> |
|
|
|
#include "FeatureDataIterator.h" |
|
#include "ScoreDataIterator.h" |
|
#include "MiraFeatureVector.h" |
|
|
|
namespace MosesTuning |
|
{ |
|
|
|
|
|
|
|
|
|
class HypPackEnumerator |
|
{ |
|
public: |
|
virtual ~HypPackEnumerator() {} |
|
|
|
virtual void reset() = 0; |
|
virtual bool finished() = 0; |
|
virtual void next() = 0; |
|
|
|
virtual std::size_t cur_id() = 0; |
|
virtual std::size_t cur_size() = 0; |
|
virtual std::size_t num_dense() const = 0; |
|
virtual const MiraFeatureVector& featuresAt(std::size_t i) = 0; |
|
virtual const ScoreDataItem& scoresAt(std::size_t i) = 0; |
|
}; |
|
|
|
|
|
|
|
class StreamingHypPackEnumerator : public HypPackEnumerator |
|
{ |
|
public: |
|
StreamingHypPackEnumerator(std::vector<std::string> const& featureFiles, |
|
std::vector<std::string> const& scoreFiles); |
|
|
|
virtual std::size_t num_dense() const; |
|
|
|
virtual void reset(); |
|
virtual bool finished(); |
|
virtual void next(); |
|
|
|
virtual std::size_t cur_id(); |
|
virtual std::size_t cur_size(); |
|
virtual const MiraFeatureVector& featuresAt(std::size_t i); |
|
virtual const ScoreDataItem& scoresAt(std::size_t i); |
|
|
|
private: |
|
void prime(); |
|
std::size_t m_num_lists; |
|
std::size_t m_sentenceId; |
|
std::vector<std::string> m_featureFiles; |
|
std::vector<std::string> m_scoreFiles; |
|
|
|
bool m_primed; |
|
int m_iNumDense; |
|
std::vector<FeatureDataIterator> m_featureDataIters; |
|
std::vector<ScoreDataIterator> m_scoreDataIters; |
|
std::vector<std::pair<std::size_t,std::size_t> > m_current_indexes; |
|
std::vector<MiraFeatureVector> m_current_featureVectors; |
|
}; |
|
|
|
|
|
|
|
|
|
class RandomAccessHypPackEnumerator : public HypPackEnumerator |
|
{ |
|
public: |
|
RandomAccessHypPackEnumerator(std::vector<std::string> const& featureFiles, |
|
std::vector<std::string> const& scoreFiles, |
|
bool no_shuffle); |
|
|
|
virtual std::size_t num_dense() const; |
|
|
|
virtual void reset(); |
|
virtual bool finished(); |
|
virtual void next(); |
|
|
|
virtual std::size_t cur_id(); |
|
virtual std::size_t cur_size(); |
|
virtual const MiraFeatureVector& featuresAt(std::size_t i); |
|
virtual const ScoreDataItem& scoresAt(std::size_t i); |
|
|
|
private: |
|
bool m_no_shuffle; |
|
std::size_t m_cur_index; |
|
std::size_t m_num_dense; |
|
std::vector<std::size_t> m_indexes; |
|
std::vector<std::vector<MiraFeatureVector> > m_features; |
|
std::vector<std::vector<ScoreDataItem> > m_scores; |
|
}; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|