此次更新的导入工具,加入了对google和sogou输入法用户词典导入的支持。由于sunpinyin用户词典的一些限制,只能导入长度为2~6个字符的词条,并且最多可导入6万多个词条。我们后续会改进sunpinyin,以支持更大的词库和用户词典。该导入工具也可以在linux或solaris下运行,不过目前只支持ibus的前端。(因为我们不是很好判断,用户所使用的是xim还是ibus平台。)
注意:如果您使用的是实验版词表和语言模型,请下载open-gram项目的词表,解压并覆盖sunpinyin_importer目录下的dict.utf8文件,然后再执行下面的步骤。
首先请下载这个导入工具,解压缩到某个目录中。
导入google输入法用户词典
在windows上激活google拼音输入法,然后打开“属性设置”对话框,在“词典”标签页下,点击“导出”按钮,将用户词典导出到一个文件中(例如,名为google_userdict.dic),然后将这个文件拷贝到您的机器上(mac或linux),然后执行下面的操作,
$ python import_google_userdict.py google_userdict.dic
导入sogou输入法用户词典
在windows上激活sogou拼音输入法,然后打开“设置属性”对话框,然后在“词库”标签页下,在“词库操作选择”下拉框中选择“导出文本词库”,并点击“执行该操作”,将用户词典导出到一个文件中(例如,名为sogou_userdict.txt),然后将这个文件拷贝到您的机器上(mac或linux),然后执行下面的操作:
$ python import_sogou_userdict.py sogou_userdict.txt
基本上,只要输入法提供导出用户词典的功能、且导出格式为文本文件的话,为sunpinyin实现一个导入小工具是很简单的(可参考已有的importer)。大家可以自行编写一个,欢迎您为常用的输入法编写一个导入工具哦 ![]()
那么搜狗官方网站上可供下载的细胞词库txt格式能不能导入?
因为版权的问题,我们提供的脚本建议只用于用户词典的导入 ...
问个比较笨的问题:当出现Please specify the QIM exported user dict file!时,我怎么选择,谢谢
@Marc,您的是紫光输入法还是?
@Marc,如果是QIM,可以参见上一篇blog
谢谢你,这太方便了。
但是对于外行来说,这个说明还是看不明白。不知道能不能解释的更详细一些。比如将拷贝过来的txt文档放在什么路径下,是不是运行你编写的那个importer就可以了?我尝试了下,但是没成功。
我现在有一个txt的sogou词库,我双击你给的那个sogou_userdict.py,但是被提示:Please specify the Sogou PinYin exported user dict file!
谢谢!
@Catholicon,拷贝过来的文件可以放到sunpinyin_importer目录下,请在Terminal程序中运行,python import_sogou_userdict.py sogou_userdict.txt,就可以了 ...
非常感谢,很好用的工具。
导入是,出现如下错误,是否可以帮助看一下呢?
File "import_sogou_userdict.py", line 28, in
main()
File "import_sogou_userdict.py", line 24, in main
sogou_user_dict = load_sogou_user_dict(sys.argv[1])
File "import_sogou_userdict.py", line 10, in load_sogou_user_dict
for l in f:
File "/usr/lib/python2.6/codecs.py", line 679, in next
return self.reader.next()
File "/usr/lib/python2.6/codecs.py", line 610, in next
line = self.readline()
File "/usr/lib/python2.6/codecs.py", line 525, in readline
data = self.read(readsize, firstline=True)
File "/usr/lib/python2.6/codecs.py", line 475, in read
newchars, decodedbytes = self.decode(data[:exc.start], self.errors)
File "/usr/lib/python2.6/encodings/utf_16.py", line 90, in decode
raise UnicodeError,"UTF-16 stream does not start with BOM"
@米迦勒 ,您导出的文件格式可能不是UTF-16编码的,在mac上可以用file命令查看这个文件的一些属性(可能包括编码信息)。您的sogou输入法是那个版本呢?是否导出的时候选择了save as成其他的编码格式呢?
你好,我按照你的介绍试了下,出现如下提示:(我的是ubuntu 10.04)
Traceback (most recent call last):
File "import_sogou_userdict.py", line 28, in
main()
File "import_sogou_userdict.py", line 25, in main
import_to_sunpinyin_user_dict (sogou_user_dict)
File "/home/zhiwei/Downloads/sunpinyin_importer/importer.py", line 26, in import_to_sunpinyin_user_dict
userdict_path = userdict_path if userdict_path else get_userdict_path()
File "/home/zhiwei/Downloads/sunpinyin_importer/importer.py", line 23, in get_userdict_path
raise "Can not detect sunpinyin's userdict!"
TypeError: exceptions must be old-style classes or derived from BaseException, not str
请问是有什么错误吗?
另外,导入词库后词序问题也解决了吗?
谢谢~~
@zhiwei, 貌似没有找到你的userdict的path,词典刚导入时是没有次序的 ...
@zhiwei, 导入脚本会尝试在下列目录中查找你的userdict
if os.path.exists (homedir+"/.cache/ibus/sunpinyin"):
return homedir+"/.cache/ibus/sunpinyin/userdict"
if os.path.exists (homedir+"/.ibus/sunpinyin"):
return homedir+"/.ibus/sunpinyin/userdict"
if os.path.exists (homedir+"/.sunpinyin"):
return homedir+"/.sunpinyin/userdict"
能否在你的home目录下查找一下userdict这个文件,并将路径告诉我一下?多谢!
不能导入细胞词库比较遗憾,sougou官方有txt下载,这里也有版权问题吗?
@arne sogou细胞词库的没有注音是个问题,我们会想办法解决注音的问题 ... 目前,可以找那些已经转换为google词库的细胞词库来导入 ...
我这里的问题是和米迦勒 一样,开始从windows拷过来的搜狗词库文件,是gb编码的,出错信息 :File "/home/ryan/src/sunpinyin/python/importer/imdict.py", line 47, in load
file = codecs.open(fname, 'r', 'utf-8')
File "/usr/lib/python2.6/codecs.py", line 870, in open
file = __builtin__.open(filename, mode, buffering)
IOError: [Errno 2] No such file or directory: 'dict.utf8'
转成utf-8的之后, File "/usr/lib/python2.6/encodings/utf_16.py", line 90, in decode
raise UnicodeError,"UTF-16 stream does not start with BOM"
UnicodeError: UTF-16 stream does not start with BO 又出这个错 。。。
不知道为什么会出这个问题 ,能解释一下吗?
@ryan,如果是gb编码,可以将file = codecs.open(fname, ‘r’, ‘utf-8′)中的'utf-8'改成'gb18030'试一试 ...
localhost:sunpinyin_importer apple$ python import_google_userdict.py whb.dic
Traceback (most recent call last):
File "import_google_userdict.py", line 33, in
main()
File "import_google_userdict.py", line 30, in main
import_to_sunpinyin_user_dict (google_user_dict)
File "/Users/apple/Downloads/sunpinyin_importer/importer.py", line 27, in import_to_sunpinyin_user_dict
db = sqlite.connect (userdict_path)
sqlite3.OperationalError: unable to open database file
@imcaptor,您可以先激活一下sunpinyin,然后userdict这个文件就应该被创建出来了。这个应该是我们的一个bug,会尽快修正 ...
@yongsun
搜狗细胞词库 scel 格式的是有注音的,虽然没有声调。文字部分是 UTF-16LE,只是词频部分不知道是什么数据。
@quark,非常感谢您提供的信息,scel格式有文档么,另外是否允许第三方使用呢?
scel 没有文档,但是有第三方黑箱分析结果:http://code.google.com/p/hslinuxextra/downloads/list,其中 scel 词频信息部分还没有完全分析明白。
基本上只能找到这句话:“细胞词库是搜狗首创的、开放共享、可在线升级的细分化词库的功能名称。 ”,大多数 scel 文件是网友制作的,不知道版权该怎样算。
我想第三方黑箱分析 scel 文件格式并提供相关接口是可以的,我用了这样的实现:
http://code.google.com/p/ibus-cloud-pinyin/source/browse/trunk/src/dbus-binding.vala?spec=svn129&r=103#142
@quark, 非常感谢!我回头好好研究一下您的代码
@quark,是否有兴趣也参与一下sunpinyin的开发呢?;)
@youngsun
兴趣是有,但是时间可能不够,做不了多少事情,暑假被 ACM 集训占满了 -.-
目前还有考试没结束...
@quark,无论何时有时间,都非常欢迎啊
@yongsun
id拼错了,sorry -.- 另外“您”这个称呼不习惯 -,-
我导入了搜狗词库. 整个过程没有任何错误. 于是我想验证一下是否导入成功.
我验证使用的方法, 和当年搜狗告google侵权的方法一样. 输入搜狗开放人员名字的拼音. 结果, sunpinyin没能拼出那几个人的名字. 但是搜狗可以.
这是导入的脚本有意屏蔽了那几个词, 还是没能完全导入呢?
@zhawei, 您导入的应该是sogou的用户词库,而非系统词库 ...
刚才看了一下, 确实是用户词库。 系统词库没看到可以导出的地方,请问有什么方法能把系统词库导出吗?
@zhawei,sogou好像没有提供导出系统词库的方法 ...
有可用的民间导出方法吗?
@zhawei, 貌似没有
我遇到了和Ryan一样的问题,也是第一次输入显示No such file or directory: ‘dict.utf8′,改为utf-8后则显示UnicodeError: UTF-16 stream does not start with BOM。我导出sogou词库的时候是默认的txt文件,没看见有编码选项,改编码是通过记事本/另存为utf-8的方式。不知道是哪一步做错了?谢谢!
@Victoria, 麻烦你试一下最新的导入工具,且导出后不要修改编码类型?如果还是有问题,麻烦您将您的用户词库的一个sample发给我,例如在mac上用head -n 20 xxx.dic > sample.dic ...
您好!感谢您所在团队开发的sunpinyin !
我在ubuntu下,sunpinyin是从pad的ibus-dev源中直接下载安装的
我下载了这个最新的importer。
http://code.google.com/p/sunpinyin/downloads/detail?name=sunpinyin_importer.tar.bz2&can=2&q=
但是importer程序运行中说:
找不到 /usr/lib/sunpinyin/data/pydict_sc.bin
我自建一个空文件不成,于是搜索了一下,在
http://src.opensolaris.org/source/xref/nv-g11n/inputmethod/sunpinyin/ime/data/
下载到 一个 pydict_sc.bin.be 一个.le
我是小白,不知道是不是应该用这两个中的一个?我直接选了big endian的。
运行importer后没有任何提示,不知道是否成功。
请问这样子正确吗?
或者如果不正确,需要怎样逆向操作来挽回它,然后进行正确的导入?
谢谢
ls问题已解决! 抱歉!
看来是我之前是添加ibus-dev源的 2.0 rc8版本 还没有 /usr/lib/sunpinyin/data/pydic_sc.bin 这个文件
自己按照 http://www.openboy.net/linux-ubuntu-input-sunpinyin.html 还有google code页说明编译了一遍(ibus,使用了 --prefix=/usr )
然后去看那个目录,直接有了。
多谢博主之前的回复:yongsun says:
June 11, 2010 at 11:38 pm
@ryan,如果是gb编码,可以将file = codecs.open(fname, ‘r’, ‘utf-8′)中的’utf-8′改成’gb18030′试一试 …
通过此方法我已成功导入词库。
而且发现第二次导入(使用 http://code.google.com/p/sunpinyin/downloads/detail?name=sunpinyin_importer.tar.bz2&can=2&q= 昨天刚刚更新的单独importer包)比第一次导入(使用源代码包内的importer)要快很多,
不知道是代码问题,还是因为之前我使用的pydict_sc.bin不正确,才会这么快。
再次感谢这么好的输入法
~$ python import_sogou_userdict.py sogou_userdict.txt
python: can't open file 'import_sogou_userdict.py': [Errno 2] No such file or directory
请问这是什么原因?
接上面问题,我如果在 import_sogou_userdict.py 前加入其所在目录是否可以?
或者将解压的sunpinyin_importer文件夹里面的 import_sogou_userdict.py 右击 选择”运行“或”在终端运行“?这样可否?
@oliverty,请在终端上cd到有python脚本的那个目录,并且将sogou_userdict.txt也放在相同的目录下…
运行后我顿时震惊了
一大堆的"is too long or too short for sunpinyin userdict"
究竟是长还是短呢,能大能小么:-)
@xlctemp SunPinyin的用户词典支持2~6个音节长度的词条,如果导入输入法的用户词典,有小于2或者大于6的词条时,就会报告这个警告…