拼音转汉字,可以作为拼音输入法的转换引擎,兼容Pytho2、Pytho3。
安装Pytho2:$ pytho setup.py istall --userPytho3:$ pytho3 setup.py istall --user使用下面的示例在Pytho3中运行。基于HMM的转换原理是viterbi算法。from Piyi2Hazi import DefaultHmmParamsfrom Piyi2Hazi import viterbihmmparams = DefaultHmmParams()## 2个候选result = viterbi(hmm_params=hmmparams, observatios=('i', 'zhi', 'bu', 'zhi', 'dao'), path_um = 2)for item i result: prit(item.score, item.path)'''输出1.3155294593897203e-08 ['你', '知', '不', '知', '道']3.6677865125992192e-09 ['你', '只', '不', '知', '道']'''## 2个候选,使用对数打分result = viterbi(hmm_params=hmmparams, observatios=('i', 'zhi', 'bu', 'zhi', 'dao'), path_um = 2, log = True)for item i result: prit(item.score, item.path)'''输出-18.14644152864202 ['你', '知', '不', '知', '道']-19.423677486918002 ['你', '只', '不', '知', '道']'''## 2个候选,使用对数打分result = viterbi(hmm_params=hmmparams, observatios=('i', 'zhii', 'bu', 'zhi', 'dao'), path_um = 2, log = True)for item i result: prit(item.score, item.path)# 发生KeyError,`zhii`不规范基于DAG的转换原理是词库+动态规划。from Piyi2Hazi import DefaultDagParamsfrom Piyi2Hazi import dagdagparams = DefaultDagParams()## 2个候选result = dag(dagparams, ('i', 'bu', 'zhi', 'dao', 'de', 'shi'), path_um=2)for item i result: prit(item.score, item.path)''' 输出0.08117536840088911 ['你不知道', '的是']0.04149191639287887 ['你不知道', '的诗']'''## 2个候选,使用对数打分result = dag(dagparams, ('i', 'bu', 'zhi', 'dao', 'de', 'shi'), path_um=2, log=True)for item i result: prit(item.score, item.path)''' 输出-2.5111434226494866 ['你不知道', '的是']-3.1822566564324477 ['你不知道', '的诗']'''## 1个候选prit( dag(dagparams, ['ti', 'chu', 'le', 'bu', 'cuo', 'de', 'jie', 'jve', 'fag', 'a'], path_um=1) )'''输出[< score=0.0017174549839096384, path=['提出了', '不错', '的', '解决方案'] >]'''## 2个候选,使用对数打分result = dag(dagparams, ('i', 'bu', 'zhi', 'dao', 'de', 'shii'), path_um=2, log=True)prit(result)# 输出空列表,因为`shii`不存在自定义params实现AbstractHmmParams,AbstractDagParams这两个接口即可。具体可以参考源码。关于拼音给出的拼音必须是“规范”的。例如略->lve
据->ju
列举所有“规范”的拼音:from Piyi2Hazi import all_piyifor py i all_piyi(): prit(py)将拼音转换为“规范”的拼音:from Piyi2Hazi import simplify_piyiprit(simplify_piyi('lue'))# 输出:'lve'prit(simplify_piyi('lüè'))# 输出:'lve'判断是否是“规范”的拼音:from Piyi2Hazi import is_piyiprit(is_piyi('lue'))# 输出:Falseprit(is_piyi('lüè'))# 输出:Falseprit(is_piyi('lvee'))# 输出:Falseprit(is_piyi('lve'))# 输出:True
评论