水杉输入法整句输入原理:词语格与kenlm三元语言模型的打分机制
水杉输入法整句输入原理词语格与kenlm三元语言模型的打分机制【免费下载链接】msime-windows水杉输入法 Windows 产品TSF、Server、GUI、设置页与安装器。内测tg: https://t.me/msimegroup QQ Group: 829919142项目地址: https://gitcode.com/gh_mirrors/me/msime-windows水杉输入法Metasequoia IME是一款运行在 Windows 上的开源输入法它的整句输入能力来自两个核心部件词语格Word Lattice负责把一串拼音拆成所有可能的词语组合kenlm 三元语言模型trigram负责从中挑出最像人话的那一句。打个比方你敲下zhongguo时引擎要同时判断它可能是中国也可能是一串单字只有把词库里的所有切分方式摊在一张地图上再用语言模型给每条路线打分输入法才能在候选栏里稳稳地递给你中国而不是中果。上面这张图就是整句输入的现场候选栏第一项是解码器生成的整句后面跟着逐字候选。下面拆开看这张地图是怎么画出来的、分数是怎么算的。词语格把整句拆成一张词语地图整句输入的第一道难题是分词歧义同样的拼音序列切法可能完全不同。水杉输入法的解法是先把所有切法铺满而不是提前猜一种——这就是词语格。建图的过程很直接见 build_graph把已确认的音节序列n个位置编号每个位置是一个节点对每个起点向后取 1~7 个音节的片段max_phrase_syllables默认 7拿片段去词库查词查到的每个词就是一条边从起点指向片段终点。边数上限由span_limit默认 32控制防止一个音节对应几百个字时把图撑爆。这样一张有向图就建好了一条从 0 号节点走到 n 号节点的路径恰好是一句覆盖全部拼音的完整候选句。图的定义写在 word_lattice.h 的开头注释里一句话概括就是phrase-graph Viterbi beam search——短语图加维特比束搜索。kenlm 三元语言模型给每条路径打分光有地图还不够一条路径好不好要看这句话通不通顺。这里登场的是 kenlm——一个经典的 n-gram 语言模型工具包水杉输入法把它的查询子集 vendored 在 engine/ngram/kenlm/引擎只通过 language_model.h 这一个封装访问它。三元模型trigram的打分逻辑是下一个词的概率取决于它前面的两个词即P(中国 | 我, 的)。解码时每走一条边就把log10 P(词 | 前两个词)累加到路径分数上见 decode_word_lattice。模型上下文不存全局状态而是跟着每条假设路径走所以几十条路径可以并行比较互不干扰。几个工程上的细节值得新手了解模型文件叫sc.lm约 34 MB以 mmap 方式只读载入。shared_language_model 按路径在进程内共享同一个实例全拼、双拼多个会话共用一份内存映射分数是 log10 概率词库权重只保留一个极小的平局打破项dictionary_tiebreak 0.01当语言模型分不出高下比如两个词都没见过时才用词频排个先后且绝不可能压过真实 n-gram 的差异未登录词按固定罚分log10(1/6e7) ≈ -7.78处理生僻词不被判死刑只是明显吃亏sc.lm由 language-model/lock.json 钉住的 ARPA 语料按固定参数三元、-a 22 -q 4 trie转换而来构建脚本会校验两头 SHA-256保证每次发布的模型可复现。转换流程见 engine/ngram/README.md 与 language-model/README.md。束搜索在地图上找出最可能的那句话图可能有几千条路径不可能全走一遍。解码器用束搜索beam search控制爆炸每个节点只保留当前分数最高的beam默认 32条假设逐节点向前推进走到终点后取分数最高的nbest默认 5条去重后交给下游——也就是 n-best 整句列表。除了语言模型边上还叠了两类修正项专门对付中文的特殊情况生僻读音先验reading_prior语言模型只认汉字分不清卷读juǎn还是juàn。解码器按该词权重占整段拼音权重的比例判断读音是否生僻占比过低就扣分下限由reading_prior_floor兜底这样gunqi不会打出卷七词库平局项如上所述只在模型分完全相同时起作用。从 n-best 到候选栏只挑最值得看的n-best 是解码的中间产物如果全铺出来候选区会被一堆只差一两个字的整句占满。所以 merge_lattice_candidates 做了克制的合并最多插入三条整句词语格自己的最优解加上神经重排器见下节各自的最优解插入位置有讲究整句候选只会插到键与输入完全相等的词库精确命中之后见 generated_sentence_insert_position——词典里真实存在的短语永远压过整句猜解不会出现整句抢跑的情况。图里第一行水杉输入法就是整句解码的结果它插在词库短语命中之后排序规则一目了然。神经重排给 n-best 的第二意见三元模型只看前两个词上下文窗口太短。水杉输入法在整句解码之上还挂了一层字符级 Transformer 句子模型sentence_model.h对词格给出的 n-best 路径做重排序它把已提交的上文和每条候选句一起送入模型按log P(句子 | 上文)重新排列。重排只改顺序不增删、不改写路径——候选词的字段都从原始路径派生推理跑在 RescoreWorker 的后台工作线程上两个 worker 并行结果就绪前候选栏先显示词格自己的排序用户永远等不到一个空窗口模型文件由 neural-model/NOTICE.md 声明来源与 Apache-2.0 许可。没有语言模型时会怎样这是新手常问的健壮性问题sc.lm缺失或读不出来时shared_language_model 返回一个valid() false的实例解码器整体回退到未校准的单字词频启发式自然对数尺度与模型分数不混加。结果是整句候选质量下降但输入法照常出句子——模型缺失不是错误是这个项目的明确设计原则见 runtime-architecture.md。想深入源码按这条路线读词格定义与解码engine/quanpin/word_lattice.h → word_lattice.cpp语言模型封装engine/ngram/language_model.h模型构建与锁定language-model/lock.json神经重排engine/neural/sentence_model.h、engine/neural/rescore_worker.cpp整体架构背景engine/docs/runtime-architecture.md一句话总结词语格负责穷举所有说得通的话kenlm 三元模型负责选出最说得通的那句神经重排负责结合上文再微调一次——三层各司其职才构成了水杉输入法整句输入的稳定体验。【免费下载链接】msime-windows水杉输入法 Windows 产品TSF、Server、GUI、设置页与安装器。内测tg: https://t.me/msimegroup QQ Group: 829919142项目地址: https://gitcode.com/gh_mirrors/me/msime-windows创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

