文章目录

  • 一、骡子
  • 二、直接上教程
  • 三、目前支持的词汇(如果你找到了比较全的词库,希望能够得到你的分享)
  • 四、补充:自己添加词库

Linux下ibus输入法词库扩展

一、骡子

面向百度编程已经给出了很多方法,但是都没有把真正的资源给你,都是链接到国外网站 国外ibus词库下载地址;国外网站很慢,甚至访问不了。然后某些地方虽然给出了下载的文件,但是要付出代价,比如某SDN下载。

二、直接上教程

  1. 到我的码云:https://gitee.com/mr_allen/ibus-thesaurus.git下载里面的文件(如果不能访问可以留言或私信我,看到会第一时间回复),只要local.db的文件就可以了。

  2. 下载完了直接复制到输入法路径下,我的路径是这个/usr/share/ibus-libpinyin/db(没添加之前没有local.db文件)

  3. 然后重启一下ibus输入法,重启方式如下(不行的就重启系统):

    ibus-daemon -d -x -r
    

然后能打出弗雷德霍姆行列式就是成功了。这个词库只是比较常用的,如果需要更丰富的,可以自己去找一下。

三、目前支持的词汇(如果你找到了比较全的词库,希望能够得到你的分享)

词库包括以下部分:成语大全
诗词精选
网络用语
名人词库
名人名言
美食大全
股票基金
计算机
流行歌曲
动漫大全

四、补充:自己添加词库

  1. 下载:首先到搜狗输入法官方https://pinyin.sogou.com/dict/cate/index/97?rf=dictindex下载词库,下载后文件是以.scel结尾的文件。
  2. 转换:这时就需要将搜狗的词库导出生成新的.txt文档或者直接.db的文档。
  3. 粘贴复制:方法同上,将你新生成的词库合并到之前local.db的词库里面。
  4. 重启输入法:
    ibus-daemon -d -x -r
    

生成代码如下:

注:下面代码在其他大佬博客上找的,因为我的Linux词库需要的格式是打工人 da'gong'ren这样的
所以在代码的getWordPy接口做了判断,增加'符号。不需要的可删掉,其他的不多叙述,可自行阅读代码更改

