mirror of
https://github.com/mii443/AzooKeyKanaKanjiConverter.git
synced 2025-12-03 02:58:27 +00:00
refactor: make nodes private
This commit is contained in:
@@ -32,7 +32,7 @@ extension Kana2Kanji {
|
||||
let result: LatticeNode = LatticeNode.EOSNode
|
||||
let lattice: Lattice = Lattice(nodes: (.zero ..< count).map {dicdataStore.getLOUDSDataInRange(inputData: inputData, from: $0, needTypoCorrection: needTypoCorrection)})
|
||||
// 「i文字目から始まるnodes」に対して
|
||||
for (i, nodeArray) in lattice.nodes.enumerated() {
|
||||
for (i, nodeArray) in lattice.enumerated() {
|
||||
// それぞれのnodeに対して
|
||||
for node in nodeArray {
|
||||
if node.prevs.isEmpty {
|
||||
|
||||
@@ -24,7 +24,7 @@ extension Kana2Kanji {
|
||||
let result: LatticeNode = LatticeNode.EOSNode
|
||||
let lattice: Lattice = Lattice(nodes: (.zero ..< count).map {dicdataStore.getLOUDSDataInRange(inputData: inputData, from: $0, needTypoCorrection: false)})
|
||||
// 「i文字目から始まるnodes」に対して
|
||||
for (i, nodeArray) in lattice.nodes.enumerated() {
|
||||
for (i, nodeArray) in lattice.enumerated() {
|
||||
// それぞれのnodeに対して
|
||||
for node in nodeArray {
|
||||
if node.prevs.isEmpty {
|
||||
|
||||
@@ -20,8 +20,8 @@ extension Kana2Kanji {
|
||||
let count = inputData.input.count
|
||||
// (1)
|
||||
let start = RegisteredNode.fromLastCandidate(completedData)
|
||||
let lattice = Lattice(nodes: previousResult.lattice.nodes.suffix(count))
|
||||
for (i, nodeArray) in lattice.nodes.enumerated() {
|
||||
let lattice = previousResult.lattice.suffix(count)
|
||||
for (i, nodeArray) in lattice.enumerated() {
|
||||
if i == .zero {
|
||||
for node in nodeArray {
|
||||
node.prevs = [start]
|
||||
@@ -39,7 +39,7 @@ extension Kana2Kanji {
|
||||
// (2)
|
||||
let result = LatticeNode.EOSNode
|
||||
|
||||
for (i, nodeArray) in lattice.nodes.enumerated() {
|
||||
for (i, nodeArray) in lattice.enumerated() {
|
||||
for node in nodeArray {
|
||||
if node.prevs.isEmpty {
|
||||
continue
|
||||
|
||||
@@ -35,7 +35,7 @@ extension Kana2Kanji {
|
||||
|
||||
let terminalNodes: Lattice
|
||||
if counts.added == 0 {
|
||||
terminalNodes = Lattice(nodes: lattice.nodes.map {
|
||||
terminalNodes = Lattice(nodes: lattice.map {
|
||||
$0.filter {
|
||||
$0.inputRange.endIndex == count
|
||||
}
|
||||
@@ -47,7 +47,7 @@ extension Kana2Kanji {
|
||||
})
|
||||
|
||||
// (3)
|
||||
for nodeArray in lattice.nodes {
|
||||
for nodeArray in lattice {
|
||||
for node in nodeArray {
|
||||
if node.prevs.isEmpty {
|
||||
continue
|
||||
@@ -68,7 +68,7 @@ extension Kana2Kanji {
|
||||
// terminalNodesの各要素を結果ノードに接続する
|
||||
let result = LatticeNode.EOSNode
|
||||
|
||||
for (i, nodes) in terminalNodes.nodes.enumerated() {
|
||||
for (i, nodes) in terminalNodes.enumerated() {
|
||||
for node in nodes {
|
||||
if node.prevs.isEmpty {
|
||||
continue
|
||||
|
||||
@@ -30,7 +30,7 @@ extension Kana2Kanji {
|
||||
// (1)
|
||||
let result = LatticeNode.EOSNode
|
||||
|
||||
for nodeArray in previousResult.lattice.nodes {
|
||||
for nodeArray in previousResult.lattice {
|
||||
for node in nodeArray where node.inputRange.endIndex == count {
|
||||
if node.prevs.isEmpty {
|
||||
continue
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
struct Lattice {
|
||||
struct Lattice: Sequence {
|
||||
typealias Element = [LatticeNode]
|
||||
|
||||
init(nodes: [[LatticeNode]] = []) {
|
||||
self.nodes = nodes
|
||||
}
|
||||
|
||||
private(set) var nodes: [[LatticeNode]]
|
||||
private var nodes: [[LatticeNode]]
|
||||
|
||||
func prefix(_ k: Int) -> Lattice {
|
||||
var lattice = Lattice(nodes: self.nodes.prefix(k).map {(nodes: [LatticeNode]) in
|
||||
@@ -15,6 +17,10 @@ struct Lattice {
|
||||
return lattice
|
||||
}
|
||||
|
||||
func suffix(_ count: Int) -> Lattice {
|
||||
Lattice(nodes: self.nodes.suffix(count))
|
||||
}
|
||||
|
||||
mutating func merge(_ lattice: Lattice) {
|
||||
for (index, nodeArray) in lattice.nodes.enumerated() where index < self.nodes.endIndex {
|
||||
self.nodes[index].append(contentsOf: nodeArray)
|
||||
@@ -31,4 +37,12 @@ struct Lattice {
|
||||
self.nodes[i]
|
||||
}
|
||||
}
|
||||
|
||||
func makeIterator() -> some IteratorProtocol<Element> {
|
||||
self.nodes.makeIterator()
|
||||
}
|
||||
|
||||
var isEmpty: Bool {
|
||||
self.nodes.isEmpty
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ extension Kana2Kanji {
|
||||
// 制約がついている場合は高速になるので、N=3としている
|
||||
self.kana2lattice_all_with_prefix_constraint(inputData, N_best: 3, constraint: constraint)
|
||||
}
|
||||
if lattice.nodes.isEmpty {
|
||||
if lattice.isEmpty {
|
||||
// 初回のみ
|
||||
lattice = draftResult.lattice
|
||||
}
|
||||
|
||||
@@ -538,7 +538,7 @@ import EfficientNGram
|
||||
seenCandidate.formUnion(clause_candidates.map {$0.text})
|
||||
|
||||
// 最初の辞書データ
|
||||
let dicCandidates: [Candidate] = result.lattice.nodes[0]
|
||||
let dicCandidates: [Candidate] = result.lattice[inputIndex: 0]
|
||||
.map {
|
||||
Candidate(
|
||||
text: $0.data.word,
|
||||
|
||||
Reference in New Issue
Block a user