手机搜狗输入法词库怎么用?

以前在搜狗拼音输入法和QQ拼音输入法之间纠结,手机上用的又是百度手机输入法(也就是之前的点讯梅花输入法),在不断纠结的过程中,所以写了一个小工具,实现了各个输入法之间的词库互转,具体参见:
最近收到一些来信,才知道原来大家都有词库互转的需求,我无心插柳的一个小工具被很多人使用了。于是乎,想到将功能进行增强,弥补上一个版本留下的遗憾,经过一天的努力,终于把搜狗细胞词库的scel格式解析出来了,于是我的深蓝词库转换1.1发布了!
介绍一下该小工具的功能:
1.到搜狗拼音官方网站下载想要导入的细胞词库,最近在举行世界杯,就以官方的&#南非世界杯词库【官方推荐】”为例,下载到本地硬盘上。
2.打开“深蓝词库转换1.1”(需要.net framework 2.0的支持),选择刚下载的词库的路径,然后选择导出的词库类型,比如“百度手机”这个输入法,然后单击“转换”按钮,如图所示:
3.将词库保存到本地硬盘上,然后再传到手机上,在手机上用百度手机输入法导入该词库即可。
目前就是QQ分类词库的格式我还没有解析出来,希望接下来能够在下一版本中实现QQ分类词库的导出吧。程序下载地址:
该程序的源代码我接下来会上传到,如果大家也想要解析scel格式的话可以参考其中的代码。有任何问题和建议也可以给我发邮件。
阅读(...) 评论()3被浏览769分享邀请回答暂时还没有回答,开始写第一个回答在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
用Lucene做了个文档检索系统,对于分词维护一套字典,现在想把例如搜狗输入法的热门词库同步到我的字典中,但是发现搜狗输入法好像没有对外的API,请问有什么实现方式,别的中文输入法能实现也可以。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我忘记这代码是从哪儿来的了,大概是从这个改的吧:
importer.py
#!/usr/bin/python2
import struct
import os, sys
def read_utf16_str (f, offset=-1, len=2):
if offset &= 0:
f.seek(offset)
str = f.read(len)
return str.decode('UTF-16LE')
def read_uint16 (f):
return struct.unpack ('&H', f.read(2))[0]
def get_word_from_sogou_cell_dict (fname):
f = open (fname, 'rb')
file_size = os.path.getsize (fname)
hz_offset = 0
mask = struct.unpack ('B', f.read(128)[4])[0]
if mask == 0x44:
hz_offset = 0x2628
elif mask == 0x45:
hz_offset = 0x26c4
sys.exit(1)
= read_utf16_str (f, 0x130, 0x338
= read_utf16_str (f, 0x338, 0x540
= read_utf16_str (f, 0x540, 0xd40
samples = read_utf16_str (f, 0xd40, 0x1540 - 0xd40)
py_map = {}
f.seek(0x1540+4)
py_code = read_uint16 (f)
= read_uint16 (f)
= read_utf16_str (f, -1, py_len)
if py_code not in py_map:
py_map[py_code] = py_str
if py_str == 'zuo':
f.seek(hz_offset)
while f.tell() != file_size:
word_count
= read_uint16 (f)
pinyin_count = read_uint16 (f) / 2
py_set = []
for i in range(pinyin_count):
py_id = read_uint16(f)
py_set.append(py_map[py_id])
py_str = "'".join (py_set)
for i in range(word_count):
word_len = read_uint16(f)
word_str = read_utf16_str (f, -1, word_len)
f.read(12)
yield py_str, word_str
def showtxt (records):
for (pystr, utf8str) in records:
#print len(utf8str), utf8str
print utf8str.encode('utf8')
def main ():
if len (sys.argv) != 2:
print "Please specify the Sogou PinYin Cell dict file!"
generator = get_word_from_sogou_cell_dict (sys.argv[1])
showtxt(generator)
if __name__ == "__main__":
下载搜狗细胞词库。运行 ./importer.py 文件名
运行后会向标准输出输出 *.scel 文件里的所有词,每行一个。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:

我要回帖

更多关于 搜狗输入法词库怎么用? 的文章

 

随机推荐