diff --git a/sdk/plugins/integral.cpp b/sdk/plugins/integral.cpp index d369cc9..3329454 100644 --- a/sdk/plugins/integral.cpp +++ b/sdk/plugins/integral.cpp @@ -133,38 +133,53 @@ class WordWiseTransform : public Transform Q_OBJECT Q_PROPERTY(br::Transform* getWords READ get_getWords WRITE set_getWords RESET reset_getWords) Q_PROPERTY(br::Transform* byWord READ get_byWord WRITE set_byWord RESET reset_byWord) + Q_PROPERTY(int numWords READ get_numWords WRITE set_numWords RESET reset_numWords) BR_PROPERTY(br::Transform*, getWords, NULL) BR_PROPERTY(br::Transform*, byWord, NULL) + BR_PROPERTY(int, numWords, 0) void train(const TemplateList &data) { getWords->train(data); - TemplateList words; - getWords->project(data, words); + TemplateList bins; + getWords->project(data, bins); - const int columns = data.first().m().cols; - int numWords = 0; - foreach (const Template &t, words) { + numWords = 0; + foreach (const Template &t, bins) { double minVal, maxVal; minMaxLoc(t, &minVal, &maxVal); numWords = max(numWords, int(maxVal)+1); } - QVector wordCounts(numWords, 0); - foreach (const Template &t, words) { - const Mat &m = t.m(); - for (int i=0; i(i,0)]++; - } - - QVector trainingWords(numWords); - for (int i=0; itrain(reworded); } void project(const Template &src, Template &dst) const { - (void) src; (void) dst; + Template reworded; + getWords->project(src, reworded); + byWord->project(reworded, dst); + } + + Template reword(const Template &src) const + { + Template words; + getWords->project(src, words); + QVector wordCounts(numWords, 0); + for (int i=0; i(i,0)]++; + Template reworded(src.file); reworded.reserve(numWords); + for (int i=0; i indicies(numWords, 0); + for (int i=0; i(i,0); + reworded[word].row(indicies[word]++) = src.m().row(i); + } + return reworded; } };