#!/usr/bin/python
# -*- coding: utf-8 -*-import struct
import sys
import binascii
import pdb# 搜狗的scel词库就是保存的文本的unicode编码,每两个字节一个字符(中文汉字或者英文字母)
# 找出其每部分的偏移位置即可
# 主要两部分
# 1.全局拼音表,貌似是所有的拼音组合,字典序
#       格式为(index,len,pinyin)的列表
#       index: 两个字节的整数 代表这个拼音的索引
#       len: 两个字节的整数 拼音的字节长度
#       pinyin: 当前的拼音,每个字符两个字节,总长len
#
# 2.汉语词组表
#       格式为(same,py_table_len,py_table,{word_len,word,ext_len,ext})的一个列表
#       same: 两个字节 整数 同音词数量
#       py_table_len:  两个字节 整数
#       py_table: 整数列表,每个整数两个字节,每个整数代表一个拼音的索引
#
#       word_len:两个字节 整数 代表中文词组字节数长度
#       word: 中文词组,每个中文汉字两个字节,总长度word_len
#       ext_len: 两个字节 整数 代表扩展信息的长度,好像都是10
#       ext: 扩展信息 前两个字节是一个整数(不知道是不是词频) 后八个字节全是0
#
#      {word_len,word,ext_len,ext} 一共重复same次 同音词 相同拼音表# 拼音表偏移,
startPy = 0x1540# 汉语词组表偏移
startChinese = 0x2628# 全局拼音表GPy_Table = {}# 解析结果
# 元组(词频,拼音,中文词组)的列表
GTable = []def byte2str(data):'''将原始字节码转为字符串'''i = 0length = len(data)ret = u''while i < length:x = data[i:i+2]t =  chr(struct.unpack('H', x)[0])if t == u'\r':ret += u'\n'elif t != u' ':ret += ti += 2return ret# 获取拼音表
def getPyTable(data):if data[0:4] != bytes(map(ord,"\x9D\x01\x00\x00")):return Nonedata = data[4:]pos = 0length = len(data)while pos < length:index = struct.unpack('H', data[pos:pos +2])[0]# print index,pos += 2l = struct.unpack('H', data[pos:pos + 2])[0]# print l,pos += 2py = byte2str(data[pos:pos + l])# print pyGPy_Table[index] = pypos += l# 获取一个词组的拼音
def getWordPy(data):pos = 0length = len(data)ret = u''while pos < length:if pos>0: #在每个拼音之间插入字符'做分割,如果你的输入法词库不需要这种格式可删掉ret += "'"index = struct.unpack('H', data[pos:pos + 2])[0]ret += GPy_Table[index]pos += 2return ret# 获取一个词组
def getWord(data):pos = 0length = len(data)ret = u''while pos < length:index = struct.unpack('H', data[pos:pos +2])[0]ret += GPy_Table[index]pos += 2return ret# 读取中文表
def getChinese(data):# import pdb# pdb.set_trace()pos = 0length = len(data)while pos < length:# 同音词数量same = struct.unpack('H', data[pos:pos + 2])[0]# print '[same]:',same,# 拼音索引表长度pos += 2py_table_len = struct.unpack('H', data[pos:pos + 2])[0]# 拼音索引表pos += 2py = getWordPy(data[pos: pos + py_table_len])# 中文词组pos += py_table_lenfor i in range(same):# 中文词组长度c_len = struct.unpack('H', data[pos:pos +2])[0]# 中文词组pos += 2word = byte2str(data[pos: pos + c_len])# 扩展数据长度pos += c_lenext_len = struct.unpack('H', data[pos:pos +2])[0]# 词频pos += 2count = struct.unpack('H', data[pos:pos +2])[0]# 保存GTable.append((count, py, word))# 到下个词的偏移位置pos += ext_lendef deal(file_name):print('-' * 60)f = open(file_name, 'rb')data = f.read()f.close()if data[0:12] != bytes(map(ord,"\x40\x15\x00\x00\x44\x43\x53\x01\x01\x00\x00\x00")):print("确认你选择的是搜狗(.scel)词库?")sys.exit(0)# pdb.set_trace()print("词库名:", byte2str(data[0x130:0x338]))  # .encode('GB18030')print("词库类型:", byte2str(data[0x338:0x540]))  # .encode('GB18030')print("描述信息:", byte2str(data[0x540:0xd40]))  # .encode('GB18030')print("词库示例:", byte2str(data[0xd40:startPy]) ) # .encode('GB18030')getPyTable(data[startPy:startChinese])getChinese(data[startChinese:])if __name__ == '__main__':# 将要转换的词库添加在这里就可以了o = ['helloword.scel']for f in o:deal(f)# 保存结果f = open('local.db', 'w')for count, py, word in GTable:# GTable保存着结果,是一个列表,每个元素是一个元组(词频,拼音,中文词组),有需要的话可以保存成自己需要个格式# 我没排序,所以结果是按照上面输入文件的顺序# print(count,py,word)# f.write((('{%(count)s}' % {'count': count} + py + ' ' + word)))  # 最终保存文件的编码,可以自给改f.write(( word + ' ' + py))  # 最终保存文件的编码,可以自给改f.write('\n')f.close()

