测试ibus输入法默认词库的流行词覆盖度

这些天一直在想怎么扩充ibus输入法的词库,虽然一般使用感觉还好。在网上找到sogou提供了一个“互联网词库”,里面是搜索引擎分析出来的15万多词语,本想拿来导入到ibus,先用python测试了一下有多少词语已经在ibus的默认词库中,最后发现15万流行词中只有200多不在默认词库中,ibus词库确实挺优秀。

程序输出:(测试代码见后)

seached: 157200 times. 215 phrases not in the database,
written in file ‘notexist’

查看notexist文件,发现除了后半部分一大堆频度为1的成语之外,只有20多个大频率词没在默认词库:
(- -|原来连“裸体”都没有?太和谐了!建议广滇驹推荐ibus为国家首选输入法)

乾坤 3561275 N,
乾隆 3088184 N,
乾净 1533219
夥伴 1052393
瞭望 984469
宏碁 979267
乾脆 953204
乾燥 624377
清乾隆 480337
乾隆皇帝 380252 N,
阿房宫 235461
乾隆年间 214986
定乾坤 210477
乾隆帝 149133
乾坤袋 143966
著色 111072
萧乾 84647
小夥子 79076
瞭望台 71630
寒伧 50780 V,ADJ,
祼体 46797

其实ibus词库不用再怎么扩充了,呵呵,当然萌萌的草泥马、雅篾蝶、法克鱿之类的新新词汇,还得用户自己敲一下咯,或者能找到专用的神兽词库……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/python
 
import sqlite3
 
con = sqlite3.connect('/usr/share/ibus-pinyin/engine/py.db')
c = con.cursor()
 
diclib = open("Freq/SogouLabDic.dic",'r')
rec_notexist = open('notexist','w')
 
seachCounter = 0
notExistCounter = 0
 
while 1:
    line = diclib.readline()
    if not len(line):
        break
    data = line.split('\t')
    try:
        phrase = data[0].decode("gbk")
 
        c.execute("select *\
            from py_phrase\
            where phrase = ?", [phrase.encode('utf-8')])
 
        rows = c.fetchall()
        seachCounter += 1
    except UnicodeDecodeError, e:
        print e
        print data[0]
        rec_notexist.writelines(line)
        continue
    except BaseException, e:
        print e
        break
 
    if not rows:
        notExistCounter += 1
        rec_notexist.writelines(line)
        print phrase
 
print "Seached: %d times. %d phrases not in the database, \n \
written in file 'notexist'" %(seachCounter, notExistCounter)
 
rec_notexist.close()
diclib.close()
con.close()
文章分类 Python 标签: , ,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*