pinyin-input-method-engine
Version:
汉语拼音输入法引擎 JavaScript 实现。
99 lines (75 loc) • 2.38 kB
Markdown
# 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).