| namespace lm { namespace builder { | |
| /* Interpolate step. | |
| * Input: suffix sorted n-grams with (p_uninterpolated, gamma) from | |
| * InitialProbabilities. | |
| * Output: suffix sorted n-grams with complete probability | |
| */ | |
| class Interpolate { | |
| public: | |
| // Normally vocab_size is the unigram count-1 (since p(<s>) = 0) but might | |
| // be larger when the user specifies a consistent vocabulary size. | |
| explicit Interpolate(uint64_t vocab_size, const util::stream::ChainPositions &backoffs, const std::vector<uint64_t> &prune_thresholds, bool prune_vocab, bool output_q, const SpecialVocab &specials); | |
| void Run(const util::stream::ChainPositions &positions); | |
| private: | |
| float uniform_prob_; | |
| util::stream::ChainPositions backoffs_; | |
| const std::vector<uint64_t> prune_thresholds_; | |
| bool prune_vocab_; | |
| bool output_q_; | |
| const SpecialVocab specials_; | |
| }; | |
| }} // namespaces | |