6#ifndef DEEPLIMA_FASTTEXT_WRP_H
7#define DEEPLIMA_FASTTEXT_WRP_H
9#include "fastText/src/fasttext.h"
10#include <eigen3/Eigen/Dense>
15template <
class Idx=u
int64_t>
20 virtual Idx
dim()
const = 0;
23template <
class Matrix,
class Type,
class Idx=u
int64_t>
28 virtual void get(
const Type value, Matrix& target, Idx time, Idx pos)
const = 0;
32template <
class Matrix,
class Idx=u
int64_t>
38 virtual Idx
dim()
const override
43 virtual void get(
const uint64_t value, Matrix& target, Idx time, Idx feat)
const override
45 target.set(time, feat, value);
57 virtual Eigen::Index
dim()
const override
62 virtual void get(
const uint64_t value, Eigen::MatrixXf& target, Eigen::Index time, Eigen::Index feat)
const override
64 target.block<1,1>(feat, time) << value;
74template <
class Matrix,
class Idx=u
int64_t>
80 std::shared_ptr<fasttext::Vector>
m_vec;
95 virtual void load(
const std::string& fn)
99 throw std::invalid_argument(
"empty file name in FastTextVectorizer::load()");
105 m_vec = std::make_shared<fasttext::Vector>(
m_dim);
106 assert(
nullptr !=
m_vec);
110 virtual Idx
dim()
const override
115 virtual void get(
const std::string& value, Matrix& target, Idx time, Idx pos)
const override
118 assert(
nullptr !=
m_vec);
121 for (Idx i = 0; i <
m_dim; i++)
123 target.set(time, pos + i, (*
m_vec)[i]);
135 std::shared_ptr<fasttext::Vector>
m_vec;
150 virtual void load(
const std::string& fn)
154 throw std::invalid_argument(
"empty file name in FastTextVectorizer::load()");
160 m_vec = std::make_shared<fasttext::Vector>(
m_dim);
161 assert(
nullptr !=
m_vec);
165 virtual Eigen::Index
dim()
const override
170 virtual void get(
const std::string& value, Eigen::MatrixXf& target, Eigen::Index time, Eigen::Index pos)
const override
173 assert(
nullptr !=
m_vec);
176 auto blk = target.block(pos, time,
m_dim, 1);
177 for (Eigen::Index i = 0; i <
m_dim; i++)
179 blk(i, 0) = (*m_vec)[i];
186 std::shared_ptr<const fasttext::Dictionary> pd =
m_fasttext.getDictionary();
187 for (int32_t i = 0; i < pd->nwords(); ++i)
virtual void get(const uint64_t value, Eigen::MatrixXf &target, Eigen::Index time, Eigen::Index feat) const override
virtual Eigen::Index dim() const override
virtual Idx dim() const override
virtual void get(const uint64_t value, Matrix &target, Idx time, Idx feat) const override
fasttext::FastText m_fasttext
virtual void load(const std::string &fn)
std::function< void(const std::string &word) > word_callback_t
void get_words(word_callback_t fn)
std::shared_ptr< fasttext::Vector > m_vec
virtual Eigen::Index dim() const override
FastTextVectorizer(const std::string &fn="")
virtual ~FastTextVectorizer()=default
virtual void get(const std::string &value, Eigen::MatrixXf &target, Eigen::Index time, Eigen::Index pos) const override
FastTextVectorizer(const std::string &fn="")
virtual Idx dim() const override
virtual void get(const std::string &value, Matrix &target, Idx time, Idx pos) const override
std::shared_ptr< fasttext::Vector > m_vec
virtual ~FastTextVectorizer()=default
fasttext::FastText m_fasttext
virtual void load(const std::string &fn)
virtual Idx dim() const =0
virtual ~FeatureVectorizerBase()=default
virtual ~FeatureVectorizerToMatrix()=default
virtual void get(const Type value, Matrix &target, Idx time, Idx pos) const =0