From 4cc105b2576cf9c4cbab9436977da413b43af7c5 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 22 Jul 2022 16:20:44 +0800 Subject: [PATCH] LMAssoc. // Optimize key conversion process. --- .../SubLMs/lmAssociates.swift | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Source/Modules/LangModelRelated/SubLMs/lmAssociates.swift b/Source/Modules/LangModelRelated/SubLMs/lmAssociates.swift index a17d1faf..e69b4935 100644 --- a/Source/Modules/LangModelRelated/SubLMs/lmAssociates.swift +++ b/Source/Modules/LangModelRelated/SubLMs/lmAssociates.swift @@ -42,6 +42,15 @@ extension vChewing { !rangeMap.isEmpty } + internal func cnvNgramKeyFromPinyinToPhona(target: String) -> String { + guard target.contains("("), target.contains(","), target.contains(")") else { + return target + } + let arrTarget = target.dropLast().dropFirst().split(separator: ",") + guard arrTarget.count == 2 else { return target } + return "(\(Tekkon.cnvHanyuPinyinToPhona(target: String(arrTarget[0]))),\(arrTarget[1]))" + } + @discardableResult public mutating func open(_ path: String) -> Bool { if isLoaded() { return false @@ -60,7 +69,7 @@ extension vChewing { if !theKey.isEmpty, theKey.first != "#" { for (i, _) in neta.filter({ $0.first != "#" && !$0.isEmpty }).enumerated() { if i == 0 { continue } - rangeMap[theKey, default: []].append(($0, i)) + rangeMap[cnvNgramKeyFromPinyinToPhona(target: theKey), default: []].append(($0, i)) } } } @@ -102,8 +111,6 @@ extension vChewing { } public func valuesFor(pair: Megrez.KeyValuePaired) -> [String] { - var pairPinyin = pair - pairPinyin.key = Tekkon.cnvPhonaToHanyuPinyin(target: pairPinyin.key) var pairs: [String] = [] if let arrRangeRecords: [(Range, Int)] = rangeMap[pair.toNGramKey] { for (netaRange, index) in arrRangeRecords { @@ -112,13 +119,6 @@ extension vChewing { pairs.append(theValue) } } - if let arrRangeRecords: [(Range, Int)] = rangeMap[pairPinyin.toNGramKey] { - for (netaRange, index) in arrRangeRecords { - let neta = strData[netaRange].split(separator: " ") - let theValue: String = .init(neta[index]) - pairs.append(theValue) - } - } if let arrRangeRecords: [(Range, Int)] = rangeMap[pair.value] { for (netaRange, index) in arrRangeRecords { let neta = strData[netaRange].split(separator: " ")