搜狗官方:搜狗输入法的词库是怎样来的

来源:百度文库 编辑:神马文学网 时间:2024/04/19 21:58:32
作者:搜狗输入法小组词库开发工程师 吕杰勇
众所周知,搜狗输入法在词库方面具有鲜明的特色,其词库不仅超大全面(大概有35 万左右),而且词条质量也很高.随着搜狗输入法的不断普及,越来越多的用户体验到了搜狗输入法的超级流畅性,但是这样的流畅性是以一个优秀的词库为基础的.作为一个输入法的核心部分,搜狗的超强词库是怎样来的呢?下面和广大关心搜狗输入法的朋友们分享一下词库制作中的艰辛和快乐.
搜狗的词条来源
词汇是一切中文应用的基础,但是世界上并没有任何一个词典包含了输入法所需要的所有词汇.比如中国汉语大辞典虽然包含了很多词条,但是仍然缺乏很多比较新、比较具体的词,网络的新词又层出不穷,所以搜狗输入法必须自己想办法构造一个适合他自己的词库.
由于搜狗是一家搜索引擎公司,自然会有一批自己做文本分析的词库,它包含了常用的基本词汇和部分专业词汇,但是在数量上还是远远不能覆盖用户对词汇的需求空间.经过分析可知,这部分缺少的词中有相当一部分是人名、地名、歌曲、小说、财经、旅游、游戏、体育等.幸运的是,搜狐矩阵蕴含着许多搜狗需要的这些资源,比如地名资源可以从go2map拿到,歌曲资源可以从搜狗的音乐搜索拿到,小说资源可以从搜狐网拿到,游戏词汇可以从17173游戏网拿到……这些资源虽然是内部资源,但是当初也是编辑经过长时间大量的整理维护工作的结晶,并且这涉及到大量部门间的合作,每一个流程下来都会花许多精力.
除了搜狐内部资源的整合,我们还为某些事件、场合特别整理了大量的词表.比如在世界杯期间,我们的编辑整理了几乎所有与世界杯相关的词汇,使得球迷们可以更为流畅地交流.对于诗词,我们特别汇总了几乎所有从最早的诗经到毛泽东的所有古诗词(包括宋词),这都成为搜狗词库来源的一部分.
在融合搜狗自己的词库和各个兄弟部门提供的资源后,搜狗输入法词库有了较大的完善,但是仍然缺少很多各种各样的词,比如“挖人”、“电荒”等.这些词无法通过寻找资源的方式全部找到,所以不得不自己想办法.幸运的是,互联网网页是个大宝库,里面蕴含着几乎所有我们需要的知识,所以我们的工程师们设计了一套机器学习的算法从这些网页中训练新词,训练的结果是得到了大批的新词汇,但是也引入了大量的噪声,即垃圾词.比如在最初的搜狗输入法版本里,“谢霆锋”这个词的错法就有“谢霆峰”、“谢廷锋”等数种,这对用户的体验和输入法的智能性都造成了损害.
搜狗的词频统计
输入法离不开词频,词频直接影响着智能组词.搜狗输入法的词频统计是在一个极其大的互联网网页上统计出来的.为了得到一个最优的词频,或者得到某类风格的词频(比如口语化风格),我们不断更换语料库,从网页类型的选取、文章长度的限制、某些特殊的预处理等都做了大量的尝试.每一次尝试都需要重新统计词频,动辄需要几天时间才能完成一轮词库的制作与验证,占用的机器、人力、资源之多不是某些小手工作坊式的输入法小组能够完成的.
词库过滤系统的搭建
经过前面的资源整理,我们得到了一个非常非常大的词库(约合几百万),这个词库中的词良莠不齐,需要坚决的过滤才能满足输入法的需要.试想,从几百万个词条的集合过滤得到35万左右的词条集合,这注定是一个庞大而又精细的工作.
事实上词条出现的频率是词条质量的最重要维度,频率越高则词条是好词的概率越高,并且不同来源的词汇有着不同的可信度.为此我们搭建了一个词库过滤系统,这个系统好比是一个漏斗,可以灵活地对源头的词汇进行过滤,同时输出中间每一步的过滤过程以方便开发人员调整算法.就这样,在不断的过滤、验证、修改参数的循环中,这个系统逐渐趋于稳定,为整个词库的质量做出了重要的保证.这个系统虽然只有几千行代码,但是开发人员对它阈值等参数的调整可谓不计其数.经过这一轮的处理,词条的总体质量有了飞跃般的提升.
词库的机器整理
在1.0版本发布以后,许多用户抱怨垃圾词太多,于是我们又进入了与剩余垃圾词的战斗,以其进一步提高输入法词库的质量.
经过分析我们认为垃圾词可以根据垃圾的类型分为几大类,例如:交叉型垃圾词,比如“量将”;错别字类型垃圾词,如“张亮影”、“张亮颍”,“张亮颖”等.
对于这三种垃圾词,我们可谓使出了浑身解数.针对每一种类型的垃圾词,我们结合词性、互信息等理论进行大规模的统计操作,并对每一个阈值下过滤的词进行抽样把关,像淘沙子一样由一位工程师持续过滤了近一个月,过滤了近3万的垃圾词.
词库的人工整理
机器不是万能的,在机器的铡刀间总会存在无法自动处理的角落.为了再进一步提升词库质量,我们招聘了名校中文系的毕业生来审查我们的词库.由于编辑的辛勤劳动,不断与众多不知名的文字专家探讨垃圾词的标准,并借助技术工程师的力量,通过人工、机器两相配合的方式,又进一步过滤了数以万计的垃圾词.其中我们的编辑特别辛苦,需要对每一个词条进行确认,对于一部分词,还需要查字典确认,仅仅手工查《现代汉语词典》就超过2000次.终于,搜狗词库的混乱状态得到了改观,用户抱怨搜狗词库的声音逐渐平息,输入法的智能性也在不断努力中接连攀升.
词库的注音
由于普通词条是没有拼音的,所以我们必须对它们注音.注音的难点在于对多音字的处理,为此我们搜集了大量的拼音语料,从中统计出每一个多音字的读音概率,并开发了一套完整的注音程序,从而使每一个词条拥有了读音.但是注音问题也是一个经典的问题,从没有过完美的解决方案,因此我们的注音结果也存在诸多谬误.除此之外,有时甚至还存在一种事理上的矛盾,比如有些词(如模板,正确读音为muban,但很多人读moban)的大众读音是错的,那么到底该不该纠正该读音?像这种物理上谬误的逐步纠正和现实中矛盾的合理处理,都是我们的编辑和工程师不断努力的结果.
新词发现
除了已有的词库,我们还要不断发现新词.因为人类的词库是不断变化的,而互联网对这种变化相当敏感,所以我们开发了一套从互联网中发现新词的算法和系统.此系统拥有自动流程,每周自动发送新词报告,再由人工过滤确认,从而使搜狗词库保持与互联网同步,与人们的生活同步.
词库的验证
在输入法词库制作完成以后,我们不会直接发布给用户,而是需要经过严格的准确性评测.准确性评测的方法主要是用机器自动模拟人工在输入法上击键输入,在数万行的中文样本上计算首选词正确的比例,以及不正确情况下翻页找词的次数.每次词库评测都需要测试组工程师花上数天的时间来完成,确保词库制作无误、首选词的准确性达标才能发布出来.
所以搜狗输入法的词库凝聚了众多开发工程师、测试工程师、中文编辑长达十几个月的心血.随着输入法小组集体的努力,搜狗的词库错误越来越少,质量越来越高.每当听到用户好的反馈,我们总是十分的高兴与欣慰.
然而在词库成绩显著的同时,我们也不能忽视词库中存在的个别问题,如仍有个别错词垃圾词存在,为此我们开通了各种渠道便于用户举报错词;我们也会进一步优化词库相关技术,相信在开发小组和用户的共同努力下,我们能够呈献给大家一款更加完善好用的输入法.