uniapp运行鸿蒙报错“打开 undefined”?三步排查+手动流程

uniapp运行鸿蒙报错“打开 undefined”?三步排查+手动流程

很多人在 HBuilderX 里点“运行到鸿蒙”,等了几分钟,发现日志里只多了一句话:“运行方式:打开 undefined,导入 dist\dev.app-harmony 运行”。项目没启动,模拟器没反应,编辑器也没被唤起来。我也…

2026/10/10 19:05:54 阅读更多 →
OpenClaw工具拆解之sandboxed_write+sandboxed_edit:把settings改到TaoToken后如何验证沙箱写入与编辑

OpenClaw工具拆解之sandboxed_write+sandboxed_edit:把settings改到TaoToken后如何验证沙箱写入与编辑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 19:03:15 阅读更多 →
模型测试——性能测试:用 vLLM 与 SGLang 搭建可复现的压测基线

模型测试——性能测试:用 vLLM 与 SGLang 搭建可复现的压测基线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 19:06:24 阅读更多 →

最新新闻

纯Java手写TopoJSON生成器:从GeoJSON到拓扑压缩的完整实践

纯Java手写TopoJSON生成器:从GeoJSON到拓扑压缩的完整实践

做 WebGIS 的同学这两年应该对 TopoJSON 不陌生,尤其当你需要把全省县级行政区划、全国路网这类动不动几十 MB 的 GeoJSON 塞进浏览器时,TopoJSON 几乎成了绕不开的选项。它的核心价值只有一句话:在拓扑关系上做文章,让共享边界只…

2026/10/10 20:47:31 阅读更多 →
Spring Boot+MyBatis Plus游戏分享网站毕设全流程实战解析

Spring Boot+MyBatis Plus游戏分享网站毕设全流程实战解析

每年的毕业设计季,总能看到一批同学被“选题”折磨得焦头烂额。游戏分享网站这种项目,听起来难度适中、事务清晰,特别适合拿来当计算机专业的毕设项目,但实际动起手来,从技术栈选型到功能模块拆解,再到部署…

2026/10/10 20:47:31 阅读更多 →
给 AI 生成 UI 上“护栏“:json-render 白名单配置从零到生产

给 AI 生成 UI 上“护栏“:json-render 白名单配置从零到生产

给 AI 生成 UI 上"护栏":json-render 白名单配置从零到生产 【免费下载链接】json-render The Generative UI framework 项目地址: https://gitcode.com/GitHub_Trending/js/json-render 2026 年初,Vercel Labs 开源的 json-render 在短…

2026/10/10 20:47:31 阅读更多 →
用NAS把收藏夹文章变成专属播客:搭建指南

用NAS把收藏夹文章变成专属播客:搭建指南

我猜你八成也有这么个毛病:看到一篇好文章先收藏,想着“回头认真读”,结果这个“回头”就是永远。收藏夹里堆了几百篇深度长文,从AI技术、投资分析到历史考据,什么都有,就是没有时间去读。直到有天我在通勤…

2026/10/10 20:47:31 阅读更多 →
把“留痕“当一等公民:金融智能体的审计设计为什么比模型能力更烧钱

把“留痕“当一等公民:金融智能体的审计设计为什么比模型能力更烧钱

把"留痕"当一等公民:金融智能体的审计设计为什么比模型能力更烧钱 【免费下载链接】financial-services 可将 Claude 转变为金融服务专家,适用于投资银行、股票研究等领域。提供核心及专项插件,支持端到端工作流,集成多…

2026/10/10 20:47:31 阅读更多 →
基于Java的校园二手智能交易平台APP开发全攻略

基于Java的校园二手智能交易平台APP开发全攻略

1. 项目到底在做什么:需求与定位拆解每年毕业设计季,“校园二手交易平台”这类题目都是常青树,但今年我带着学生把“基于Java的校园二手智能交易平台APP”完整做成可运行系统时,发现很多人对这个题目的理解还停留在十年前&#xf…

2026/10/10 20:46:30 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →