void
ArpaNgramLM::LoadLM(ZFile &lmFile) {
    if (ReadUInt64(lmFile) == MITLMv1) {
        Deserialize(lmFile);
    } else {
        lmFile.ReOpen();
        _pModel->LoadLM(_probVectors, _bowVectors, lmFile);
    }
}
void
NgramLM::LoadCounts(ZFile &countsFile, bool reset) {
    if (ReadUInt64(countsFile) == MITLMv1) {
        if (!reset)
            throw std::runtime_error("Not implemented yet.");
        VerifyHeader(countsFile, "NgramCounts");
        _pModel->Deserialize(countsFile);
        SetOrder(_pModel->size() - 1);
        for (size_t o = 0; o <= order(); ++o)
            ReadVector(countsFile, _countVectors[o]);
    } else {
        countsFile.ReOpen();
        _pModel->LoadCounts(_countVectors, countsFile, reset);
    }
}