LMI // Maintenance.
This commit is contained in:
parent
413115cbca
commit
c387865383
|
@ -156,8 +156,8 @@ class KeyHandler {
|
||||||
/// 不會是 nil,但那些負責接收結果的函式會對空白陣列結果做出正確的處理。
|
/// 不會是 nil,但那些負責接收結果的函式會對空白陣列結果做出正確的處理。
|
||||||
func buildAssociatePhraseArray(withKey key: String) -> [String] {
|
func buildAssociatePhraseArray(withKey key: String) -> [String] {
|
||||||
var arrResult: [String] = []
|
var arrResult: [String] = []
|
||||||
if currentLM.hasAssociatedPhrasesForKey(key) {
|
if currentLM.hasAssociatedPhrasesFor(key: key) {
|
||||||
arrResult.append(contentsOf: currentLM.associatedPhrasesForKey(key))
|
arrResult.append(contentsOf: currentLM.associatedPhrasesFor(key: key))
|
||||||
}
|
}
|
||||||
return arrResult
|
return arrResult
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ extension vChewing {
|
||||||
// 初期化的函式先保留
|
// 初期化的函式先保留
|
||||||
override init() {}
|
override init() {}
|
||||||
|
|
||||||
// 以下這些函式命名暫時保持原樣,等弒神行動徹底結束了再調整。
|
// MARK: - 工具函式
|
||||||
|
|
||||||
public var isLanguageModelLoaded: Bool { lmCore.isLoaded() }
|
public var isLanguageModelLoaded: Bool { lmCore.isLoaded() }
|
||||||
public func loadLanguageModel(path: String) {
|
public func loadLanguageModel(path: String) {
|
||||||
|
@ -185,7 +185,7 @@ extension vChewing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Core Functions (Public)
|
// MARK: - 核心函式(對外)
|
||||||
|
|
||||||
/// 威注音輸入法目前尚未具備對雙元圖的處理能力,故停用該函式。
|
/// 威注音輸入法目前尚未具備對雙元圖的處理能力,故停用該函式。
|
||||||
// public func bigramsForKeys(preceedingKey: String, key: String) -> [Megrez.Bigram] { }
|
// public func bigramsForKeys(preceedingKey: String, key: String) -> [Megrez.Bigram] { }
|
||||||
|
@ -238,8 +238,9 @@ extension vChewing {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// If the model has unigrams for the given key.
|
/// 根據給定的索引鍵來確認各個資料庫陣列內是否存在對應的資料。
|
||||||
/// @param key The key.
|
/// - Parameter key: 索引鍵。
|
||||||
|
/// - Returns: 是否在庫。
|
||||||
override open func hasUnigramsFor(key: String) -> Bool {
|
override open func hasUnigramsFor(key: String) -> Bool {
|
||||||
if key == " " { return true }
|
if key == " " { return true }
|
||||||
|
|
||||||
|
@ -250,46 +251,37 @@ extension vChewing {
|
||||||
return !unigramsFor(key: key).isEmpty
|
return !unigramsFor(key: key).isEmpty
|
||||||
}
|
}
|
||||||
|
|
||||||
public func associatedPhrasesForKey(_ key: String) -> [String] {
|
public func associatedPhrasesFor(key: String) -> [String] {
|
||||||
lmAssociates.valuesFor(key: key) ?? []
|
lmAssociates.valuesFor(key: key) ?? []
|
||||||
}
|
}
|
||||||
|
|
||||||
public func hasAssociatedPhrasesForKey(_ key: String) -> Bool {
|
public func hasAssociatedPhrasesFor(key: String) -> Bool {
|
||||||
lmAssociates.hasValuesFor(key: key)
|
lmAssociates.hasValuesFor(key: key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Core Functions (Private)
|
// MARK: - 核心函式(對內)
|
||||||
|
|
||||||
/// 給定單元圖原始結果陣列,經過語彙過濾處理+置換處理+去重複處理之後,給出單元圖結果陣列。
|
/// 給定單元圖原始結果陣列,經過語彙過濾處理+置換處理+去重複處理之後,給出單元圖結果陣列。
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - unigrams: 傳入的單元圖原始結果陣列
|
/// - unigrams: 傳入的單元圖原始結果陣列。
|
||||||
/// - filteredPairs: 傳入的要過濾掉的鍵值配對陣列
|
/// - filteredPairs: 傳入的要過濾掉的鍵值配對陣列。
|
||||||
/// - Returns: 經過語彙過濾處理+置換處理+去重複處理的單元圖結果陣列
|
/// - Returns: 經過語彙過濾處理+置換處理+去重複處理的單元圖結果陣列。
|
||||||
func filterAndTransform(
|
func filterAndTransform(
|
||||||
unigrams: [Megrez.Unigram],
|
unigrams: [Megrez.Unigram],
|
||||||
filter filteredPairs: Set<Megrez.KeyValuePair>
|
filter filteredPairs: Set<Megrez.KeyValuePair>
|
||||||
) -> [Megrez.Unigram] {
|
) -> [Megrez.Unigram] {
|
||||||
var results: [Megrez.Unigram] = []
|
var results: [Megrez.Unigram] = []
|
||||||
var insertedPairs: Set<Megrez.KeyValuePair> = []
|
var insertedPairs: Set<Megrez.KeyValuePair> = []
|
||||||
|
|
||||||
for unigram in unigrams {
|
for unigram in unigrams {
|
||||||
var pair: Megrez.KeyValuePair = unigram.keyValue
|
var pair: Megrez.KeyValuePair = unigram.keyValue
|
||||||
if filteredPairs.contains(pair) {
|
if filteredPairs.contains(pair) { continue }
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if isPhraseReplacementEnabled {
|
if isPhraseReplacementEnabled {
|
||||||
let replacement = lmReplacements.valuesFor(key: pair.value)
|
let replacement = lmReplacements.valuesFor(key: pair.value)
|
||||||
if !replacement.isEmpty {
|
if !replacement.isEmpty { pair.value = replacement }
|
||||||
IME.prtDebugIntel("\(pair.value) -> \(replacement)")
|
|
||||||
pair.value = replacement
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !insertedPairs.contains(pair) {
|
|
||||||
results.append(Megrez.Unigram(keyValue: pair, score: unigram.score))
|
|
||||||
insertedPairs.insert(pair)
|
|
||||||
}
|
}
|
||||||
|
if insertedPairs.contains(pair) { continue }
|
||||||
|
results.append(Megrez.Unigram(keyValue: pair, score: unigram.score))
|
||||||
|
insertedPairs.insert(pair)
|
||||||
}
|
}
|
||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue