Прогнозное распределение из модели kenlm ngram: как перебирать весь словарь?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Прогнозное распределение из модели kenlm ngram: как перебирать весь словарь?

Сообщение Гость »


Я пытаюсь получить прогнозируемое распределение возможных следующих слов в предложении с учетом предыдущих слов из модели ngram через kenlm. Я придумал, как сделать что-то близкое к этому, адаптировав Query() из ngram_query.hh, как показано ниже, но это требует от меня иметь отдельный источник словаря, который я хочу исследовать. Что я могу и что хочу сделать, указано в комментариях в списке.

Меня останавливает то, что я не могу найти, как выполнить (как должно быть) две простейшие операции: запросить количество известных слов в словаре (помечено ниже NUMBER_OF_WORDS_KNOWN()) и выполнить обратный поиск строк слов с помощью WordIndex (отмечен WORD_STRING() ниже). Я думаю, что любая другая форма итерации тоже подойдет (не обязательно через целое число ++), если она является исчерпывающей и я получаю доступ к строкам.

Я рылся в исходниках C++, но они очень быстро становятся запутанными и недокументированными. В vocab.hh я нашел реализацию SortedVocabulary::Index(), которая, судя по всему, работает с хешем — это, возможно, предполагает, что обратный поиск невозможен, хотя Я не могу быть уверен.

Возможно ли это? Если да, то как?
шаблон недействительный прогноз( константная модель и модель, const std::vector и previousWords, const std::vector & ProbeWords // Я хочу избавиться от необходимости использования этого аргумента ) { typename Model::State state, out; // Обработка предыдущего контекста for(const auto &eachPrecedingWord: previousWords) { lm::WordIndex wordID = model.GetVocabulary().Index(eachPrecedingWord); model.FullScore(состояние, wordID, выход); состояние = выход; // обновляем состояние } //
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»