realizer 2007-7-5 16:35
打造自己的巨硬0.98词库
之前发帖子问如何制作自己的巨硬词库,将如拼音加加的词库导入tero650的巨硬词库的方法,得到的答案是无法做到。经过不断的实践终于研究出一套方法。
先介绍一下巨硬对可导入词库的要求,请参照一下转自Uglee大侠的说明内容:
...........................导入词语需要规定格式的文本文件。文件的格式为:每一行为一个字或者一个词,每个字后面紧接拼音,然后是一个空格,最后一个拼音后面没有空格,回车要使用Unix格式的"\n"而不是Mac的"\r"或者PC的"\r\n",你可以用Editplus一类的文本编辑器来实现这一点;文件的最后一行需要是一个空行。示例文件如下:
会hui
工gong
经jing
后hou 话hua
喊han 话hua
坏huai 分fen 子zi
豪hao 富fu
黑hei 户hu
花hua 好hao 月yue 圆yuan
.......................
1.对原始词库进行处理
首先,我们当然应该先有拼音加加,紫光,搜狗。。。等输入法的txt词库,这些词库的格式是以换行为分隔符的txt文本文件,不论何种词库文件除了汉字以外都会包括部分英文字母(拼音)对词进行注音,我们需要将这些英文字母删除。在这里,我建议大家将词库中的所有词复制到Excel中操作(注意:直接从txt粘贴到excel就可以了,而无须用excel打开txt词库文件)例如:将所有的词粘贴在A列,然后用查找替代功能将26个字母分别替代一遍,替代的时候在“查找内容”一栏填上单个英文字母,“替换为”一栏什么都不用填,这样可以删掉所有的英文字母,当然26个字母需要替换26遍,如果有数字的话也需要用以上方法将数字删除。之所以用Excel进行替换而不用记事本的原因主要是Excel的替换速度会比记事本快10倍都不止,而且在后面的处理过程中还继续需要使用到Excel。
巨硬输入法是不支持超过4个汉字的词组的,所有我们必须忍痛割爱将5字以上的词组删除。这里需要用到偶们丰富的Excel知识 。在B列第一行,也就是B1,输入以下内容:=Len(A1),这个公式是用来输出相关单元格的字符长度的,如果是2个汉字的词组就会输出值2,以此类推3个汉字的词组就是3,4个汉字就是4.......................将所有词库中的所有词组都以此处理,确保每个词组旁都能输出改词组的长度。相信常用Excel的吹友都能明白我在说什么。然后用Excel中”数据“-》”筛选“-》自动筛选”的功能,将所有的大于4(注意不是大于5)的单元行都筛选出来,并进行删除。
处理完后,将刚才自动筛选取消,以显示所有的词组,再选定A列中的词组单元格复制,粘贴到记事本中,这些我们最终需要的是一个只有汉字,每个词组都不超过4个汉字,且不带任何英文字母和数字,以回车为分隔符的txt词库文件。
2.对词库中的词加拼音
这里需要用到的一个软件,叫做“实用汉字转拼音4.6”,大家在网上随便一搜就有了,无需安装是个绿色软件。将软件打开后,软件下面有5列单选/复选框以设置拼音转换的格式,设置方法如下:
第1列只选中“加上空格”
第2列只选中“左汉字友拼音”
第3列只选中“全小写”
第4列和第5列什么都不用选
将刚才处理过txt词库中的词直接就粘贴到“实用汉字转拼音”软件位于上部的文本框中,再点击“转换”按钮,再将转换的结果复制,粘贴到Excel的A列中。
PS:我曾将3万行的词从txt文件中粘贴到这个软件中进行转换,出现了转换词不全的问题,这个软件好像只转了5000多行就没下文了,但有时候又没问题,可以一下转换2,3万个词 。有时候转换2,3万个词需要好几分钟,有时候就死机了,需要重新启动软件(不是重启电脑),重试几次就好了,所以大家在转换完拼音后需看看转换的最后一个词为标志,检查一下是否所有的词都转成拼音了。当然,如果各位大家的词库不大,不超过1万个词就不是什么问题了。
3.对汉字+拼音的Excel文件进行处理
转完的汉字+拼音的词库,每个词内部的每个字是以空格分隔的,我们需要将每个词最后一个空格删除,这里再次需要运用我们丰富的EXCEL知识了。Excel确实是很NB的处理工具啊 。我处理的方法是这样的,在B1单元格中键入“xxx”,在C1中键入公式“=A1&B1“。解释一下这个公式,”&“这个字符的作用在于将两个单元格中显示(注意是显示的内容,不是实际内容)的内容的连接在一起显示出来。然后复制C1单元格,用选择性粘贴将C1的数值到D1单元格中(这个我就不再解释了,不明白的朋友去查Excel教程吧),其他词组照此处理,
接下来,我们要继续对D列的词组进行加工,再次使用替换功能,将D列的" xxx"(注意xxx前面有个空格) 全部删除。我再解释一下这个步骤的思路:如果直接对空格进行删除,会将词组内字与字之间的空格也删除了,所以我们先将每个词组后面加上个xxx这样的不可能出现在拼音中的字符串以对最后一个空格加上标识,然后再将” xxx"删除就可以成功的将每个词组末尾的空格删除了......不知道我说明白了没有
再将处理过的D列汉字+拼音的词组复制粘贴到记事本中,注意根据巨硬对可导入词组的要求,txt文件末尾要有个空行,保存关闭。
4.对词库的分隔符进行转换
根据Uglee的说明文件:
回车要使用Unix格式的"\n"而不是Mac的"\r"或者PC的"\r\n",你可以用Editplus一类的文本编辑器来实现这一点;文件的最后一行需要是一个空行。
说实话,我也不明白为什么要怎么折腾....直接跟大家说如何操作吧,先下载Editplus,网上到处都有,随便哪里下都好。用Editplus打开刚才处理过的txt文本文件,选择Document --> File format (CR/LF)选项,在弹出的对话框里选Unix,然后保存关闭txt词库。
5.最后一布,文件改名放入储存卡
将处理后的txt文件改名为mhpyphrase.txt, 放入储存卡的palm/launcher 目录下,在650的巨硬设置界面中导入就好了...............
我试过了,5万个词组的词库导入需要将近10分钟的时间。导入个人字库后的巨硬输入法输入有比较明显的延迟,我理所当然的认为这是因为导入的词库过大(超过10万个词,分2次导入的),但经过几次650和巨硬的重启后又不会出现延迟的情况了,用起来和平时没什么差别,不明白为什么....
大家有什么问题就尽管问吧,不知道还有多少朋友用巨硬..............[u][/u]
大明白 2007-7-5 20:51
太好了!
可是搜狗词库TXT在哪?
LZ能不能把原帖地址贴上,让作者把他转好的词库分享给大家!
CasBoy2 2008-9-18 10:56
不知道这样的话,是否会去重?
比如在我原始的巨硬词库里有一个“手机”,我的拼音加加的词库里也有“手机”,那最后的词库里会有两个“手机”吗?