这是我离散数学课的大作业,用图论算法解决某个复杂的问题,我选的题目是基于统计语言模型的拼音输入法。通俗地讲,就是实现一个支持智能组句的拼音输入法。注意是智能组句,不是智能组词,组词其实就是查词典,哪怕是人也是这么做的,只不是这部词典在大脑中而已,否则就是“造词”了。而电脑组句的方法就和人有很大区别了,因为让电脑理解一个句子的结构是极端困难的,尤其是作为分析语的中文,所以说这里面蕴含著许多难题。说到这里我想到了关于人工智能的讨论,心理学家和工程科学家在对人工智能的认识上有著根本的分歧,即工程科学家认为人工智能就是实际效果显得有类似人类的智能,而心理学家则把具有模仿认为思考、推理和行为的能力作为人工智能的判断标准。在不同的认知基础上人工智能的研究朝著不同的方向发展,事实情况是基于效果的人工智能的水平不断在进步,而基于模仿的人工智能难有突破。作为一个拼音输入法,实际效果比所谓智能的理解更为重要(况且作为表达思想和意志的工具,许多人并不希望自己输入的所有内容被电脑“理解”),而统计语言模型就是一个被广为应用的手段。

统计语言模型(Statistical Language Model)是听起来像是个很深奥的东西,其实说出来并不复杂,简而言之就是一个经过整理的大量语料的统计数据。这个数据有什么用呢?用处非常大,像机器翻译、语音识别、中文分词、信息检索乃至数据挖掘,都可能要用到统计语言模型,把它用到输入法上面其实是最直接的使用。举个简单的例子来说,“wo shi zhong guo ren”这个音节序列中,“wo shi”可能对应了“我是”、“卧室”、“我市”、“卧式”等词,而“zhong guo ren”则可能是“中国人”或者“种果人”,最佳的组句方案是什么呢?这就要用到统计语言模型了,我们在这一大堆统计数据中,分别找到词频最大的单词,如“我是”和“中国人”,句子就可以组合出来了。听起来是不是很自然的想法呢?找出词频最大的词组合到一起,就成了句子。事实上就是这样,不少输入法都以这种方式实现,而且效果也不差。例如早期的拼音加加、紫光拼音,Linux平台下ibus-pinyin。追溯一下,使用这种方法的鼻祖应该是智能ABC输入法吧,在当年这可是改变了中国人输入习惯的一个划时代产品。然而统计语言模型的应用远远不止于此,例如我们收集到的统计语言模型中,从单词的词频上来说,“卧室”可能会比“我是”更高一些,但显然“我是中国人”比“卧室中国人”更好,所以单看每个单词的词频有时候不一定是最好的,这怎么办呢?我们可以不但考虑单词的词频,也考虑两个词组合在一起的频率,这样的话“我是中国人”肯定是最好的结果了。甚至我们可以统计每三个词、四个词、乃至多元组的频率,则必定会有更好的效果,于是N-gram模型应运而生。如果没记错的话,微软拼音应该是最早做这种尝试的输入法了,只可惜微软拼音的输入模式偏偏那么怪异,再加上推广手段不力,一直默默无闻,反而是搜狗拼音在2006年异军突起,迅速占据了桌面市场。目前像搜狗、Google、QQ拼音等输入法都采用了2-gram或者3-gram语言模型,在Linux和mac平台下,开源的SunPinyin也是基于3-gram的。

统计语言模型说到底依赖于大量语料的统计,词汇是数以十万计的,两个词组合起来数据量就达到了百亿,三元组则更是天文数字,何处找如此大的规模的语料来进行统计呢?想必一般人是没有办法,只有做搜索引擎的商业巨擘才有实力来做。但是时间和空间毕竟有限,不可能把输入法做成如此一个庞然大物,桌面用户是消受不起的,因此实际上在使用统计语言模型时,是需要对不少情况进行数学计算拟合出一个近似结果的,这便是从有穷模拟无穷的量化思想的体现。另一个方面,不少公司开始热衷于做云输入法,用一台超级计算机来计算庞大的数据,只需给出用户结果,这样就不必考虑用户终端的计算能力了。

说了这么多,谈谈我的设计吧。我用了尽可能简单的建模方法实现了一个基于2-gram的拼音输入法,为了突出图论(毕竟是图论课),我还设计了具有歧义的拼音字串的多重解析(如“翻案”和“发难”,对应fanan)。在我的设计中,我大量参考了SunPinyin,也得到了来自SunPinyin作者孙勇的不少帮助。我的程序的全部源码和数据在slm_based_pinyin_ime.7z,源码以Apache License 2.0发布,数据来自open-gram项目。因为和SunPinyin使用了同样的词库和语言模型,所以在测试中不少组句结果会与SunPinyin很接近,有心人可以试试比较一下。此外程序的图标是ibus-pinyin的。写完以后我发现我求k优最长路径的算法写得不好,在k比较大的时候会很慢,其实可以做到线性复杂度的。

