#ifndef LM_NEURAL_WORDVECS_H #define LM_NEURAL_WORDVECS_H #include "util/scoped.hh" #include "lm/vocab.hh" #include 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 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 #endif // LM_NEURAL_WORDVECS_H