Add ConversionResult Type

This commit is contained in:
ensan-hcl
2023-08-31 17:57:33 +09:00
parent c0e661316a
commit 07914ee14c
2 changed files with 21 additions and 16 deletions

View File

@@ -0,0 +1,13 @@
//
// ConversionResult.swift
//
//
// Created by miwa on 2023/08/31.
//
public struct ConversionResult: Sendable {
///
public var mainResults: [Candidate]
///
public var firstClauseResults: [Candidate]
}

View File

@@ -366,13 +366,13 @@ import SwiftUtils
///
/// - Note:
///
private func processResult(inputData: ComposingText, result: (result: LatticeNode, nodes: [[LatticeNode]]), options: ConvertRequestOptions) -> (mainResults: [Candidate], firstClauseResults: [Candidate]) {
private func processResult(inputData: ComposingText, result: (result: LatticeNode, nodes: [[LatticeNode]]), options: ConvertRequestOptions) -> ConversionResult {
self.previousInputData = inputData
self.nodes = result.nodes
let clauseResult = result.result.getCandidateData()
if clauseResult.isEmpty {
let candidates = self.getUniqueCandidate(self.getAdditionalCandidate(inputData, options: options))
return (candidates, candidates) //
return ConversionResult(mainResults: candidates, firstClauseResults: candidates) //
}
let clauseCandidates: [Candidate] = clauseResult.map {(candidateData: CandidateData) -> Candidate in
let first = candidateData.clauses.first!
@@ -480,7 +480,7 @@ import SwiftUtils
item.withActions(self.getApporopriateActions(item))
item.parseTemplate()
}
return (result, Array(clause_candidates))
return ConversionResult(mainResults: result, firstClauseResults: Array(clause_candidates))
}
///
@@ -572,29 +572,21 @@ import SwiftUtils
/// - Parameters:
/// - inputData: InputData
/// - options:
/// - Returns:
///
public func requestCandidates(_ inputData: ComposingText, options: ConvertRequestOptions) -> (mainResults: [Candidate], firstClauseResults: [Candidate]) {
/// - Returns: `ConversionResult`
public func requestCandidates(_ inputData: ComposingText, options: ConvertRequestOptions) -> ConversionResult {
debug("requestCandidates 入力は", inputData)
//
if inputData.convertTarget.isEmpty {
return (.init(), .init())
return ConversionResult(mainResults: [], firstClauseResults: [])
}
let start1 = Date()
// DicdataStoreRequestOption
self.sendToDicdataStore(.setRequestOptions(options))
guard let result = self.convertToLattice(inputData, N_best: options.N_best) else {
return (.init(), .init())
return ConversionResult(mainResults: [], firstClauseResults: [])
}
debug("ラティス構築", -start1.timeIntervalSinceNow)
let start2 = Date()
let candidates = self.processResult(inputData: inputData, result: result, options: options)
debug("ラティス処理", -start2.timeIntervalSinceNow)
debug("全体", -start1.timeIntervalSinceNow)
return candidates
return self.processResult(inputData: inputData, result: result, options: options)
}
}