diff --git a/Source/Modules/LanguageParsers/Megrez/1_Compositor.swift b/Source/Modules/LanguageParsers/Megrez/1_Compositor.swift index 3ba9a524..9a1cb525 100644 --- a/Source/Modules/LanguageParsers/Megrez/1_Compositor.swift +++ b/Source/Modules/LanguageParsers/Megrez/1_Compositor.swift @@ -37,7 +37,7 @@ extension Megrez { /// 該組字器所使用的語言模型。 private var mutLM: LanguageModel - /// 公開該組字器內可以允許的最大詞長。 + /// 公開:該組字器內可以允許的最大詞長。 public var maxBuildSpanLength: Int { mutGrid.maxBuildSpanLength } /// 公開:多字讀音鍵當中用以分割漢字讀音的記號,預設為空。 public var joinSeparator: String = "" @@ -48,7 +48,7 @@ extension Megrez { } /// 公開:該組字器是否為空。 - public var isEmpty: Bool { grid.isEmpty } + public var isEmpty: Bool { mutGrid.isEmpty } /// 公開:該組字器的軌格(唯讀)。 public var grid: Grid { mutGrid } @@ -112,7 +112,7 @@ extension Megrez { return true } - /// 移除該組字器的第一個讀音單元。 + /// 移除該組字器最先被輸入的第 X 個讀音單元。 /// /// 用於輸入法組字區長度上限處理: /// 將該位置要溢出的敲字內容遞交之後、再執行這個函式。 diff --git a/Source/Modules/LanguageParsers/Megrez/2_Grid.swift b/Source/Modules/LanguageParsers/Megrez/2_Grid.swift index 8b1b82b8..cddc6b71 100644 --- a/Source/Modules/LanguageParsers/Megrez/2_Grid.swift +++ b/Source/Modules/LanguageParsers/Megrez/2_Grid.swift @@ -32,15 +32,16 @@ extension Megrez { /// 該幅位內可以允許的最大詞長。 private var mutMaxBuildSpanLength = 10 - /// 公開:該幅位內可以允許的最大詞長。 + /// 公開:該軌格內可以允許的最大幅位長度。 public var maxBuildSpanLength: Int { mutMaxBuildSpanLength } - /// 軌格的寬度,也就是其內的幅位陣列當中的幅位數量。 - var width: Int { mutSpans.count } + /// 公開:軌格的寬度,也就是其內的幅位陣列當中的幅位數量。 + public var width: Int { mutSpans.count } - /// 軌格是否為空。 - var isEmpty: Bool { mutSpans.isEmpty } + /// 公開:軌格是否為空。 + public var isEmpty: Bool { mutSpans.isEmpty } + /// 初期化轨格。 public init(spanLength: Int = 10) { mutMaxBuildSpanLength = spanLength mutSpans = [Megrez.Span]() @@ -193,6 +194,8 @@ extension Megrez { } /// 將給定位置的節點的候選字詞改為與給定的字串一致的候選字詞。 + /// + /// 該函式可以僅用作過程函式。 /// - Parameters: /// - location: 位置。 /// - value: 給定字串。 @@ -245,6 +248,7 @@ extension Megrez { // MARK: - DumpDOT-related functions. extension Megrez.Grid { + /// 生成用以交給 GraphViz 診斷的資料檔案內容,純文字。 public var dumpDOT: String { var strOutput = "digraph {\ngraph [ rankdir=LR ];\nBOS;\n" for (p, span) in mutSpans.enumerated() { diff --git a/Source/Modules/LanguageParsers/Megrez/3_Span.swift b/Source/Modules/LanguageParsers/Megrez/3_Span.swift index 9d000575..9839437b 100644 --- a/Source/Modules/LanguageParsers/Megrez/3_Span.swift +++ b/Source/Modules/LanguageParsers/Megrez/3_Span.swift @@ -32,7 +32,7 @@ extension Megrez { private var mutMaximumLength: Int = 0 /// 公開:最長幅距(唯讀)。 - var maximumLength: Int { + public var maximumLength: Int { mutMaximumLength } diff --git a/Source/Modules/LanguageParsers/Megrez/4_Node.swift b/Source/Modules/LanguageParsers/Megrez/4_Node.swift index 4f86ad46..db978782 100644 --- a/Source/Modules/LanguageParsers/Megrez/4_Node.swift +++ b/Source/Modules/LanguageParsers/Megrez/4_Node.swift @@ -26,8 +26,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. extension Megrez { /// 節點。 public class Node { - /// 當前節點對應的語言模型。 - private let mutLM: LanguageModel = .init() /// 鍵。 private var mutKey: String = "" /// 當前節點的當前被選中的候選字詞「在該節點內的」目前的權重。 @@ -54,21 +52,21 @@ extension Megrez { } /// 公開:候選字詞陣列(唯讀),以鍵值陣列的形式存在。 - var candidates: [KeyValuePair] { mutCandidates } + public var candidates: [KeyValuePair] { mutCandidates } /// 公開:用來登記「當前選中的單元圖」的索引值的變數(唯讀)。 - var isCandidateFixed: Bool { mutCandidateFixed } + public var isCandidateFixed: Bool { mutCandidateFixed } /// 公開:鍵(唯讀)。 - var key: String { mutKey } + public var key: String { mutKey } /// 公開:當前節點的當前被選中的候選字詞「在該節點內的」目前的權重(唯讀)。 - var score: Double { mutScore } + public var score: Double { mutScore } /// 公開:當前被選中的候選字詞的鍵值配對。 - var currentKeyValue: KeyValuePair { + public var currentKeyValue: KeyValuePair { mutSelectedUnigramIndex >= mutUnigrams.count ? KeyValuePair() : mutCandidates[mutSelectedUnigramIndex] } /// 公開:給出當前單元圖陣列內最高的權重數值。 - var highestUnigramScore: Double { mutUnigrams.isEmpty ? 0.0 : mutUnigrams[0].score } + public var highestUnigramScore: Double { mutUnigrams.isEmpty ? 0.0 : mutUnigrams[0].score } /// 初期化一個節點。 /// - Parameters: diff --git a/Source/Modules/LanguageParsers/Megrez/5_LanguageModel.swift b/Source/Modules/LanguageParsers/Megrez/5_LanguageModel.swift index d585aba7..4636ded3 100644 --- a/Source/Modules/LanguageParsers/Megrez/5_LanguageModel.swift +++ b/Source/Modules/LanguageParsers/Megrez/5_LanguageModel.swift @@ -30,17 +30,17 @@ extension Megrez { // 這裡寫了一點假內容,不然有些 Swift 格式化工具會破壞掉函式的參數設計。 - /// 給定鍵,讓語言模型找給一筆單元圖。 + /// 給定鍵,讓語言模型找給一組單元圖陣列。 open func unigramsFor(key: String) -> [Megrez.Unigram] { key.isEmpty ? [Megrez.Unigram]() : [Megrez.Unigram]() } - /// 給定當前鍵與前述鍵,讓語言模型找給一筆雙元圖。 + /// 給定當前鍵與前述鍵,讓語言模型找給一組雙元圖陣列。 open func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] { precedingKey == key ? [Megrez.Bigram]() : [Megrez.Bigram]() } - /// 給定鍵, + /// 給定鍵,確認是否有單元圖記錄在庫。 open func hasUnigramsFor(key: String) -> Bool { key.count != 0 } diff --git a/Source/Modules/LanguageParsers/Megrez/6_Unigram.swift b/Source/Modules/LanguageParsers/Megrez/6_Unigram.swift index bced45ad..ba47b85d 100644 --- a/Source/Modules/LanguageParsers/Megrez/6_Unigram.swift +++ b/Source/Modules/LanguageParsers/Megrez/6_Unigram.swift @@ -49,11 +49,6 @@ extension Megrez { hasher.combine(score) } - // 這個函式不再需要了。 - public static func compareScore(a: Unigram, b: Unigram) -> Bool { - a.score > b.score - } - public static func == (lhs: Unigram, rhs: Unigram) -> Bool { lhs.keyValue == rhs.keyValue && lhs.score == rhs.score } diff --git a/Source/Modules/LanguageParsers/Megrez/7_KeyValuePair.swift b/Source/Modules/LanguageParsers/Megrez/7_KeyValuePair.swift index 851ab3df..d7ffce8e 100644 --- a/Source/Modules/LanguageParsers/Megrez/7_KeyValuePair.swift +++ b/Source/Modules/LanguageParsers/Megrez/7_KeyValuePair.swift @@ -35,7 +35,7 @@ extension Megrez { "(" + key + "," + value + ")" } - /// 初期化一組鍵值配對 + /// 初期化一組鍵值配對。 /// - Parameters: /// - key: 鍵。一般情況下用來放置讀音等可以用來作為索引的內容。 /// - value: 資料值。