refactor: make nodes private

This commit is contained in:
Miwa / Ensan
2025-07-09 21:35:04 +09:00
parent 9a1dac4a42
commit 706cfb3f94
8 changed files with 27 additions and 13 deletions

View File

@@ -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)})
// inodes
for (i, nodeArray) in lattice.nodes.enumerated() {
for (i, nodeArray) in lattice.enumerated() {
// node
for node in nodeArray {
if node.prevs.isEmpty {

View File

@@ -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)})
// inodes
for (i, nodeArray) in lattice.nodes.enumerated() {
for (i, nodeArray) in lattice.enumerated() {
// node
for node in nodeArray {
if node.prevs.isEmpty {

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
}
}

View File

@@ -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
}

View File

@@ -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,