# pinyin-input-method-engine **Repository Path**: tiger-with-wings-org/pinyin-input-method-engine ## Basic Information - **Project Name**: pinyin-input-method-engine - **Description**: 汉语拼音输入法引擎 JavaScript 实现。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-07-27 - **Last Updated**: 2025-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pinyin Input Method Engine 汉语拼音输入法引擎 JavaScript 实现。 ## 快速使用 ### 安装 ```shell npm install pinyin-input-method-engine ``` ### 拼音音节拆分 ```ts import { splitAsYinJie } from "pinyin-input-method-engine"; const res = splitAsYinJie("tichulebucuodejianyi"); ``` ### 构建拼音查询算法实例 ```ts import { DirectedAcyclicGraph, HiddenMarkovModel, } from "pinyin-input-method-engine"; // 为了增加灵活性,使逻辑控制与数据分离,字典数据文件在根路径下的 dict 目录中。 // 可通过 fetch 静态资源的方式加载文件,并通过 JSON.parse() 方法进行解析; // 或者通过 Typescript "resolveJsonModule": true 直接引用。 import charDict from "pinyin-input-method-engine/dict/dag_char.json"; import phraseDict from "pinyin-input-method-engine/dict/dag_phrase.json"; import pinyinDict from "pinyin-input-method-engine/dict/hmm_py2hz.json"; import startDict from "pinyin-input-method-engine/dict/hmm_start.json"; import emissionDict from "pinyin-input-method-engine/dict/hmm_emission.json"; import transitionDict from "pinyin-input-method-engine/dict/hmm_transition.json"; const dag = new DirectedAcyclicGraph( charDict as unknown as TDagDict, phraseDict as unknown as TDagDict ); const hmm = new HiddenMarkovModel( pinyinDict as unknown as TPinyinDict, startDict as unknown as IHmmStartDict, emissionDict as unknown as IHmmDict, transitionDict as unknown as IHmmDict ); ``` ### 使用 DAG 查询 ```ts // 不限制查询数量 const res = dag.query({ yinJieList: ['ni','hao']; }); // 制定最大查询数量 const res1 = dag.query({ yinJieList: ['ni','hao']; maxNum: 1 }); ``` ### 使用 HMM 查询 ```ts // 不限制查询数量 const res = hmm.query({ yinJieList: ['ni','hao']; }); // 制定最大查询数量 const res1 = hmm.query({ yinJieList: ['ni','hao']; maxNum: 1 }); ``` ## 测试 ```shell npm run test ``` ## 构建 ```shell npm run build ``` ## 参考引用 本库代码实现参考以下文章及代码实现,对作者的辛勤付出和开源精神表示万分感谢。 1. [如何实现拼音与汉字的互相转换](https://www.letiantian.xyz/p/101693.html). 2. [拼音转汉字(拼音输入法引擎)](https://github.com/letiantian/Pinyin2Hanzi). 3. [汉字转拼音](https://github.com/letiantian/ChineseTone).