资讯动态

LeanType 建议引擎详解:如何预测下一个词?评分流水线与 Ngram 上下文原理完整解析

发布时间:2026/10/16 6:35:28 来源:尧图企业网站定制
【免费下载链接】LeanTypeLeanType is an Open-source keyboard, fork of HeliBoard with additional features and customisation项目地址https://gitcode.com/gh_mirrors/le/LeanType点击查看免费下载LeanType 是一款开源、可深度定制的 Android 智能键盘HeliBoard 分支内置离线预测输入引擎你每敲一个字母它都能实时算出最可能的词并显示在建议条上甚至在你还没打空格前就预判出下一个词。本文带你走读它的 C 评分流水线与 Ngram 上下文模型搞懂键盘为什么这么聪明。一张图看懂从指尖到建议条的 3 步流水线 LeanType 的建议引擎继承自 AOSP LatinIME 并做了深度优化核心代码全部运行在设备本地libjni_latinime.so无需联网。整体流程可以拆成三步触摸建模把每次按键的坐标、时间、指针 ID 封装成输入事件并通过 ProximityInfo 计算这个坐标附近还有哪些键可能被误按——这是容忍手抖的关键。Trie 词库搜索C 层 Suggest::getSuggestions() 以词典 Trie前缀树为骨架逐字符展开搜索节点DicNode同时容忍替换、漏敲、多敲、换位等错误类型。评分与排序所有搜索完的终点节点terminal进入评分流水线按复合距离从低到高排序产出建议条上的候选词。Kotlin 侧的总入口是 Suggest.kt 中的getSuggestedWords()它把词库、上下文和键盘布局组装好再通过 JNI 调用 BinaryDictionary.kt 中的getSuggestionsNative()进入 C 引擎。评分流水线空间距离 语言距离如何合成置信度 每个 DicNode 在扩展过程中会持续累加两类距离定义在 dic_node_state_scoring.h复合距离 空间距离(spatial) 语言距离(language) × 语言权重(weightOfLangModelVsSpatialModel)距离类型来源含义空间距离proximity_info.h你实际按的键与目标词所需键在键盘上的物理偏差按偏了、漏按了都要扣分语言距离词典概率目标词及其上下文组合在语言模型中不常见的程度频率越低扣分越多搜索阶段的规则集中在 suggest.cpp 的expandCurrentDicNodes()中每个输入点会尝试多种修正假设MATCH_CHAR / PROXIMITY_CHAR命中或邻键命中比如把w按成了相邻的键SUBSTITUTION / OMISSION / INSERTION / TRANSPOSITION替换、漏敲、多敲、换位代价参数全部集中在 scoring_params.h如SUBSTITUTION_COST、OMISSION_COST、TRANSPOSITION_COSTDIGRAPHch、sh等双字母组合整体匹配NEW_WORD / SPACE_OMISSION检测到词边界回到 Trie 根节点继续搜下一个词实现多词连改如hevis→he is。低分节点会被优先扩展、高分节点提前剪枝由 dic_nodes_cache.h 的优先级队列管理保证在手机上也能毫秒级出结果。Ngram 上下文原理上文的词决定下一个词的权重 只靠单字概率远远不够——同样打出bank前文是river还是salary推荐的后继词完全不同。LeanType 用Ngram 概率表解决这个问题上下文载体Kotlin 侧的 NgramContext.kt 记录前面若干词 是否句首句首用S标记C 侧对应 ngram_context.h。下一个词预测当你敲完一个词、还没开始下一个词时dictionary.cpp 中的getPredictions()会遍历词典里以当前上文为前缀的所有 Ngram 条目通过NgramListenerForPrediction把高概率后继词推给建议条。这就是空格后立刻冒出一排词的来源。纠错中的上下文加权搜索进行到一半时getNgramProbability()会用前文词 ID 查询组合概率底层由 multi_bigram_map.h 管理 bigram 映射让符合语境的词排到前面。性能优化Suggest.kt用容量 50 的LruCacheNgramContext, SuggestionResults缓存预测结果切应用/切输入框时自动清空避免重复查表。最终打分精确匹配加成与错误惩罚如何平衡 ⚖️搜索结束后的输出与最终分计算在 suggestions_output_utils.cpp 和 typing_scoring.h。核心公式最终分 基础分 - 复合距离 / 最大距离在此基础上做加减分常量见 scoring_params.h精确匹配加成EXACT_MATCH_PROMOTION你原样打出的词优先保留避免好心改坏完美匹配加成PERFECT_MATCH_PROMOTION对零概率词如缩写Mt仅在完美匹配时提升防止输入mt被强推成my大小写/重音/双字母惩罚CASE_ERROR_PENALTY_FOR_EXACT_MATCH、ACCENT_ERROR_PENALTY_FOR_EXACT_MATCH等精确匹配但大小写或重音不符时扣分自动纠正阈值AUTOCORRECT_OUTPUT_THRESHOLD多词建议置信度足够高时长度 ≥16强制自动替换输入。Kotlin 侧shouldBeAutoCorrected()再结合用户设置的阈值做最后一道把关建议分足够高且与输入词不同才会在你空格时静默替换。个性化词典它记得你敲过的每个词 ✍️除了内置词典assets/dicts/main_en-US.dict等 19 种语言LeanType 还有用户词典每次你确认某个词updateEntriesForWordWithNgramContext()会把该词 当前上文的频率写回 UserBinaryDictionary长期不用的词会按遗忘曲线衰减forgetting_curve_utils.h让建议始终保持新鲜因此你自创的项目名、人名打几次后就会稳定出现在建议条前排。想深入源码从这里看起 模块路径搜索主流程app/src/main/jni/src/suggest/core/suggest.cpp结果输出与打分app/src/main/jni/src/suggest/core/result/suggestions_output_utils.cpp打分参数表app/src/main/jni/src/suggest/policyimpl/typing/scoring_params.h词典与 Ngram 查询app/src/main/jni/src/suggest/core/dictionary/dictionary.cppNgram 上下文Capp/src/main/jni/src/dictionary/property/ngram_context.hNgram 上下文Kotlinapp/src/main/java/helium314/keyboard/latin/NgramContext.ktJNI 桥接层app/src/main/java/com/android/inputmethod/latin/BinaryDictionary.kt单元测试app/src/main/jni/tests/suggest/总结LeanType 的建议引擎本质上是一个**键盘布局空间模型 × Ngram 语言模型的联合评分系统**用邻近键信息容忍手误用 Trie 优先级队列高效搜索候选词用空间距离 语言距离合成复合距离精确匹配加成保证尊重你的输入用 Ngram 上下文预测下一个词让建议条领先你的手指半拍用个性化词典持续学习你的用词习惯且全程本地运行、零隐私泄露。理解了这套评分流水线你也就理解了为什么 LeanType 在弱网甚至完全离线的场景下依然能给出又快又准的预测输入体验。赞分享【免费下载链接】LeanTypeLeanType is an Open-source keyboard, fork of HeliBoard with additional features and customisation项目地址https://gitcode.com/gh_mirrors/le/LeanType点击查看免费下载相关推荐Slang 编译器流水线一词法分析与预处理阶段完全解析Slang 编译器流水线一词法分析与预处理阶段完全解析 本文聚焦 Slang 编译器编译流水线的第一阶段如何把磁盘上的源码缓冲区转换为可供解析器Par编译器图形学编程语言数字孪生落地实践从一条命令到实时可视化系统OpenTwins让数据不再沉睡数字孪生落地实践从一条命令到实时可视化系统OpenTwins让数据不再沉睡 在工业互联网的日常里你是否也经历过这样的场景设备每天产生海量数据却散落在不一条流水线吃下量化剪枝蒸馏拆解 Model-Optimizer 三大压缩引擎如何协同一条流水线吃下量化剪枝蒸馏拆解 Model Optimizer 三大压缩引擎如何协同 大模型部署正在经历一场压缩军备竞赛FP8 已成标配NVFP4人工智能大模型模型优化模型量化模型压缩上一篇Cursor Pro完整功能破解限制机器ID重置与配置管理技术深度解析下一篇3步实现Windows变身苹果设备AirPlay接收器的完整方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