00001
00002 #pragma once
00003 #include <string>
00004 #include <stdint.h>
00005 #include "ug_typedefs.h"
00006 #include "ug_lexical_reordering.h"
00007 #include <boost/thread.hpp>
00008
00009 namespace sapt
00010 {
00011
00012
00013 class
00014 jstats
00015 {
00016 boost::mutex lock;
00017 uint32_t my_rcnt;
00018 uint32_t my_cnt2;
00019 float my_wcnt;
00020 float my_bcnt;
00021
00022
00023
00024 std::vector<std::pair<size_t, std::vector<unsigned char> > > my_aln;
00025
00026
00027 uint32_t ofwd[LRModel::NONE+1];
00028 uint32_t obwd[LRModel::NONE+1];
00029
00030 public:
00031 SPTR<std::vector<uint32_t> > sids;
00032 std::map<uint32_t,uint32_t> indoc;
00033
00034 jstats();
00035 jstats(jstats const& other);
00036 uint32_t rcnt() const;
00037 uint32_t cnt2() const;
00038 float wcnt() const;
00039 float bcnt() const;
00040
00041 std::vector<std::pair<size_t, std::vector<unsigned char> > > const & aln() const;
00042
00043 size_t
00044 add(float w, float b, std::vector<unsigned char> const& a, uint32_t const cnt2,
00045 uint32_t fwd_orient, uint32_t bwd_orient, int const docid, uint32_t const sid,
00046 bool const track_sid);
00047
00048 void invalidate();
00049 void validate();
00050 bool valid();
00051 uint32_t dcnt_fwd(PhraseOrientation const idx) const;
00052 uint32_t dcnt_bwd(PhraseOrientation const idx) const;
00053 void fill_lr_vec(LRModel::Direction const& dir,
00054 LRModel::ModelType const& mdl,
00055 std::vector<float>& v);
00056 };
00057 }
00058