LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1275|回复: 11

关于紫光输入法的研究

[复制链接]
发表于 2003-7-7 18:00:46 | 显示全部楼层 |阅读模式
紫光输入法是我在windows下的首选输入法。以前我使用了很多输入法,到现在为止,紫光是胜利者。最近,我一脑袋扎到拼音输入法领域,紫光当然的就成为了我的首选研究目标。

紫光自称是短句输入法,这是非常恰当的。从他的功能上推测其实现,可以非常清楚地证明这一点。

紫光在词库上强调的是造词而不是有多大的词库。这是一个非常新颖的设计思路。紫光的词库并不大,从它的readme来看有8万条。很多人都认为拼音输入的关键就是一个词库问题。我想这是一个误解。过分庞大的词库并不能带来什么。其负面效果可能大于其带来的方便。紫光显然是要强调“精准比庞大好”,因此才有可能自动造词。

那么就让我们看看紫光是如何造词的。

我一直认为紫光有Next-ONE能力。并围绕这个概念进行了一系列统计,但现在我发现自己错了。它没有Next-ONE。在它的统计词库的时候可能使用Next-ONE概念,但在实际运行时刻却没有Next-ONE。它显然使用了另外的一种概念。我称之为“超频词”。

它在汉字或词组的拼音中,都有一个超频词。比如说qu的超频词是“去”,beijing的超频词是“北京”。一旦输入qubeijing,其结果永远是“去北京”。如果输入tiqubeijing,其结果永远是“提取北京”,而不是“提取背景”。因为,“北京”和“提取”都是它的超频词。这个实现方法非常霸道,因此错误的输入也非常多。当然,也会产生非常理想的效果。

呵呵,下面的话就有点对不起紫光了。

如何获取这些超频词?非常简单。当你第一次使用紫光或者删除了紫光的用户文件后。输入任何汉字或词组的拼音,排在第一位的,也就是词频最高的那个就是超频词。

紫光不是提供了一个在Linux下的输入法接口吗。写一个假的接口,顺着拼音往下查。呵呵,连词频统计都省了。呵呵,别怀疑我,我可不是这么干的。走别人的老路,呵呵,没劲。

紫光3.0可以连续输入12个汉字。这就体现了一些整句输入的特点。在紫光2.3中,它的实现还是相当不错的。但到了3.0后不知道为什么,退步了很多。

现在的紫光3.0几乎没有什么智能匹配能力。在非常理想的情况下,它会产生理想的结果。但汉字一多就完蛋了。紫光3.0现在就是地地道道的正序匹配的傻瓜式的输入法。

我想,紫光现在肯定没有充分利用它的资源。我在评估拼音树的时候,曾经用3个int就可以达到75%的“断句”匹配率。这里面没有词或词组的属性参考。
发表于 2003-7-8 14:12:10 | 显示全部楼层
怎么感觉上紫光的方案好像是最最原始的呢?
超频词就是词频远远大远其他候选词的吧,而且用户的输入习惯会很快的改变这种排列

但是论坛上很多人都说它是最好用的啊?
发表于 2003-7-9 19:42:06 | 显示全部楼层
在Windows的确不错,Linux下感觉并不怎么样
 楼主| 发表于 2003-7-9 19:53:47 | 显示全部楼层
最初由 liuspider 发表
怎么感觉上紫光的方案好像是最最原始的呢?
超频词就是词频远远大远其他候选词的吧,而且用户的输入习惯会很快的改变这种排列

但是论坛上很多人都说它是最好用的啊?


就我现在来看,紫光输入法在实现上确实有些原始.但原始的东西不一定不好。这是很多软件开发上都会出现的情况。当我们开发一个项目的时候,都会有一个先入为主的概念。我们会围绕这个概念进行探索并开发。比如说完全从词法分析上实现,或者从词频上实现。紫光的实现用我的话来说叫:第二思维。这往往是软件开发中创造新颖、灵感的源泉。

超频词应该不是词频最高的词或汉字。否则它就不值银子了。在我的统计中,很多汉字的词频都不和超频词相吻合。比如说bai。在我的统计中bai的发音中“白”的频率是最高的,达到51%。而在紫光中它的超频词是“百”。这很容易理解。我的统计主要来自小说,在现代小说中恐怕没有几个主角不姓“白”。这是一个相对少见的姓氏,但是一个颇具浪漫的姓氏。

显然,超频词不是简单的词频最高的词。它应该是“结合性”最好的词。在紫光中超频词在组词的时候应该是不会随着用户的输入而改变的。它永远是第一位的。

但这里也有一些令人烦恼的东西。这不是在于这种设计思想,而是在于它的实现上。比如我们造一个非常生僻的词。我的例子是“哈希表”。如果我们在第一次选择错了,比如说把“表”选择成了“标”。这个错误永远是第一位的。

这说明在造词的时候,第一次造出来的词成了超频词。

