static inline void part1_probabilities(const char * const part1[], int part1_len, const char * const candidates[], int candidates_len, double results[]) { State state(model.BeginSentenceState()); State out_state; for (int i = 0; i < part1_len; ++i) { model.Score(state, vocab.Index(part1[i]), out_state); state = out_state; } for (int i = 0; i < candidates_len; ++i) { results[i] = model.Score(state, vocab.Index(candidates[i]), out_state); /* Don't update state now */ } }
double get_sentence_probability(const char * const sentence[], int len) { State state(model.BeginSentenceState()); State out_state; return std::exp(sentence_probability(state, sentence, len, out_state)); }