-
Notifications
You must be signed in to change notification settings - Fork 4
/
hdp.h
85 lines (62 loc) · 1.95 KB
/
hdp.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#ifndef HDP_H
#define HDP_H
#include "state.h"
/// implement the Chinese restaurant franchies algorithm
class hdp
{
public:
/// fixed parameters
hdp_hyperparameter * m_hdp_param;
/// sampling state
hdp_state * m_state;
public:
hdp();
virtual ~hdp();
public:
void run();
void run_online();
void setup_state(const corpus * c,
double _eta, double _gamma, double _alpha,
const hdp_hyperparameter _hdp_param, int vocab_size = 0);
void setup_state(const hdp_hyperparameter _hdp_param);
void setup_doc_info_update(const document * doc);
int get_size_vocab() const;
double get_eta() const;
int get_topics_number() const;
int get_word_topic_counts(int k) const;
int get_word_topic_counts(int k, int w) const;
void load(char * model_path, int sample_num = -1);
void save(char * model_path, int sample_num = -1);
void free_online_info();
void free_hdp();
};
class hdp_dynamic
{
public:
/// fixed parameters
hdp_hyperparameter * m_hdp_param;
/// sampling state
hdp_state_dynamic * m_state;
public:
hdp_dynamic();
virtual ~hdp_dynamic();
public:
void run();
void run_online();
void setup_state(const corpus *c, double _eta, double _gamma, double _alpha, double _delta,
const hdp_hyperparameter _hdp_param, int vocab_size);
void setup_state(const hdp_hyperparameter _hdp_param);
void setup_doc_info_update(const document * doc);
int get_size_vocab() const;
double get_eta() const;
int get_topics_number() const;
int get_word_topic_counts(int k) const;
int get_word_topic_counts(int k, int w) const;
void load(char * model_path, int sample_num = -1);
void save(char * model_path, int sample_num = -1);
void free_doc_info();
void free_hdp();
void update_state_after_online_update();
void save_last_document_info_for_online_update();
};
#endif // HDP_H