为什么说“紫光受欢迎”?我想一位网友的判断是非常准确的:它在功能上什么都有一点。我为了证明这一点,我重新安装了拼音++。简直是令人难以忍受。
发表于 2003-7-10 10:23:08 | 显示全部楼层
除了自己造的词之外,难道紫光永远不会自动调节 超频词 吗?

在自造词时,出现一个错误而产生“永久”错误的超频词的情况在 微软拼音中也有存在,但是,可以通过连续多次输入正确的词来改变这个错误的超频词的

》》超频词应该不是词频最高的词或汉字。否则它就不值银子了。在我的统计中,很多汉字的词频都不和超频词相吻合。比如说bai。在我的统计中bai的发音中“白”的频率是最高的,达到51%。而在紫光中它的超频词是“百”。这很容易理解。我的统计主要来自小说,在现代小说中恐怕没有几个主角不姓“白”。这是一个相对少见的姓氏,但是一个颇具浪漫的姓氏。
呵呵,我觉得这个推断不一定准确吧,紫光统计的东东,可能是基于日常用户的啊,那样的话,也是可以解释 百 字是超频词的原因啊
发表于 2003-7-10 10:40:36 | 显示全部楼层
我觉得紫光3明显没有2.3好用(windows)
很多智能功能都丢了。。组词明显莫名其妙了很多。。
linux这个版本感觉是基于2.3的engine开发的,但是红旗作了个四不象,也就沾了引擎好的光

btw, 对于错误的自造词,紫光有快捷键,好像是ctrl+alt+数字就可以删除了
但是linux版好像没有引入这个功能
发表于 2003-7-10 14:39:08 | 显示全部楼层
设计的输入发,应该在安装之后,什么输入方法也没有,可以用关联菜单选择从官方网站安装你的喜欢的输入方法,或是拼音或是五笔。这才是网络时代的特征。也许将来的操作系统也会只是一个简单的外壳而已。。。。妄言。。。。。。
 楼主| 发表于 2003-7-10 18:57:11 | 显示全部楼层
最初由 liuspider 发表
除了自己造的词之外,难道紫光永远不会自动调节 超频词 吗?

在自造词时,出现一个错误而产生“永久”错误的超频词的情况在 微软拼音中也有存在,但是,可以通过连续多次输入正确的词来改变这个错误的超频词的

》》超频词应该不是词频最高的词或汉字。否则它就不值银子了。在我的统计中,很多汉字的词频都不和超频词相吻合。比如说bai。在我的统计中bai的发音中“白”的频率是最高的,达到51%。而在紫光中它的超频词是“百”。这很容易理解。我的统计主要来自小说,在现代小说中恐怕没有几个主角不姓“白”。这是一个相对少见的姓氏,但是一个颇具浪漫的姓氏。
呵呵,我觉得这个推断不一定准确吧,紫光统计的东东,可能是基于日常用户的啊,那样的话,也是可以解释 百 字是超频词的原因啊


不是这样的。超频词只是在组词的时候使用。在其他情况下,超频词和普通的汉字或词组没什么两样。都会随着用户的输入调整位置。

超频词的使用时机是紫光为用户造词的时候。当用户不满意,选择了其他分支,在选择条上显示的是普通词频顺序。

当用户用拼音简写的时候,紫光就不去造词了,因此超频词也就不使用了。
 楼主| 发表于 2003-7-10 18:59:26 | 显示全部楼层
最初由 penny 发表
我觉得紫光3明显没有2.3好用(windows)
很多智能功能都丢了。。组词明显莫名其妙了很多。。
linux这个版本感觉是基于2.3的engine开发的,但是红旗作了个四不象,也就沾了引擎好的光

btw, 对于错误的自造词,紫光有快捷键,好像是ctrl+alt+数字就可以删除了
但是linux版好像没有引入这个功能


谢谢。又在你这里学了一招。

我一直为造错词的问题担忧。使用快捷键确实是个简单易行的好办法。
 楼主| 发表于 2003-7-10 19:11:07 | 显示全部楼层
最初由 killthemll 发表
设计的输入发,应该在安装之后,什么输入方法也没有,可以用关联菜单选择从官方网站安装你的喜欢的输入方法,或是拼音或是五笔。这才是网络时代的特征。也许将来的操作系统也会只是一个简单的外壳而已。。。。妄言。。。。。。


我看这不是妄言,也不是妄想。至少BSD已经有了这方面的特性。在安装BSD的时候,可以安装一个非常小的系统。以后随着个人的兴趣再逐步扩大系统的范围。

再安装BSD的时候只要安装一个内核(最好有Source)、GCC、FTP等最基本工具集就能达到扩展自己的目的。以前我再安装配置FreeBSD的时候,对FreeBSD把ADSL的实现方式放到内核里有些不理解。看了你的帖子,我感觉他们或许有这方面的考虑。

你对输入发管理的见解我非常赞同。这就涉及到输入法的框架问题。呵呵,我想这个问题jame_su和YuKing可能更有发言权。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表