From 3b24f802c1f7694d0f3ed46579c107abcb887f45 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 18 May 2022 18:06:27 +0800 Subject: [PATCH] LMInstantiator // Reenable previous procedure of deduplicating candidates. --- Source/Modules/LangModelRelated/LMInstantiator.swift | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Source/Modules/LangModelRelated/LMInstantiator.swift b/Source/Modules/LangModelRelated/LMInstantiator.swift index 583a942f..00794148 100644 --- a/Source/Modules/LangModelRelated/LMInstantiator.swift +++ b/Source/Modules/LangModelRelated/LMInstantiator.swift @@ -270,6 +270,7 @@ extension vChewing { filter filteredPairs: Set ) -> [Megrez.Unigram] { var results: [Megrez.Unigram] = [] + var insertedPairs: Set = [] for unigram in unigrams { var pair: Megrez.KeyValuePair = unigram.keyValue @@ -284,12 +285,13 @@ extension vChewing { pair.value = replacement } } - results.append(Megrez.Unigram(keyValue: pair, score: unigram.score)) - } - // Swift 不見得非得用 Swift-Collections 才可以用 OrderedSet,還有 NSOrderedSet 可用來去重複。 - let resultsDeduplicated = Array(NSOrderedSet(array: results).array as! [Megrez.Unigram]) - return resultsDeduplicated + if !insertedPairs.contains(pair) { + results.append(Megrez.Unigram(keyValue: pair, score: unigram.score)) + insertedPairs.insert(pair) + } + } + return results } } }