00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef MERT_FEATURE_ARRAY_H_
00010 #define MERT_FEATURE_ARRAY_H_
00011
00012 #include <vector>
00013 #include <iosfwd>
00014 #include "FeatureStats.h"
00015
00016 namespace MosesTuning
00017 {
00018
00019
00020 const char FEATURES_TXT_BEGIN[] = "FEATURES_TXT_BEGIN_0";
00021 const char FEATURES_TXT_END[] = "FEATURES_TXT_END_0";
00022 const char FEATURES_BIN_BEGIN[] = "FEATURES_BIN_BEGIN_0";
00023 const char FEATURES_BIN_END[] = "FEATURES_BIN_END_0";
00024
00025 class FeatureArray
00026 {
00027 private:
00028
00029
00030 int m_index;
00031 featarray_t m_array;
00032 std::size_t m_num_features;
00033 std::string m_features;
00034
00035 public:
00036 FeatureArray();
00037 ~FeatureArray();
00038
00039 void clear() {
00040 m_array.clear();
00041 }
00042
00043
00044 int getIndex() const {
00045 return m_index;
00046 }
00047 void setIndex(const int value) {
00048 m_index = value;
00049 }
00050
00051 FeatureStats& get(std::size_t i) {
00052 return m_array.at(i);
00053 }
00054 const FeatureStats& get(std::size_t i) const {
00055 return m_array.at(i);
00056 }
00057
00058 void add(FeatureStats& e) {
00059 m_array.push_back(e);
00060 }
00061
00062
00063 void swap(std::size_t i, std::size_t j) {
00064 std::swap(m_array[i], m_array[j]);
00065 }
00066
00067 void resize(std::size_t new_size) {
00068 m_array.resize(std::min(new_size, m_array.size()));
00069 }
00070
00071
00072 void merge(FeatureArray& e);
00073
00074 std::size_t size() const {
00075 return m_array.size();
00076 }
00077
00078 std::size_t NumberOfFeatures() const {
00079 return m_num_features;
00080 }
00081 void NumberOfFeatures(std::size_t v) {
00082 m_num_features = v;
00083 }
00084
00085 std::string Features() const {
00086 return m_features;
00087 }
00088 void Features(const std::string& f) {
00089 m_features = f;
00090 }
00091
00092 void savetxt(std::ostream* os);
00093 void savebin(std::ostream* os);
00094 void save(std::ostream* os, bool bin=false);
00095 void save(const std::string &file, bool bin=false);
00096 void save(bool bin=false);
00097
00098 void loadtxt(std::istream* is, const SparseVector& sparseWeights, std::size_t n);
00099 void loadbin(std::istream* is, std::size_t n);
00100 void load(std::istream* is, const SparseVector& sparseWeights);
00101
00102 bool check_consistency() const;
00103 };
00104
00105 }
00106
00107 #endif // MERT_FEATURE_ARRAY_H_