【搜狗&百度词库】.bdict文件与.scel转txt

0.背景
  • 论文提及关键词提取,需要优化分词效果,为此需要领域词典。
  • 但是搜狗和百度下载下来的词典文件无法直接处理,需要转为txt。
1.搜狗词库和百度词库
  • https://pinyin.sogou.com/dict/
  • https://shurufa.baidu.com/dict_list
2.搜狗词库文件.scel转.txt
  • 在线工具-亲测有效:http://tools.bugscaner.com/sceltotxt/
3.百度词库文件.bdict转.txt
  • Python实现
import struct
import binascii
 
class Baidu(object):
    def __init__(self, originfile):
        self.originfile = originfile
        self.lefile = originfile + '.le'
        self.txtfile = originfile[0:(originfile.__len__()-5)] + 'txt'
        self.buf = [b'0' for x in range(0,2)]
        self.listwords = [] 
    # 字节流大端转小端
    def be2le(self):
        of = open(self.originfile,'rb')
        lef = open(self.lefile, 'wb')
        contents = of.read()
        contents_size = contents.__len__()
        mo_size = (contents_size % 2)
        # 保证是偶数
        if mo_size > 0:
            contents_size += (2-mo_size)
            contents += contents + b'0000'
        # 大小端交换
        for i in range(0, contents_size, 2):
            self.buf[1] = contents[i]
            self.buf[0] = contents[i+1]
            le_bytes = struct.pack('2B', self.buf[0], self.buf[1])
            lef.write(le_bytes)
        print('写入成功转为小端的字节流')
        of.close()
        lef.close()
    def le2txt(self):
        lef = open(self.lefile, 'rb')
        txtf = open(self.txtfile, 'w')
        # 以字符串形式读取转成小端后的字节流,百度词典的起始位置为0x350
        le_bytes = lef.read().hex()[0x350:]
        i = 0
        while i<len(le_bytes):
            result = le_bytes[i:i+4]
            i+=4
            # 将所有字符解码成汉字,拼音或字符
            content = binascii.a2b_hex(result).decode('utf-16-be')
            # 判断汉字
            if '\u4e00' <= content <= '\u9fff':
                self.listwords.append(content)
            else:
                if self.listwords:
                    word = ''.join(self.listwords)
                    txtf.write(word + '\n')
                self.listwords = []
        print('写入txt成功')
        lef.close()
        txtf.close()
if __name__ == '__main__':
    path = '你的.bdict文件'
    bd = Baidu(path)
    bd.be2le()
    bd.le2txt()
4.参考文献
  • https://blog.csdn.net/qiuwen_521/article/details/122056981
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
输入法词库换, 基于C#开发,所以电脑上必须安装.Net Framework 2.0才能正常运行,如果双击“深蓝词库换.exe”后弹出错误窗口,请下载安装.Net Framework 2.0再试。 1.1版支持搜狗的细胞词库scel格式)的换,您可以到搜狗网站下载细胞词库导入到您其他输入法或者手机输入法中! QQ的分类词库格式还没有研究出来怎么解析。 1.2版支持了紫光拼音输入法和拼音加加输入法的词库导入导出功能。增加了批量导入的功能。修复了有些scel格式词库导入时报错。 1.3版增强了多音字注音功能和外挂多音字注音词库功能,另外还提供了直接导出而不显示换结果的选项。 1.3.1版增加了对新浪拼音输入法的支持。 1.4版增加了对触宝输入法的支持,增加了拖拽功能。 1.5版增加了百度分类词库bdict格式的换,增加了命令行调用功能。 1.6版修改了搜狗细胞词库解析和QQ手机词库解析的函数,支持最新格式。 1.7版增加了梦寐已久的QQ分类词库(qpyd格式)的换,调整了下拉列表的顺序,增加了拖拽文件时的文件类型自动识别等功能。 1.8版增加了自定义编码的输出,增强了命令行功能,请使用-?查看命令行帮助。实现了百度手机分类词库(bcd格式)、小小输入法和微软拼音输入法的词库功能,但是可能由于输入法的原因,会导入失败。 1.9版增加了微软英库拼音输入法、FIT输入法、搜狗Bin格式备份词库、中州韵(小狼毫、鼠须管)、各种常用五笔输入法的支持,增加词库文件分割功能。 2.0版支持多种编码的Rime输入法,支持多种编码的小小输入法,增加了对灵格斯ld2词典格式的支持和英语词库支持,增加了简繁体换功能,增加了对雅虎奇摩输入法、仓颉平台的支持,增强了对各五笔和郑码输入法的支持,同时优化了内部代码,增强自定义规则的功能。 如果还有更多的词库需要换,或者对该词库换工具有什么建议,请联系:[email protected] 博客:http://studyzy.cnblogs.com 新浪微博:http://weibo.com/studyzy 深蓝词库换的微博:http://weibo.com/imewlconverter

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值