am e38f7918
: Merge "Get bigram probability using language model dict content."
* commit 'e38f79182d61c2b965cc3b47065c17107865df46': Get bigram probability using language model dict content.
This commit is contained in:
commit
ba8d5e6b85
1 changed files with 17 additions and 10 deletions
|
@ -127,21 +127,28 @@ int Ver4PatriciaTriePolicy::getProbabilityOfPtNode(const int *const prevWordsPtN
|
||||||
if (ptNodePos == NOT_A_DICT_POS) {
|
if (ptNodePos == NOT_A_DICT_POS) {
|
||||||
return NOT_A_PROBABILITY;
|
return NOT_A_PROBABILITY;
|
||||||
}
|
}
|
||||||
const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
|
const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
|
||||||
if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) {
|
if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) {
|
||||||
return NOT_A_PROBABILITY;
|
return NOT_A_PROBABILITY;
|
||||||
}
|
}
|
||||||
if (prevWordsPtNodePos) {
|
if (prevWordsPtNodePos) {
|
||||||
const int bigramsPosition = getBigramsPositionOfPtNode(prevWordsPtNodePos[0]);
|
// TODO: Support n-gram.
|
||||||
BinaryDictionaryBigramsIterator bigramsIt(&mBigramPolicy, bigramsPosition);
|
const PtNodeParams prevWordPtNodeParams =
|
||||||
while (bigramsIt.hasNext()) {
|
mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(prevWordsPtNodePos[0]);
|
||||||
bigramsIt.next();
|
const int prevWordTerminalId = prevWordPtNodeParams.getTerminalId();
|
||||||
if (bigramsIt.getBigramPos() == ptNodePos
|
const ProbabilityEntry probabilityEntry =
|
||||||
&& bigramsIt.getProbability() != NOT_A_PROBABILITY) {
|
mBuffers->getLanguageModelDictContent()->getNgramProbabilityEntry(
|
||||||
return getProbability(ptNodeParams.getProbability(), bigramsIt.getProbability());
|
IntArrayView::fromObject(&prevWordTerminalId),
|
||||||
}
|
ptNodeParams.getTerminalId());
|
||||||
|
if (!probabilityEntry.isValid()) {
|
||||||
|
return NOT_A_PROBABILITY;
|
||||||
|
}
|
||||||
|
if (mHeaderPolicy->hasHistoricalInfoOfWords()) {
|
||||||
|
return ForgettingCurveUtils::decodeProbability(probabilityEntry.getHistoricalInfo(),
|
||||||
|
mHeaderPolicy);
|
||||||
|
} else {
|
||||||
|
return probabilityEntry.getProbability();
|
||||||
}
|
}
|
||||||
return NOT_A_PROBABILITY;
|
|
||||||
}
|
}
|
||||||
return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY);
|
return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue