本次优化针对 AppleLanguageDetector.swift 进行了全面增强,特别针对中英文混合文本和短文本的检测准确性。
问题 1: 短英文单词误判
- 问题:单词 "apple" 被误判为土耳其语
- 解决:大幅降低土耳其语权重 (0.1 → 0.05),提升英语权重到 3.0
问题 2: 中英文混合文本识别
- 问题:混合文本如 "apple苹果" 无法正确识别为中文
- 解决:引入 20-25% 中文字符阈值强制识别为中文
.english: 3.0, // 大幅提升英语权重
.simplifiedChinese: 2.5, // 优先简体中文
.turkish: 0.05, // 显著降低土耳其语权重(原 0.1)
.catalan: 0.08, // 新增:防止与西班牙语/法语混淆- 中文检测阈值: 25% (可配置的
chineseDetectionThreshold) - 最小字符要求: 3 个有效字符才进行分析
- 多层判断逻辑:
- 25%+ 中文字符 → 优先中文
- 60%+ 英文字符且长度>=5 → 优先英文
- 15%+ 中文字符 + 可疑检测 → 保守判定为中文
新增规则 4:专门处理非中文检测但包含中文字符的情况
// 20%+ 中文字符强制判定为中文
if chineseRatio >= 0.2 {
return .simplifiedChinese
}
// 15%+ 中文字符 + 问题检测语言 + 低置信度 → 中文
if chineseRatio >= 0.15 && chineseCharCount >= 2 {
let problematicDetections: [Language] = [.turkish, .portuguese, .italian, .french, .spanish]
if problematicDetections.contains(detectedLanguage) && confidence < 0.7 {
return .simplifiedChinese
}
}| 输入文本 | 原检测结果 | 优化后结果 | 改进点 |
|---|---|---|---|
| "apple" | Turkish | English | 短英文单词识别 |
| "apple苹果" | Turkish | Simplified Chinese | 混合文本中文优先 |
| "我爱apple" | Turkish/Portuguese | Simplified Chinese | 中文字符占比检测 |
| "729" | (empty) | User Preferred/English | 数字文本回退策略 |
| "hello world" | English | English | 保持准确检测 |
以下参数可根据实际使用情况调整:
// analyzeMixedScriptText 方法中
let chineseDetectionThreshold: Double = 0.25 // 中文检测主阈值
let englishDominanceThreshold: Double = 0.6 // 英文主导阈值
let minimumCharsForAnalysis: Int = 3 // 最小分析字符数
// applyPostProcessingCorrections 方法中
chineseRatio >= 0.2 // 强制中文判定阈值
chineseRatio >= 0.15 // 保守中文判定阈值
confidence < 0.7 // 低置信度阈值- 为类添加了详细的英文文档注释,说明功能和改进点
- 为每个关键方法增加了参数说明和配置信息
- 注释中包含了具体的使用示例和改进原理
本次优化显著提升了混合文本的识别准确性,特别是中英文混合场景。通过多层检测机制和智能阈值配置,解决了常见的误判问题,同时保持了对纯语言文本的准确识别能力。