Project Icon

jszhuyin

前端JavaScript实现的智能中文注音输入法

JSZhuyin是一个基于JavaScript的智能中文注音输入法库,实现了完全前端的自动选字功能。该项目支持离线使用,提供CLI接口和NodeJS调用方式,可轻松集成到网站中。JSZhuyin使用MIT许可证,采用小麥注音词库,并实现了高效的断词算法。

JSZhuyin - JS 注音 npm 版本

Javascript 的"智能"中文注音输入法。Javascript 自动选字注音输入法。演示网页

目前已知的在线自动选字注音输入法都是将输入发送到服务器,这是已知的第一个完全使用前端技术实现的方案,因此可以支持离线使用。

该库最初是作为 Mozilla Firefox OS - Gaia 的一部分开发的。桌面前端演示最初是在 Gaia 键盘演示 中开发的。

软件许可

MIT 许可

命令行界面

$ npm install --global jszhuyin
...
$ jszhuyin ㄐㄊㄌㄞˊㄒㄧㄝˇㄓㄨˋㄧㄣㄕㄖㄈ
今天来写注音输入法
今天
家庭
交通
具体
检讨
...

从 NodeJS 调用

const { JSZhuyin } = require('jszhuyin');
var jszhuyin = new JSZhuyin();
jszhuyin.load();

var candidates = [];
jszhuyin.oncandidateschange = function(c) {
  candidates = c;
};
jszhuyin.handleKey('ㄐㄊㄌㄞˊㄒㄧㄝˇㄓㄨˋㄧㄣㄕㄖㄈ');

console.log(candidates[0][0]); // '今天来写注音输入法'

在 RunKit 试用此示例

安装到网站

您可以直接链接 Github 上的文件:

<script type="text/javascript" src="https://jszhuyin.timdream.org/lib/client.js"></script>
<script type="text/javascript" src="https://jszhuyin.timdream.org/lib/web.js"></script>

准备基本的 HTML 元素(分别为待选字的注音,以及候选词),请自行添加适合的 CSS 样式或浮动窗口等:

<p id="composition"></p>
<ol id="candidates"></ol>

使用以下代码启动输入法:

JSZhuyinServerWorkerLoader.prototype.WORKER_URL =
  'https://jszhuyin.timdream.org/lib/worker.js';
JSZhuyinClient.prototype.DEFAULT_LOADER = JSZhuyinServerWorkerLoader;
var webIME = new JSZhuyinWebIME({
  composition: document.getElementById('composition'),
  candidatesList: document.getElementById('candidates')
});

启动完成后,JS 注音将开始处理键盘输入。

虚拟键盘

虚拟键盘可以将用户点击的注音符号传送至 webIME.handleKey(code)。请确保虚拟键盘不会抢走焦点。

词库

使用 MIT 许可证授权的小麦注音词库,由 mjhsieh 维护,基于 libtabe

使用前请先执行 npm run grunt data 从 McBopomofo 生成适用于 JSZhuyin 的词库文件。

分词算法

会输出的候选词依次有四种:

  1. 数据库中,完全匹配输入的注音组合的所有字词
  2. 完全匹配输入的注音组合的一个组合结果
  3. 数据库中,只匹配输入的前几个注音组合的所有字词
  4. 输入错误的第一个音

其中,只有在 (1) 没有找到时才会出现 (2),只有在前面全部都没有找到的情况下才会出现 (4)。

(1) 和 (3) 是直接将注音组合切割成可能的单音组合送到数据库查询(数据库存在另外设计的 Typed Array 数据结构内)。

(2) 比较复杂,但也只是穷举法和积分比较而已(笑)。穷举是使用很简单的 自然数的组合,将单音组合切割成所有可能的单词送到数据库查询和累加积分。积分由小麦注音词库提供。因为组合的结果只会输出一个,且输入新的注音符号时,新的最高分组合候选词一定会包含旧的组合候选词,所以使用了一系列的缓存来加快每个输入的处理速度,而不是穷举所有可能的单词组合再重新排名。

因为是穷举,如果有正确的词库应该可以用于其他的拼音输入法。

为什么示例页面的交互不像正常的桌面智能注音?

因为 JS 注音是手机输入法 :-/

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号