subParts.forEach(function (subPart) { subPart = helper.cleanExtra(subPart); subPart = ngramUtil.tripleNSplit(subPart); // Skip this gram if it's actually empty. if (subPart[ngramUtil.UNIGRAM].length == 0) return; else { let desiredIsTrigram = self.ngramMode == ngramUtil.TRIGRAM, trigramIsEmpty = subPart[ngramUtil.TRIGRAM].length == 0, bigramIsEmpty = subPart[ngramUtil.BIGRAM].length == 0; if (desiredIsTrigram && !trigramIsEmpty) { subPart = subPart[ngramUtil.TRIGRAM]; } else if ((desiredIsTrigram || !desiredIsTrigram) && !bigramIsEmpty) { subPart = subPart[ngramUtil.BIGRAM]; } else { subPart = subPart[ngramUtil.UNIGRAM]; } } suggestions = helper.createNgramCombination( [suggestions, self.doCorrect(subPart)], 'plus', 'join', suggestionLimit ); // Compute sentence prefix's probability. for (let index in suggestions) { suggestions[index] = suggestions[index] + self.appendExtraProbability(index); } });
subParts.forEach(function (subPart) { subPart = helper.cleanExtra(subPart); subPart = ngramUtil.uniSplit(subPart); suggestions = helper.createNgramCombination( [suggestions, self.doCorrect(subPart)], 'plus', 'join' ); });