Linux下ibus输入法词库扩展相关推荐

  1. bat 等待输入_深蓝词库转换 - 简单的输入法词库转换工具

    深蓝词库转换 是一款 输入法词库转换 软件,支持包括 搜狗拼音.QQ拼音.Windows 10 微软拼音 在内的超过 20 种的输入法工具和词库.该程序支持 批量转换(一次拖拽多个词库文件,或者按住 ...

  2. linux输入法大小,推荐linux下的输入法--五笔+拼音

    推荐linux下的输入法--五笔+拼音 (2012-03-19 15:35:57) 标签: yum 输入法 repo ibus wubi pinyin 杂谈 在linux下,输入法问题曾经困扰过我一段 ...

  3. 搜狗细胞词库-fcitxibus拼音输入法词库

    http://code.google.com/p/hslinuxextra/downloads/list 上面的地址中,增加了三个词库文件和工程的源代码,有兴趣的同学可以自己去搞搞. 三个词库文件分别 ...

  4. Linux下的静态链接库和动态链接库编程

    Linux下的静态链接库和动态链接库编程 参考: Linux下的静态链接库和动态链接库编程 - Histring - 博客园 Mac下静态库和动态库的创建和使用_C/C++_vincent2610的专 ...

  5. linux如何编译boost指定库,linux下编译安装boost库

    linux下编译安装boost库 先看一下系统环境 Linux o-pc 3.19.0-22-generic #22-Ubuntu SMP Tue Jun 16 17:15:15 UTC 2015 x ...

  6. linux php curl扩展下载,linux下为php添加curl扩展的方法

    linux下为php添加curl扩展的方法 发布于 2014-12-19 18:36:10 | 106 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

  7. MiniGUI输入法词库更新

    前言 MiniGUI中的输入法libmgi支持拼音输入,但是怎么进行个性化定制呢,比如想更换键盘皮肤,往词库里添加一些新的词组,下面这篇文章详细描述怎么添加新词 1. 词库文件构成 在libmgi中, ...

  8. 搜狗拼音输入法词库是怎样炼成的

    搜狗输入法小组词库开发工程师 吕杰勇 转载此文请注明来自搜狗输入法官方博客,务必保留原始链接:http://pinyin.blog.sohu.com/41063494.html 众所周知,搜狗输入法在 ...

  9. Linux下的静态链接库和动态链接库

    Linux下的静态链接库和动态链接库 零.链接库概述 Linux下得库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀.面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数, ...

最新文章

  1. python教程:15种字符串操作方法
  2. 宜搭数字工厂,让订单周期缩减三分之一
  3. 初识组织社会学(part1)--勉为其难,不如顺其自然,在力所能及的层次上研究、解释问题
  4. mysql-bin.index找不到_MySQL不能启动 mysql-bin.index' not found (Errcode: 13)
  5. 双向带环带头结点的链表实现栈
  6. 安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】
  7. 求Fibonacc数列中大于t(t3)的最小一个数 例 带入1000输出1597
  8. endnote修改正文中参考文献标注_如何用Endnote在论文中插入参考文献
  9. Nginx 架构——【核心流程+模块介绍】
  10. jQuery焦点图轮播slide插件
  11. 音频HiFi的二三事
  12. 生成验证码时,验证码图片不显示,报错信息如下:Can‘t create output stream;Can‘t create cache file
  13. python连接高斯数据库_高斯数据库 (gaussDB) - 连接数据库(6)
  14. 拼多多校招的三道笔试题
  15. 汤姆斯的天堂梦_NOI导刊2010提高(05)【洛谷P1796】
  16. 决定个人成败的关键---自我管理能力
  17. 创建西游记类,实例化猪八戒和孙悟空
  18. 学习记录:TIM—基本定时器
  19. 谈谈蓝牙跳频技术解决方案
  20. 记一次磁盘扩容失败并恢复

热门文章

  1. 女程序员的成长记录第一站
  2. 盲盒市场降温,“泡泡玛特”们如何建起护城河?
  3. Ubuntu 系统 OpenCV 4 无法打开视频文件解决方案
  4. CTR预估AUC=0.99问题记录
  5. 潘凯:C++对象布局及多态实现的探索(七)
  6. 编程示例:表格程序开发的EXCEL方法,以二维码的数据容量计算为例
  7. 第五章——决策树笔记(《统计学习方法》-李航)
  8. 赋能全栈软件,开源软件协调,我对英特尔有了全新认知
  9. ThinkPHP集成支付宝担保支付
  10. 【Web开发】Python实现Web服务器(Tornado+flask+nginx)