简单拼音输入法实现
来源:互联网 发布:win7如何建立网络共享 编辑:程序博客网 时间:2024/05/21 08:39
一、作业目标
python语言编程,实现一个简单的汉语拼音输入法,即实现从拼音(全拼)到汉字(字串)内容的转换。
二、主要算法
1、N-gram语言模型
在训练语料数据中,我们可以通过极大似然估计的方法,得到N个概率分布:是a的概率是0.4,是b的概率是0.0001,是c的概率是…,且所有的N个概率分布的总和为1.
n-gram模型概率公式推导。根据条件概率和乘法公式:
如果直接这么计算T序列的概率会有很大困难的,需要引入马尔科夫假设,即:一个item的出现概率,只与其前N个items有关,即N-gram模型。
因此,P(T)可以求得,例如,当利用bigram模型时,P(T)=P(A1)P(A2|A1)P(A3|A2)…P(An|An-1)
而P(An|An-1)条件概率可以通过极大似然估计求得,等于Count(An-1,An)/Count(An-1)。
2、Viterbi算法
多步骤每步多选择模型的最优选择问题中,Viterbi算法是一个有效解决方案。在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价的情况下前继步骤的选择。依次计算完所有步骤后,通过回溯的方法找到最优选择路径。
三、整体设计思路
工程分为语料训练与维特比算法两部分。
1、语料训练:
采用2-gram模型进行转移概率训练。Train_Matrix作为语料库训练模块,对生语料库中英文、空格、标点符号等处理,提取分离出中文单句用作语料训练。统计转移概率,建立拼音转中文拼音查找字典。
2、Viterbi算法
对于转移概率趋近与0的小概率词组,取最低下限值作平滑处理;路径概率求解取log后转为加法运算,计算并记录所有路径的概率,最后状态下比较排序得最大概率路径,追溯得最佳解;路径记录采用定深度的堆栈以减小存储空间,满栈时采用堆排序推出最小概率路径。
四、改进方向
(1)平滑处理,可选择删除插值算法;
(2)可以利用更多成熟的语料训练库计算N-gram距离;
(3)作业战线拉有点长,希望下次大作业能专注着一气呵成;
工程代码链接:http://pan.baidu.com/s/1bZbepC 密码:c03q
- 简单拼音输入法实现
- 隐马尔科夫模型 python 实现简单拼音输入法
- 隐马尔科夫模型 python 实现简单拼音输入法
- 隐马尔科夫模型python实现简单拼音输入法
- 隐马尔科夫模型 python 实现简单拼音输入法
- 拼音输入法实现
- 一个简单的拼音输入法,实现常用汉字的输入
- 拼音输入法
- 拼音输入法
- ubuntu 10.10 google拼音输入法 实现光标跟随
- 嵌入式linux上Qt键盘输入实现拼音输入法
- 嵌入式linux上Qt键盘输入实现拼音输入法
- Qt5软键盘实现中文拼音输入法
- 用拼音输入法字典库实现同音字模糊查询
- ubuntu 10.10 安装google拼音输入法 并实现光标跟随
- 基于文本服务框架的拼音输入法研究与实现
- 也说搜狗拼音输入法
- QQ拼音输入法
- 记录自学前端的历程
- pdf转word转换器在线版,文档转换和处理都在这里了
- 通过IP直接访问虚拟机或服务器的nginx监听80端口
- 汉字段落保持左右边距相等
- Java设计模式模板方法实例
- 简单拼音输入法实现
- WebSetting setTextSize() 方法过期--setTextZoom
- codeforces 1A Theatre Square
- POJ 2096 期望dp
- Jquery/Ajax
- S5PV210 构建最小linux系统(1)---->搬运代码到ram中运行
- 静态初始化块里启动新线程的陷阱
- information_schema中Innodb相关表用于分析sql查询锁的使用情况介绍
- struts图解