Merge pull request #199 from azooKey/fix/clarify_incremental_update_case

fix: Zenzaiで学習が有効な場合に、低頻度の漢字を用いたありえない変換候補が提案される問題を修正
This commit is contained in:
Miwa
2025-06-04 01:35:57 +09:00
committed by GitHub

View File

@ -182,7 +182,7 @@ extension Kana2Kanji {
candidateIndex: Int,
candidates: [Candidate],
reviewResult: consuming ZenzContext.CandidateEvaluationResult,
constraint: inout PrefixConstraint
constraint: inout PrefixConstraint,
) -> NextAction {
switch reviewResult {
case .error:
@ -200,13 +200,18 @@ extension Kana2Kanji {
return .return(constraint: PrefixConstraint([]), alternativeConstraints: [], satisfied: false)
}
//
let isIncrementalUpdate = prefixConstraint.hasPrefix(constraint.constraint)
constraint = PrefixConstraint(prefixConstraint)
debug("update constraint:", constraint)
// 使
for (i, candidate) in candidates.indexed() where i != candidateIndex {
if candidate.text.utf8.hasPrefix(prefixConstraint) && self.heuristicRetryValidation(candidate.text) {
debug("found \(candidate.text) as another retry")
return .retry(candidateIndex: i)
if isIncrementalUpdate {
// 使
// prefix constraintcandidates
// prefix constraint!isIncrementalUpdate
for (i, candidate) in candidates.indexed() where i != candidateIndex {
if candidate.text.utf8.hasPrefix(prefixConstraint) && self.heuristicRetryValidation(candidate.text) {
debug("found \(candidate.text) as another retry")
return .retry(candidateIndex: i)
}
}
}
return .continue
@ -219,12 +224,16 @@ extension Kana2Kanji {
}
//
debug("update whole constraint:", wholeConstraint)
let isIncrementalUpdate = wholeConstraint.utf8.hasPrefix(constraint.constraint)
constraint = PrefixConstraint(Array(wholeConstraint.utf8), hasEOS: true)
// 使
for (i, candidate) in candidates.indexed() where i != candidateIndex {
if candidate.text == wholeConstraint && self.heuristicRetryValidation(candidate.text) {
debug("found \(candidate.text) as another retry")
return .retry(candidateIndex: i)
if isIncrementalUpdate {
// 使
// prefix constraint!isIncrementalUpdate
for (i, candidate) in candidates.indexed() where i != candidateIndex {
if candidate.text == wholeConstraint && self.heuristicRetryValidation(candidate.text) {
debug("found \(candidate.text) as another retry")
return .retry(candidateIndex: i)
}
}
}
return .continue