基于统计语言模型的拼音输入法相关推荐

  1. SunPinyin: Linux下最好用的拼音输入法,MacOSX下也是不错的,还免费,可以不用买IMKQIM了...

    感谢SUN是斯坦福的的投递 Sunpinyin貌似是很NB的,基于统计语言模型(SML)的输入法. 忍受着SCIM看着Yong Sun牛开发SunPinyin,直到去年从FeiY GG的blog得知S ...

  2. 基于马尔可夫HMM的拼音输入法自然语言处理实现

    两个py文件,一个是利用文本训练并保存,另外一个是拼音转汉字,基于隐马尔可夫模型HMM,拼音输入法可以按注音符号与汉语拼音两种汉字拼音方案分成两大类.汉语拼音输入法的编码是依据汉语拼音方案(汉字的读音 ...

  3. 基于文本服务框架的拼音输入法研究与实现

    摘要:目前的输入法大多采用输入法管理器-输入法编辑器(IMM-IME)进行开发,对于微软发布的新型输入法技术―文本服务框架(TSF)的研究一直比较滞后,该文论述了 TSF 的基本构成.主要接口.输入法 ...

  4. emWin 2天速成实例教程012_基于STM32单片机的全键盘中文汉字拼音输入法

    备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...

  5. 基于统计生成相似句(同义句),再用神经网络rnn语言模型判断句子的通顺性!

    主要生成相似句 再用神经网络判定句子的通顺性 直接上代码 两部分工作: 第一部分基于统计生成相似语料: 借助网上的python的github上的synonyms(自行百度):https://githu ...

  6. 拼音输入法的数学原理

    拼音输入法的数学原理 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 过去的25年里,中文输入法经历从自然音节编码输入,到偏旁笔画拆字输入,再回归自然音 ...

  7. 数学之美:拼音输入法的数学原理

    现代输入法大多首选拼音输入法,其原因便是拼音符合人的认知规律,尽管需要多输入几个字母,但速度并不慢.它不需要专门去学习,输入时不用中断思维去考虑,而且对于前后鼻音具有很好的冗余性. 而拼音转汉字的算法 ...

  8. 微软拼音输入法2010词典自动更新

    大家好,我是微软拼音输入法的项目经理赵以宝,微软拼音2010增加了不少新功能,词典自动更新就是其中之一.下面给大家介绍一下这个功能以及一些不为人注意的细节,希望能对您有所帮助. 为什么要支持词典更新? ...

  9. java 对数取反_数学之美读书笔记-拼音输入法的数学原理

    从理论上分析,输入汉字到底能有多快?这里需要用到信息论中的香农第一定理.假定在国标GB2312里面,一共有6700多个常用的汉字.如果不考虑汉字频率的分布,用键盘上的26个字母对汉字进行编码,两个字母 ...

  10. [我们是这样理解语言的-2]统计语言模型

    [我们是这样理解语言的-2]统计语言模型 2015/02/28 搜索技术.自然语言处理 LM.n-gram.NLP.统计语言模型.自然语言处理.语言模型 fandywang 记得最早学习语言模型是在研 ...

最新文章

  1. 2017年重要数据安全事件解读
  2. python中data.find_all爬取网站为空列表_Python网络爬虫之Scrapy 框架-分布式【第二十九节】...
  3. 网站优化之尽量避免重定向(301/302)
  4. 北斗导航 | GNSS卫星导航天线在车载高精度定位领域中的应用与挑战
  5. pb怎么打开服务器上的文件夹,前台PB客户端怎么连接服务器上的SQL后台数据库...
  6. poj1942(求组合数)
  7. Linux DNS视图脑裂的实例操作(四)
  8. 中信银行就泄露池子个人信息致歉,网友:违法行为想靠道歉就完事?
  9. 监控linux内存,系统运维|用 Bash 脚本监控 Linux 上的内存使用情况
  10. 【预测模型】Leslie 人口增长模型
  11. 路由器 mac 和 bssid是一个吗
  12. 个人设置随身携带口袋操作系统手到擒来
  13. ignite mysql 持久化_2 ignite关键特性
  14. 小红书引流推广的终极秘籍之笔记排名
  15. web网页制作期末大作业——蓝色的异清轩个人博客(6页) 个人博客模板源码异清轩博客
  16. 基于spring boot的婚纱摄影约拍系统
  17. NLP自然语言处理 集束搜索(beam search)和贪心搜索(greedy search)
  18. 学习OSPF,有这一篇就够了
  19. 阿里云服务器企业用户最新配置表!
  20. 独家免费资源:《成长的烦恼》全7季在线高清无水印播放!

热门文章

  1. Lync Server 服务器版本升级
  2. c语言中断程序运行,C语言实现 软中断 程序小结
  3. 深度 | 面目全非自动化
  4. 【基础篇】————28、横向渗透
  5. 色温CCT与色坐标xy互换
  6. 《机器人动力学与控制》第九章——动力学 9.1 初探欧拉-拉格朗日方程法
  7. android微软雅黑字体,关于 Android 默认字体以及对比微软雅黑字体
  8. 粒子群算法及其改进算法
  9. 完全体,千字详解:“Java性能调优六大工具”之JConsole工具
  10. 淘宝违规考试软件第一课