我理想中的智能拼音输入法(2008-06-02 11:25:48)
我理想中的智能拼音输入法(欢迎大家讨论)
作者:wow 发表于 2005年6月12日 16:21
昨天休息了一天,一来是因为端午节,二来也的确觉得有些疲劳,需要休息一下了。
很久没有真正过一下周末,昨天却让自己体味到了久违了的幸福感
,所以今天还想再给自己放假一天,呵呵。
刚才翻看网友最近的一些帖子,尤其是关于智能性方面的讨论,很有感触,所以把自己的一些想法也提出来和大家一同讨论。
我想对于什么叫做“智能”应该可以算是个哲学命题了吧,虽然我很喜欢思考这类的问题,但是这不属于我们现在要讨论的内容(如果有兴趣,可另开新帖,呵呵)。
就拼音输入法而言,句子的转换命中率高(个人认为“识别率”的说法并不确切)就是“智能性”高的体现吧。
拼音到句子由于存在多种可能(歧义),所以输入法就需要猜测使用者的“意图”。
概率统计的方法,应该是目前为止最为行之有效的方法了。
现有的输入法都使用的是三元统计模型(Trigram),即只统计三个词的搭配关系,应用到句子中时便是分词后三三概率相加,然后得到句子的概率。
一个简单的拼音串,就有上百个以上的分词可能性,每一种分词又会有几何级数个搭配关系,如果完全计算的话,N年都算不完。
所以,转换算法很重要,计算时间和命中率成了其中的主要矛盾。
智能狂拼Ⅰ应该是目前为止,大家所能看到的转换命中率最好的一个商业软件,但是它的体积太大(300多M)成了影响其被广泛使用的主要障碍;狂拼Ⅱ试图在体积和易用性方面有所突破,但终因引擎算法方面沿用了狂拼Ⅰ的结构,而最终未能如愿。
此时,微软拼音2003的进步让我们感觉到了更大的压力。就引擎方面而言,微软拼音2003的突破在于大大减小了语言模型数据库的大小,而整句转换的准确率并没有降低太多。
从理论上来说,数据的大小对准确率的影响是最直接的。减小数据库,信息量减小,转换命中率肯定是降低的。
微软拼音采用了较好的裁减(Pruning)算法,在数据大小与准确率之间找到了一个较好的平衡点。
狂拼Ⅲ的研发中对裁减算法的应用取得了一定的进展,或许可以和微软打个平手。
然而,如果仅限于此,狂拼Ⅲ还不足以同微软拼音竞争。创新与突破是狂拼的必由之路。
不过,任何一项创新都是失败多而成功少的,更何况我们还要“饿着肚子”搞突破。
也就在去年2月,我做的一项关于采用词组分类以改进智能转换引擎的尝试失败了,迫于项目压力,不得不暂时停止。
现在的狂拼Ⅲ.3,在整体架构上依然保留词组分类转换的结构,因为我相信这个思路在理论上是行得通的,只是还没有研究透彻,应用上暂时还无法体现它的优势。
还有一个关键问题就是“速度”。大家可以发现,狂拼的输入模式和微软拼音相差很大。从狂拼Ⅰ到狂拼Ⅲ,拼音的修改都是比较方便的;微软拼音及其他的输入法采用了另一种模式。
微软拼音2003在输入的过程中,是逐步转换的,即输入第四个字或词时,完成第一个字词的转换,依次类推。这种模式的好处在于可以减少整体的计算时间,缺点是中间修改时困难。
狂拼现在的模式未必有太大的优势,但就目前而言,在拼音修改方面扩展的空间要宽一些。
为了更好的发挥这一模式优势,就必须解决算法的计算时间的问题。提高速度的方法就是在计算时尽快地过滤掉“不可能”的内容(剪枝算法)。
剪枝是要有根据的,需要信息数据的支持。为了更好的实现这一功能,我们研究了多种如何利用上下文关系的方法。
语境概念的引入就是为此准备的。
到目前为止,这些方法的效果还不能明显体现出来(继续努力中……)。
其实在我看来,“智能性”的内涵除了转换准确率之外,还包含人性化设计方面的内容。
狂拼Ⅲ.3的研发过程中借鉴了很多其它输入法的优点,并试图在此基础上寻求突破。
很多的网友给我们提供了很多很好的建议,我也从中受到不少启发。
由于时间及项目计划方面的关系,很多功能都没来得及加上,慢慢来吧,心急吃不了热豆腐。
(暂时先写到这,有点乱,待续……
)