in src/dictionary.cc [450:483]
void Dictionary::load(std::istream& in) {
words_.clear();
in.read((char*)&size_, sizeof(int32_t));
in.read((char*)&nwords_, sizeof(int32_t));
in.read((char*)&nlabels_, sizeof(int32_t));
in.read((char*)&ntokens_, sizeof(int64_t));
in.read((char*)&pruneidx_size_, sizeof(int64_t));
for (int32_t i = 0; i < size_; i++) {
char c;
entry e;
while ((c = in.get()) != 0) {
e.word.push_back(c);
}
in.read((char*)&e.count, sizeof(int64_t));
in.read((char*)&e.type, sizeof(entry_type));
words_.push_back(e);
}
pruneidx_.clear();
for (int32_t i = 0; i < pruneidx_size_; i++) {
int32_t first;
int32_t second;
in.read((char*)&first, sizeof(int32_t));
in.read((char*)&second, sizeof(int32_t));
pruneidx_[first] = second;
}
initTableDiscard();
initNgrams();
int32_t word2intsize = std::ceil(size_ / 0.7);
word2int_.assign(word2intsize, -1);
for (int32_t i = 0; i < size_; i++) {
word2int_[find(words_[i].word)] = i;
}
}