00001
00002 #pragma once
00003
00004 #include <map>
00005 #include <vector>
00006 #include <string>
00007 #include <iostream>
00008
00009 #include "ug_typedefs.h"
00010 namespace sapt
00011 {
00012 using tpt::id_type;
00013
00014 std::string
00015 query_bias_server(std::string const& url,
00016 std::string const& text,
00017 std::ostream* log);
00018
00019 class SamplingBias
00020 {
00021 protected:
00022 std::vector<id_type> const* m_sid2docid;
00023 public:
00024 SamplingBias(std::vector<id_type> const* sid2docid);
00025 int loglevel;
00026 std::ostream* log;
00027
00028 SPTR<std::map<std::string, float> > m_bias_map;
00029 SPTR<std::map<std::string, float> const> getBiasMap();
00030 virtual float
00031 operator[](id_type const ID) const = 0;
00032
00033
00034 virtual size_t size() const = 0;
00035
00036
00037 virtual int
00038 GetClass(id_type const ID) const;
00039
00040 };
00041
00042 class
00043 DocumentBias : public SamplingBias
00044 {
00045
00046 std::map<id_type, float> m_bias;
00047 public:
00048
00049 DocumentBias(std::vector<id_type> const& sid2doc,
00050 std::map<std::string,id_type> const& docname2docid,
00051 std::string const& server_url,
00052 std::string const& text,
00053 std::ostream* log);
00054
00055 DocumentBias(std::vector<id_type> const& sid2doc,
00056 std::map<std::string,id_type> const& docname2docid,
00057 std::map<std::string, float> const& context_weights,
00058 std::ostream* log);
00059
00060 void
00061 init_from_json
00062 ( std::string const& json,
00063 std::map<std::string,id_type> const& docname2docid,
00064 std::ostream* log );
00065
00066 void
00067 init
00068 ( std::map<std::string,float> const& biasmap,
00069 std::map<std::string,id_type> const& docname2docid);
00070
00071 float
00072 operator[](id_type const idx) const;
00073
00074 size_t
00075 size() const;
00076
00077 const std::map<id_type, float>& GetDocumentBiasMap() const;
00078 };
00079
00080 class
00081 SentenceBias : public SamplingBias
00082 {
00083 std::vector<float> m_bias;
00084 public:
00085 SentenceBias(std::vector<float> const& bias,
00086 std::vector<id_type> const* sid2docid = NULL);
00087
00088 SentenceBias(size_t const s, float const f = 0,
00089 std::vector<id_type> const* sid2docid = NULL);
00090
00091 float& operator[](id_type const idx);
00092 float operator[](id_type const idx) const;
00093 size_t size() const;
00094
00095 };
00096
00097 class
00098 SamplingBiasAlways : public SamplingBias
00099 {
00100 public:
00101 SamplingBiasAlways(std::vector<id_type> const* sid2docid)
00102 : SamplingBias(sid2docid) {}
00103
00104 float operator[](id_type const idx) { return 1; }
00105 float operator[](id_type const idx) const { return 1; }
00106 size_t size() const { return 0; }
00107 };
00108
00109 }
00110