mirror of
https://github.com/mii443/AzooKeyKanaKanjiConverter.git
synced 2025-08-22 15:05:26 +00:00
feat: promote uppercased characters and refine document
This commit is contained in:
@ -176,12 +176,11 @@ ComposingText(
|
||||
変換候補の並び順の決定はとても難しい問題です。azooKeyではおおよそ以下のようになっています。`Converter.swift`が並び順を決めていますが、とても複雑な実装になっているため、改善したいと思っています。
|
||||
|
||||
```
|
||||
最初の5件: 完全一致または予測変換(ただし最低1つは完全一致)
|
||||
最初の5件: 完全一致または予測変換またはローマ字英語変換(ただし上位3件までに最低1つは完全一致が含まれる)
|
||||
そこから5件: 文節単位変換
|
||||
そこからn件: 付加的な変換(全部ひらがな、全部カタカナなど)
|
||||
そこから: 前方一致で長い順・高評価順に辞書データを表示
|
||||
そこから: 全部ひらがな、全部カタカナ、全部大文字などの変換と前方一致で長い順・高評価順に辞書データを表示(5番目あたりでUnicode変換、西暦和暦変換、メアド変換、装飾文字などの特殊変換を挿入する)
|
||||
```
|
||||
|
||||
## ライブ変換
|
||||
|
||||
ライブ変換はかなり単純なアイデアで実現しています。ライブ変換のない場合と同様に変換候補をリクエストし、「(予測変換ではなく)完全一致変換の中で最も順位が高いもの」をディスプレイします。
|
||||
ライブ変換はかなり単純なアイデアで実現しています。ライブ変換のない場合と同様に変換候補をリクエストし、「(予測変換ではなく)完全一致変換の中で最も順位が高いもの」をディスプレイします。
|
||||
|
@ -1,6 +1,6 @@
|
||||
//
|
||||
// Converter.swift
|
||||
// Kana2KajiProject
|
||||
// KanaKanjiConverter.swift
|
||||
// AzooKeyKanaKanjiConverter
|
||||
//
|
||||
// Created by ensan on 2020/09/03.
|
||||
// Copyright © 2020 ensan. All rights reserved.
|
||||
@ -430,9 +430,6 @@ import SwiftUtils
|
||||
// 文節のみ変換するパターン(上位5件)
|
||||
let clause_candidates = self.getUniqueCandidate(clauseCandidates, seenCandidates: seenCandidate).min(count: 5, sortedBy: {$0.value > $1.value})
|
||||
seenCandidate.formUnion(clause_candidates.map {$0.text})
|
||||
// 賢く変換するパターン(任意件数)
|
||||
let wise_candidates: [Candidate] = self.getWiseCandidate(inputData, options: options)
|
||||
seenCandidate.formUnion(wise_candidates.map {$0.text})
|
||||
|
||||
// 最初の辞書データ
|
||||
let dicCandidates: [Candidate] = result.nodes[0]
|
||||
@ -449,12 +446,18 @@ import SwiftUtils
|
||||
let additionalCandidates: [Candidate] = self.getAdditionalCandidate(inputData, options: options)
|
||||
|
||||
// 文字列の長さごとに並べ、かつその中で評価の高いものから順に並べる。
|
||||
let word_candidates: [Candidate] = self.getUniqueCandidate(dicCandidates.chained(additionalCandidates), seenCandidates: seenCandidate)
|
||||
var word_candidates: [Candidate] = self.getUniqueCandidate(dicCandidates.chained(additionalCandidates), seenCandidates: seenCandidate)
|
||||
.sorted {
|
||||
let count0 = $0.correspondingCount
|
||||
let count1 = $1.correspondingCount
|
||||
return count0 == count1 ? $0.value > $1.value : count0 > count1
|
||||
}
|
||||
seenCandidate.formUnion(word_candidates.map {$0.text})
|
||||
|
||||
// 賢く変換するパターン(任意件数)
|
||||
let wise_candidates: [Candidate] = self.getUniqueCandidate(self.getWiseCandidate(inputData, options: options), seenCandidates: seenCandidate)
|
||||
// 途中でwise_candidatesを挟む
|
||||
word_candidates.insert(contentsOf: wise_candidates, at: min(5, word_candidates.endIndex))
|
||||
|
||||
var result = Array(full_candidate)
|
||||
|
||||
@ -473,7 +476,6 @@ import SwiftUtils
|
||||
}
|
||||
|
||||
result.append(contentsOf: clause_candidates)
|
||||
result.append(contentsOf: wise_candidates)
|
||||
result.append(contentsOf: word_candidates)
|
||||
|
||||
result.mutatingForeach { item in
|
Reference in New Issue
Block a user