00001
00019 #ifndef __D_T_BOW_VECTOR__
00020 #define __D_T_BOW_VECTOR__
00021
00022 #include <iostream>
00023 #include <map>
00024 #include <vector>
00025
00026 namespace DBoW2 {
00027
00029 typedef unsigned int WordId;
00030
00032 typedef double WordValue;
00033
00035 typedef unsigned int NodeId;
00036
00038 enum LNorm
00039 {
00040 L1,
00041 L2
00042 };
00043
00045 enum WeightingType
00046 {
00047 TF_IDF,
00048 TF,
00049 IDF,
00050 BINARY
00051 };
00052
00054 enum ScoringType
00055 {
00056 L1_NORM,
00057 L2_NORM,
00058 CHI_SQUARE,
00059 KL,
00060 BHATTACHARYYA,
00061 DOT_PRODUCT,
00062 };
00063
00065 class BowVector:
00066 public std::map<WordId, WordValue>
00067 {
00068 public:
00069
00073 BowVector(void);
00074
00078 ~BowVector(void);
00079
00086 void addWeight(WordId id, WordValue v);
00087
00093 void addIfNotExist(WordId id, WordValue v);
00094
00099 void normalize(LNorm norm_type);
00100
00106 friend std::ostream& operator<<(std::ostream &out, const BowVector &v);
00107
00113 void saveM(const std::string &filename, size_t W) const;
00114 };
00115
00116 }
00117
00118 #endif