Use LanguageModelDictContent in iterateNgramEntries().

Bug: 14425059
Change-Id: I8a5028657ea5a4eeee8ef40db52a80f09b878972
main
Keisuke Kuroyanagi 2014-08-25 20:29:58 +09:00
parent 07b3b41c25
commit 1c14effab5
1 changed files with 15 additions and 5 deletions

View File

@ -158,11 +158,21 @@ void Ver4PatriciaTriePolicy::iterateNgramEntries(const int *const prevWordsPtNod
if (!prevWordsPtNodePos) { if (!prevWordsPtNodePos) {
return; return;
} }
const int bigramsPosition = getBigramsPositionOfPtNode(prevWordsPtNodePos[0]); // TODO: Support n-gram.
BinaryDictionaryBigramsIterator bigramsIt(&mBigramPolicy, bigramsPosition); const PtNodeParams ptNodeParams =
while (bigramsIt.hasNext()) { mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(prevWordsPtNodePos[0]);
bigramsIt.next(); const int prevWordId = ptNodeParams.getTerminalId();
listener->onVisitEntry(bigramsIt.getProbability(), bigramsIt.getBigramPos()); const WordIdArrayView prevWordIds = WordIdArrayView::fromObject(&prevWordId);
const auto languageModelDictContent = mBuffers->getLanguageModelDictContent();
for (const auto entry : languageModelDictContent->getProbabilityEntries(prevWordIds)) {
const ProbabilityEntry &probabilityEntry = entry.getProbabilityEntry();
const int probability = probabilityEntry.hasHistoricalInfo() ?
ForgettingCurveUtils::decodeProbability(
probabilityEntry.getHistoricalInfo(), mHeaderPolicy) :
probabilityEntry.getProbability();
const int ptNodePos = mBuffers->getTerminalPositionLookupTable()->getTerminalPtNodePosition(
entry.getWordId());
listener->onVisitEntry(probability, ptNodePos);
} }
} }