ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

how to看懂置信度?whatlang4cj语言检测置信度计算公式完整解析:从距离评分到双曲线函数

how to看懂置信度?whatlang4cj语言检测置信度计算公式完整解析:从距离评分到双曲线函数 how to看懂置信度whatlang4cj语言检测置信度计算公式完整解析从距离评分到双曲线函数【免费下载链接】whatlang4cj一个快捷高效的自然语言检测库项目地址: https://gitcode.com/Cangjie-SIG/whatlang4cj**whatlang4cj 是一个快捷高效的自然语言检测库**它能识别 81 种语言的文本并输出一个 0~1 的置信度confidence分数。这个分数并不是拍脑袋给出的而是由三元组距离评分与双曲线函数两套公式共同计算而来。本文带你从零读懂这套置信度计算的完整链路 。一、置信度从哪里来距离评分是如何产生的 whatlang4cj 的检测结果是一个三元组语言 文字体系 置信度封装在Info类中见 info.cj。在拿到置信度之前库会先完成两步评分文字体系判定detectScript先判断文本用的是哪种书写系统拉丁、西里尔、汉字等。像汉字、韩文、泰文这类一文字体系一语言的情况直接返回置信度1.0无需继续计算见 detect.cj。三元组距离评分对拉丁、西里尔等多语言共享的文字体系库会把文本切成三元组连续 3 个字符标点、数字、符号统一替换为空格见 trigrams.cj 中的count函数统计每个三元组的出现次数并排名得到频次位置表。对每种候选语言calculateDistance逐一比对语言档案中的高频三元组文本中出现过距离 |文本中该三元组的频次排名 − 档案中的位次|文本中未出现距离取最大值maxTrigramDistance 300见 constants.cj。所有三元组的距离累加就是该语言与文本的总距离距离越小说明文本越像这种语言。总距离的上限为maxTotalDistance 90000同样定义在 constants.cj。二、置信度计算公式完整解析三种情形 双曲线函数 评分之后detectLangInProfiles按候选语言数量分三种情形处理见 detect.cj情形候选语言数置信度结果全部被黑白名单过滤0InvalidLang置信度0.0只剩 1 种候选1直接返回1.0多语言竞争≥2进入calculateConfidence公式计算核心计算函数是 calculateConfidence步骤如下第 1 步距离转评分并排序。总距离取倒数式评分score 90000 − 总距离距离越小评分越高然后按距离升序排列取第一名score1和第二名score2。第 2 步两个边界保护。若score1 0文本与任何语言都不匹配返回InvalidLang与置信度0.0若score2 0第二名完全无法匹配防止后续除零改用简化公式confidence min(score1 / 500, 1.0)其中500.0是源码注释中说明的基于实验和常识的经验值——它让恰好撞上一个语言的部分三元组这种巧合只能得到较低的置信度。第 3 步双曲线函数核心公式。先算领先比率rate (score1 − score2) / score2rate越大说明第一名领先第二名越多、越有把握。再根据文本中不同三元组的数量N计算门槛confidentRate 12.0 / N 0.05最后rate confidentRate → confidence 1.0 rate ≤ confidentRate → confidence rate / confidentRate这就是源码注释所说的双曲线函数凡落在函数之上的结果置信度记为满分落在之下的按比例折算。12.0与0.05同样是实验得到的参数见 detect.cj。三、读懂公式背后的两个设计意图 ① 文本越短拿满分越难。confidentRate随N不同三元组数量增大而下降文本越长、三元组越丰富12.0/N越趋近 0门槛只剩0.05置信度更容易达到1.0短文本则门槛偏高这正是 README 中过短文本检测效果不佳约束的算法根源。② 用领先幅度而非绝对分数衡量把握。rate是相对量——第一名不仅要匹配得好还要明显甩开第二名置信度才会高。这也解释了为什么相似语言如波兰语与捷克语混在一起时置信度会明显低于纯英文这类单一语言的文本。③ 官方可靠性阈值是 0.8。结果类提供了isReliable()方法置信度超过ReliableConfidenceThreshold 0.8才认为检测可靠见 info.cj 与 constants.cj。实际使用时可以直接用它判断结果质量let info detect(Where there is a will there is a way) println(info.confidence) // 0~1 之间的置信度分数 println(info.isReliable()) // 置信度 0.8 时返回 true四、核心参数速查表 参数值在置信度公式中的作用定义位置maxTrigramDistance300单个缺失三元组的距离惩罚constants.cjmaxTotalDistance90000距离→评分换算的基准值constants.cjReliableConfidenceThreshold0.8isReliable()的判断阈值constants.cj500.0500score20边界情形下的除数detect.cj12.0/0.05经验值双曲线门槛12.0/N 0.05detect.cj五、结语一图流回顾置信度链路 文本 → 文字体系判定 → 三元组频次排名 → 距离评分 → rate领先比率 → 双曲线门槛 → confidence(0~1) → isReliable()看懂了距离评分如何变成评分差再看懂双曲线门槛如何随文本长度浮动你就完全掌握了 whatlang4cj 置信度计算的底层逻辑。更多 81 种语言的覆盖范围可参考 SUPPORTED_LANGUAGES.md接口细节可查阅 doc/feature_api.md。【免费下载链接】whatlang4cj一个快捷高效的自然语言检测库项目地址: https://gitcode.com/Cangjie-SIG/whatlang4cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表