jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Public Member Functions | Private Member Functions | Private Attributes | List of all members
jubatus::core::fv_converter::weight_manager Class Reference

#include <weight_manager.hpp>

Inheritance diagram for jubatus::core::fv_converter::weight_manager:
Inheritance graph
Collaboration diagram for jubatus::core::fv_converter::weight_manager:
Collaboration graph

Public Member Functions

void add_weight (const std::string &key, float weight)
 
void clear ()
 
void get_diff (versioned_weight_diff &diff) const
 
storage::version get_version () const
 
void get_weight (common::sfv_t &fv) const
 
void mix (const versioned_weight_diff &lhs, versioned_weight_diff &acc) const
 
 MSGPACK_DEFINE (version_, diff_weights_, master_weights_)
 
void pack (framework::packer &pk) const
 
bool put_diff (const versioned_weight_diff &diff)
 
std::string to_string () const
 
void unpack (msgpack::object o)
 
void update_weight (const common::sfv_t &fv)
 
 weight_manager ()
 
- Public Member Functions inherited from jubatus::core::framework::model
virtual ~model ()
 

Private Member Functions

uint64_t get_document_count () const
 
size_t get_document_frequency (const std::string &key) const
 
double get_global_weight (const std::string &key) const
 
double get_user_weight (const std::string &key) const
 

Private Attributes

keyword_weights diff_weights_
 
keyword_weights master_weights_
 
util::concurrent::mutex mutex_
 
storage::version version_
 

Detailed Description

Definition at line 50 of file weight_manager.hpp.

Constructor & Destructor Documentation

jubatus::core::fv_converter::weight_manager::weight_manager ( )

Definition at line 65 of file weight_manager.cpp.

Member Function Documentation

void jubatus::core::fv_converter::weight_manager::add_weight ( const std::string &  key,
float  weight 
)

Definition at line 108 of file weight_manager.cpp.

References jubatus::core::fv_converter::keyword_weights::add_weight(), diff_weights_, and mutex_.

108  {
109  scoped_lock lk(mutex_);
110  diff_weights_.add_weight(key, weight);
111 }
void add_weight(const std::string &key, float weight)

Here is the call graph for this function:

void jubatus::core::fv_converter::weight_manager::clear ( )
inlinevirtual

Reimplemented from jubatus::core::framework::model.

Definition at line 86 of file weight_manager.hpp.

References jubatus::core::fv_converter::keyword_weights::clear(), diff_weights_, master_weights_, and mutex_.

Here is the call graph for this function:

void jubatus::core::fv_converter::weight_manager::get_diff ( versioned_weight_diff diff) const
inline

Definition at line 59 of file weight_manager.hpp.

References diff_weights_, mutex_, and version_.

59  {
60  util::concurrent::scoped_lock lk(mutex_);
61  diff = versioned_weight_diff(diff_weights_, version_);
62  }
uint64_t jubatus::core::fv_converter::weight_manager::get_document_count ( ) const
inlineprivate

Definition at line 118 of file weight_manager.hpp.

References diff_weights_, jubatus::core::fv_converter::keyword_weights::get_document_count(), and master_weights_.

Referenced by get_global_weight().

Here is the call graph for this function:

Here is the caller graph for this function:

size_t jubatus::core::fv_converter::weight_manager::get_document_frequency ( const std::string &  key) const
inlineprivate

Definition at line 123 of file weight_manager.hpp.

References diff_weights_, jubatus::core::fv_converter::keyword_weights::get_document_frequency(), and master_weights_.

Referenced by get_global_weight().

Here is the call graph for this function:

Here is the caller graph for this function:

double jubatus::core::fv_converter::weight_manager::get_global_weight ( const std::string &  key) const
private

Definition at line 84 of file weight_manager.cpp.

References get_document_count(), get_document_frequency(), and get_user_weight().

Referenced by get_weight().

84  {
85  size_t p = key.find_last_of('/');
86  if (p == std::string::npos) {
87  return 1.0;
88  }
89  std::string type = key.substr(p + 1);
90  if (type == "bin") {
91  return 1.0;
92  } else if (type == "idf") {
93  double doc_count = get_document_count();
94  double doc_freq = get_document_frequency(key);
95  return std::log((doc_count + 1) / (doc_freq + 1));
96  } else if (type == "weight") {
97  p = key.find_last_of('#');
98  if (p == std::string::npos) {
99  return 0;
100  } else {
101  return get_user_weight(key.substr(0, p));
102  }
103  } else {
104  return 1;
105  }
106 }
size_t get_document_frequency(const std::string &key) const
double get_user_weight(const std::string &key) const

