Rebrand names of Language Models
Revert "Rebrand names of Language Models" This reverts commit 1a2436ae5a6b669840686e84871328d3ef39da4d. Rebrand names of Language Models
This commit is contained in:
parent
317dcc3848
commit
b04d4e3447
|
@ -117,13 +117,13 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// shared language model object that stores our phrase-term probability database
|
// shared language model object that stores our phrase-term probability database
|
||||||
FastLM gLanguageModel;
|
FastLM gLanguageModelCHT;
|
||||||
FastLM gLanguageModelSimpBopomofo;
|
FastLM gLanguageModelCHS;
|
||||||
|
|
||||||
static const int kUserOverrideModelCapacity = 500;
|
static const int kUserOverrideModelCapacity = 500;
|
||||||
static const double kObservedOverrideHalflife = 5400.0; // 1.5 hr.
|
static const double kObservedOverrideHalflife = 5400.0; // 1.5 hr.
|
||||||
vChewing::UserOverrideModel gUserOverrideModel(kUserOverrideModelCapacity, kObservedOverrideHalflife);
|
vChewing::UserOverrideModel gUserOverrideModelCHT(kUserOverrideModelCapacity, kObservedOverrideHalflife);
|
||||||
vChewing::UserOverrideModel gUserOverrideModelSimpBopomofo(kUserOverrideModelCapacity, kObservedOverrideHalflife);
|
vChewing::UserOverrideModel gUserOverrideModelCHS(kUserOverrideModelCapacity, kObservedOverrideHalflife);
|
||||||
|
|
||||||
// https://clang-analyzer.llvm.org/faq.html
|
// https://clang-analyzer.llvm.org/faq.html
|
||||||
__attribute__((annotate("returns_localized_nsstring")))
|
__attribute__((annotate("returns_localized_nsstring")))
|
||||||
|
@ -159,14 +159,14 @@ public:
|
||||||
static const double kEpsilon = 0.000001;
|
static const double kEpsilon = 0.000001;
|
||||||
|
|
||||||
static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon) {
|
static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon) {
|
||||||
double highestScore = 0.0;
|
double highestScore = 0.0;
|
||||||
for (auto ni = nodes.begin(), ne = nodes.end(); ni != ne; ++ni) {
|
for (auto ni = nodes.begin(), ne = nodes.end(); ni != ne; ++ni) {
|
||||||
double score = ni->node->highestUnigramScore();
|
double score = ni->node->highestUnigramScore();
|
||||||
if (score > highestScore) {
|
if (score > highestScore) {
|
||||||
highestScore = score;
|
highestScore = score;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return highestScore + epsilon;
|
return highestScore + epsilon;
|
||||||
}
|
}
|
||||||
|
|
||||||
@implementation vChewingInputMethodController
|
@implementation vChewingInputMethodController
|
||||||
|
@ -199,9 +199,9 @@ static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon)
|
||||||
_bpmfReadingBuffer = new BopomofoReadingBuffer(BopomofoKeyboardLayout::StandardLayout());
|
_bpmfReadingBuffer = new BopomofoReadingBuffer(BopomofoKeyboardLayout::StandardLayout());
|
||||||
|
|
||||||
// create the lattice builder
|
// create the lattice builder
|
||||||
_languageModel = &gLanguageModel;
|
_languageModel = &gLanguageModelCHT;
|
||||||
_builder = new BlockReadingBuilder(_languageModel);
|
_builder = new BlockReadingBuilder(_languageModel);
|
||||||
_uom = &gUserOverrideModel;
|
_uom = &gUserOverrideModelCHT;
|
||||||
|
|
||||||
// each Mandarin syllable is separated by a hyphen
|
// each Mandarin syllable is separated by a hyphen
|
||||||
_builder->setJoinSeparator("-");
|
_builder->setJoinSeparator("-");
|
||||||
|
@ -337,13 +337,13 @@ static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon)
|
||||||
|
|
||||||
if ([value isKindOfClass:[NSString class]] && [value isEqual:kSimpBopomofoModeIdentifier]) {
|
if ([value isKindOfClass:[NSString class]] && [value isEqual:kSimpBopomofoModeIdentifier]) {
|
||||||
newInputMode = kSimpBopomofoModeIdentifier;
|
newInputMode = kSimpBopomofoModeIdentifier;
|
||||||
newLanguageModel = &gLanguageModelSimpBopomofo;
|
newLanguageModel = &gLanguageModelCHS;
|
||||||
newUom = &gUserOverrideModelSimpBopomofo;
|
newUom = &gUserOverrideModelCHS;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
newInputMode = kBopomofoModeIdentifier;
|
newInputMode = kBopomofoModeIdentifier;
|
||||||
newLanguageModel = &gLanguageModel;
|
newLanguageModel = &gLanguageModelCHT;
|
||||||
newUom = &gUserOverrideModel;
|
newUom = &gUserOverrideModelCHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only apply the changes if the value is changed
|
// Only apply the changes if the value is changed
|
||||||
|
@ -692,15 +692,15 @@ static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon)
|
||||||
// then walk the lattice
|
// then walk the lattice
|
||||||
[self popOverflowComposingTextAndWalk:client];
|
[self popOverflowComposingTextAndWalk:client];
|
||||||
|
|
||||||
// get user override model suggestion
|
// get user override model suggestion
|
||||||
string overrideValue =
|
string overrideValue =
|
||||||
_uom->suggest(_walkedNodes, _builder->cursorIndex(), [[NSDate date] timeIntervalSince1970]);
|
_uom->suggest(_walkedNodes, _builder->cursorIndex(), [[NSDate date] timeIntervalSince1970]);
|
||||||
if (!overrideValue.empty()) {
|
if (!overrideValue.empty()) {
|
||||||
size_t cursorIndex = [self actualCandidateCursorIndex];
|
size_t cursorIndex = [self actualCandidateCursorIndex];
|
||||||
vector<NodeAnchor> nodes = _builder->grid().nodesCrossingOrEndingAt(cursorIndex);
|
vector<NodeAnchor> nodes = _builder->grid().nodesCrossingOrEndingAt(cursorIndex);
|
||||||
double highestScore = FindHighestScore(nodes, kEpsilon);
|
double highestScore = FindHighestScore(nodes, kEpsilon);
|
||||||
_builder->grid().overrideNodeScoreForSelectedCandidate(cursorIndex, overrideValue, highestScore);
|
_builder->grid().overrideNodeScoreForSelectedCandidate(cursorIndex, overrideValue, highestScore);
|
||||||
}
|
}
|
||||||
|
|
||||||
// then update the text
|
// then update the text
|
||||||
_bpmfReadingBuffer->clear();
|
_bpmfReadingBuffer->clear();
|
||||||
|
@ -734,40 +734,40 @@ static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Esc
|
// Esc
|
||||||
if (charCode == 27) {
|
if (charCode == 27) {
|
||||||
BOOL escToClearInputBufferEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:kEscToCleanInputBufferKey];
|
BOOL escToClearInputBufferEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:kEscToCleanInputBufferKey];
|
||||||
|
|
||||||
if (escToClearInputBufferEnabled) {
|
if (escToClearInputBufferEnabled) {
|
||||||
// if the optioon is enabled, we clear everythiong including the composing
|
// if the optioon is enabled, we clear everythiong including the composing
|
||||||
// buffer, walked nodes and the reading.
|
// buffer, walked nodes and the reading.
|
||||||
if (![_composingBuffer length]) {
|
if (![_composingBuffer length]) {
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
_bpmfReadingBuffer->clear();
|
_bpmfReadingBuffer->clear();
|
||||||
_builder->clear();
|
_builder->clear();
|
||||||
_walkedNodes.clear();
|
_walkedNodes.clear();
|
||||||
[_composingBuffer setString:@""];
|
[_composingBuffer setString:@""];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// if reading is not empty, we cancel the reading; Apple's built-in
|
// if reading is not empty, we cancel the reading; Apple's built-in
|
||||||
// Zhuyin (and the erstwhile Hanin) has a default option that Esc
|
// Zhuyin (and the erstwhile Hanin) has a default option that Esc
|
||||||
// "cancels" the current composed character and revert it to
|
// "cancels" the current composed character and revert it to
|
||||||
// Bopomofo reading, in odds with the expectation of users from
|
// Bopomofo reading, in odds with the expectation of users from
|
||||||
// other platforms
|
// other platforms
|
||||||
|
|
||||||
if (_bpmfReadingBuffer->isEmpty()) {
|
if (_bpmfReadingBuffer->isEmpty()) {
|
||||||
// no nee to beep since the event is deliberately triggered by user
|
// no nee to beep since the event is deliberately triggered by user
|
||||||
|
|
||||||
if (![_composingBuffer length]) {
|
if (![_composingBuffer length]) {
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_bpmfReadingBuffer->clear();
|
_bpmfReadingBuffer->clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[self updateClientComposingBuffer:client];
|
[self updateClientComposingBuffer:client];
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1367,7 +1367,7 @@ static double FindHighestScore(const vector<NodeAnchor>& nodes, double epsilon)
|
||||||
size_t cursorIndex = [self actualCandidateCursorIndex];
|
size_t cursorIndex = [self actualCandidateCursorIndex];
|
||||||
_builder->grid().fixNodeSelectedCandidate(cursorIndex, selectedValue);
|
_builder->grid().fixNodeSelectedCandidate(cursorIndex, selectedValue);
|
||||||
|
|
||||||
_uom->observe(_walkedNodes, cursorIndex, selectedValue, [[NSDate date] timeIntervalSince1970]);
|
_uom->observe(_walkedNodes, cursorIndex, selectedValue, [[NSDate date] timeIntervalSince1970]);
|
||||||
|
|
||||||
[_candidates removeAllObjects];
|
[_candidates removeAllObjects];
|
||||||
|
|
||||||
|
@ -1407,6 +1407,6 @@ static void LTLoadLanguageModelFile(NSString *filenameWithoutExtension, FastLM &
|
||||||
|
|
||||||
void LTLoadLanguageModel()
|
void LTLoadLanguageModel()
|
||||||
{
|
{
|
||||||
LTLoadLanguageModelFile(@"data", gLanguageModel);
|
LTLoadLanguageModelFile(@"data", gLanguageModelCHT);
|
||||||
LTLoadLanguageModelFile(@"data-chs", gLanguageModelSimpBopomofo);
|
LTLoadLanguageModelFile(@"data-chs", gLanguageModelCHS);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue