00001
00003
#ifndef TextSenseSequenceVMatrix_INC
00004
#define TextSenseSequenceVMatrix_INC
00005
00006
#include <plearn/vmat/RowBufferedVMatrix.h>
00007
#include "WordNet/WordNetOntology.h"
00008
#include <plearn/vmat/DiskVMatrix.h>
00009
#include <plearn/vmat/VMat.h>
00010
#include "WordNet/WordNetOntology.h"
00011
#include <plearn/math/random.h>
00012
00013
namespace PLearn {
00014
using namespace std;
00015
00017 class TextSenseSequenceVMatrix:
public RowBufferedVMatrix
00018 {
00019
protected:
00020
00021
00022
00023
00025 VMat dvm;
00027 int window_size;
00029 bool is_supervised_data;
00031 TVec<int> res_pos;
00033 bool rand_syn;
00035 TVec<TVec<pair<int, real> > >
word_given_sense_priors;
00037 WordNetOntology *
wno;
00039 mutable int my_current_row_index;
00041 mutable Vec my_current_row;
00043 bool keep_in_sentence;
00045 int sentence_boundary;
00047 bool undefined_pos_set;
00049 int undefined_pos;
00050
00051
public:
00052
00053
00054
00055
00056
00058
TextSenseSequenceVMatrix();
00060
00067 TextSenseSequenceVMatrix(
VMat that_dvm,
int that_window_size,
TVec<int> that_res_pos =
TVec<int>(0),
bool that_rand_syn =
false,
WordNetOntology *that_wno = NULL)
00068 :
inherited(that_dvm->length(), 3*(that_window_size+1)),
dvm(that_dvm),
window_size(that_window_size),
is_supervised_data(
dvm->width()==3),
res_pos(that_res_pos),
rand_syn(that_rand_syn),
wno(that_wno),
my_current_row_index(-3*(that_window_size+1)),
my_current_row(3*(that_window_size+1)),
keep_in_sentence(false),
undefined_pos_set(false)
00069
00070 {
00071
build_();
00072 }
00073
00074
00075
00076
00077
00078
private:
00080
00081
void build_();
00082
00084
void permute(
Vec v)
const;
00085
00087
void apply_boundary(
const Vec& v)
const;
00088
00089
protected:
00091
00092
static void declareOptions(
OptionList& ol);
00093
00095
virtual void getNewRow(
int i,
const Vec& v)
const;
00096
00097
public:
00099
int getRestrictedRow(
int i,
Vec v)
const;
00100
00101
00102
virtual void build();
00103
00105
virtual void makeDeepCopyFromShallowCopy(map<const void*, void*>& copies);
00106
00108 void setOntology(
WordNetOntology *that_wno){
wno = that_wno;}
00109
00111 void setWindowSize(
int that_window_size){
window_size = that_window_size;}
00112
00114 void setWordSequence(
VMat that_dvm){
dvm = that_dvm;
is_supervised_data = that_dvm->width()==3; }
00115
00117 void setRandomGeneration(
bool that_rand_syn){
rand_syn = that_rand_syn;}
00118
00120 void setRestrictedPOS(
TVec<int> that_res_pos){
res_pos = that_res_pos;}
00121
00123 void setSentenceBoundary(
int b){
keep_in_sentence =
true;
sentence_boundary = b;}
00124
00126 void setUndefinedPOSId(
int pos_id){
undefined_pos_set =
true;
undefined_pos = pos_id;}
00127
00128 typedef RowBufferedVMatrix inherited;
00130
PLEARN_DECLARE_OBJECT(
TextSenseSequenceVMatrix);
00131
00132 };
00133
00134 }
00135
#endif