Here is the call graph for this function:

Here is the caller graph for this function:

double jubatus::core::fv_converter::weight_manager::get_user_weight ( const std::string &  key) const
inlineprivate

Definition at line 128 of file weight_manager.hpp.

References diff_weights_, jubatus::core::fv_converter::keyword_weights::get_user_weight(), and master_weights_.

Referenced by get_global_weight().

128  {
129  return diff_weights_.get_user_weight(key) +
131  }
float get_user_weight(const std::string &key) const

Here is the call graph for this function:

Here is the caller graph for this function:

storage::version jubatus::core::fv_converter::weight_manager::get_version ( ) const
inline

Definition at line 92 of file weight_manager.hpp.

References version_.

92  {
93  return version_;
94  }
void jubatus::core::fv_converter::weight_manager::get_weight ( common::sfv_t fv) const

Definition at line 75 of file weight_manager.cpp.

References get_global_weight(), and mutex_.

75  {
76  scoped_lock lk(mutex_);
77  for (common::sfv_t::iterator it = fv.begin(); it != fv.end(); ++it) {
78  double global_weight = get_global_weight(it->first);
79  it->second = static_cast<float>(it->second * global_weight);
80  }
81  fv.erase(remove_if(fv.begin(), fv.end(), is_zero()), fv.end());
82 }
double get_global_weight(const std::string &key) const

Here is the call graph for this function:

void jubatus::core::fv_converter::weight_manager::mix ( const versioned_weight_diff lhs,
versioned_weight_diff acc 
) const
inline

Definition at line 76 of file weight_manager.hpp.

References jubatus::core::fv_converter::keyword_weights::merge(), jubatus::core::fv_converter::versioned_weight_diff::version_, and jubatus::core::fv_converter::versioned_weight_diff::weights_.

78  {
79  if (lhs.version_ == acc.version_) {
80  acc.weights_.merge(lhs.weights_);
81  } else if (lhs.version_ > acc.version_) {
82  acc = lhs;
83  }
84  }

Here is the call graph for this function:

jubatus::core::fv_converter::weight_manager::MSGPACK_DEFINE ( version_  ,
diff_weights_  ,
master_weights_   
)
void jubatus::core::fv_converter::weight_manager::pack ( framework::packer pk) const
inlinevirtual

Implements jubatus::core::framework::model.

Definition at line 98 of file weight_manager.hpp.

References mutex_.

98  {
99  util::concurrent::scoped_lock lk(mutex_);
100  pk.pack(*this);
101  }
bool jubatus::core::fv_converter::weight_manager::put_diff ( const versioned_weight_diff diff)
inline
std::string jubatus::core::fv_converter::weight_manager::to_string ( ) const
inline

Definition at line 108 of file weight_manager.hpp.

References diff_weights_, master_weights_, mutex_, jubatus::core::fv_converter::keyword_weights::to_string(), and version_.

108  {
109  util::concurrent::scoped_lock lk(mutex_);
110  std::stringstream ss;
111  ss << "version:" << version_
112  << " diff_weights:" << diff_weights_.to_string()
113  << " master_weights:" << master_weights_.to_string();
114  return ss.str();
115  }

Here is the call graph for this function:

void jubatus::core::fv_converter::weight_manager::unpack ( msgpack::object  o)
inlinevirtual

Implements jubatus::core::framework::model.

Definition at line 103 of file weight_manager.hpp.

References mutex_.

103  {
104  util::concurrent::scoped_lock lk(mutex_);
105  o.convert(this);
106  }
void jubatus::core::fv_converter::weight_manager::update_weight ( const common::sfv_t fv)

Definition at line 70 of file weight_manager.cpp.

References diff_weights_, mutex_, and jubatus::core::fv_converter::keyword_weights::update_document_frequency().

70  {
71  scoped_lock lk(mutex_);
73 }
void update_document_frequency(const common::sfv_t &fv)

Here is the call graph for this function:

Member Data Documentation

keyword_weights jubatus::core::fv_converter::weight_manager::diff_weights_
private
keyword_weights jubatus::core::fv_converter::weight_manager::master_weights_
private
util::concurrent::mutex jubatus::core::fv_converter::weight_manager::mutex_
mutableprivate
storage::version jubatus::core::fv_converter::weight_manager::version_
private

Definition at line 136 of file weight_manager.hpp.

Referenced by get_diff(), get_version(), put_diff(), and to_string().


The documentation for this class was generated from the following files: