namespace util { class FilePiece; } | |
namespace lm { | |
namespace neural { | |
class WordVecs { | |
public: | |
// Columns of the matrix are word vectors. The column index is the word. | |
typedef Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> Storage; | |
/* The file should begin with a line stating the number of word vectors and | |
* the length of the vectors. Then it's followed by lines containing a | |
* word followed by floating-point values. | |
*/ | |
explicit WordVecs(util::FilePiece &in); | |
const Storage &Vectors() const { return vecs_; } | |
WordIndex Index(StringPiece str) const { return vocab_.Index(str); } | |
private: | |
util::scoped_malloc vocab_backing_; | |
ngram::ProbingVocabulary vocab_; | |
Storage vecs_; | |
}; | |
}} // namespaces | |