namespace lm { | |
namespace interpolate { | |
class SplitWorker { | |
public: | |
/** | |
* Constructs a split worker for a particular order. It writes the | |
* split-off backoff values to the backoff chain and the ngram id and | |
* probability to the sort chain for each ngram in the input. | |
*/ | |
SplitWorker(std::size_t order, util::stream::Chain &backoff_chain, | |
util::stream::Chain &sort_chain); | |
/** | |
* The callback invoked to handle the input from the ngram intermediate | |
* files. | |
*/ | |
void Run(const util::stream::ChainPosition& position); | |
private: | |
/** | |
* The ngram order we are reading/writing for. | |
*/ | |
std::size_t order_; | |
/** | |
* The stream to write to for the backoff values. | |
*/ | |
util::stream::Stream backoff_input_; | |
/** | |
* The stream to write to for the ngram id + probability values. | |
*/ | |
util::stream::Stream sort_input_; | |
}; | |
} | |
} | |