예제 #1
0
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 */
    }
}
예제 #2
0
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));
}