mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-12-26 21:42:19 +03:00
fd577d7a65
Regression tests all check out, and kbmira seems to work fine on a Hansard French->English task. HypPackEnumerator class may be of interest to pro.cpp and future optimizers, as it abstracts a lot of the boilerplate involved in enumerating multiple k-best lists. MiraWeightVector is not really mira-specific - just a weight vector that enables efficient averaging. Could be useful to a perceptron as well. Same goes for MiraFeatureVector. Interaction with sparse features is written, but untested.
52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
/*
|
|
* MiraFeatureVector.h
|
|
* kbmira - k-best Batch MIRA
|
|
*
|
|
* An alternative to the existing SparseVector
|
|
* and FeatureDataItem combo. Should be as memory
|
|
* efficient, and a little more time efficient,
|
|
* and should save me from constantly hacking
|
|
* SparseVector
|
|
*/
|
|
|
|
#ifndef MERT_MIRA_FEATURE_VECTOR_H
|
|
#define MERT_MIRA_FEATURE_VECTOR_H
|
|
|
|
#include <vector>
|
|
|
|
#include "FeatureDataIterator.h"
|
|
|
|
using namespace std;
|
|
|
|
typedef FeatureStatsType ValType;
|
|
|
|
class MiraFeatureVector {
|
|
public:
|
|
MiraFeatureVector(const FeatureDataItem& vec);
|
|
MiraFeatureVector(const MiraFeatureVector& other);
|
|
MiraFeatureVector(const vector<ValType>& dense,
|
|
const vector<size_t>& sparseFeats,
|
|
const vector<ValType>& sparseVals);
|
|
|
|
ValType val(size_t index) const;
|
|
size_t feat(size_t index) const;
|
|
size_t size() const;
|
|
ValType sqrNorm() const;
|
|
|
|
friend MiraFeatureVector operator-(const MiraFeatureVector& a,
|
|
const MiraFeatureVector& b);
|
|
|
|
private:
|
|
vector<ValType> m_dense;
|
|
vector<size_t> m_sparseFeats;
|
|
vector<ValType> m_sparseVals;
|
|
};
|
|
|
|
#endif // MERT_FEATURE_VECTOR_H
|
|
|
|
// --Emacs trickery--
|
|
// Local Variables:
|
|
// mode:c++
|
|
// c-basic-offset:2
|
|
// End:
|