Linux下ibus输入法词库扩展
文章目录
- 一、骡子
- 二、直接上教程
- 三、目前支持的词汇(如果你找到了比较全的词库,希望能够得到你的分享)
- 四、补充:自己添加词库
Linux下ibus输入法词库扩展
一、骡子
面向百度编程已经给出了很多方法,但是都没有把真正的资源给你,都是链接到国外网站 国外ibus词库下载地址;国外网站很慢,甚至访问不了。然后某些地方虽然给出了下载的文件,但是要付出代价,比如某SDN下载。
二、直接上教程
到我的码云:https://gitee.com/mr_allen/ibus-thesaurus.git下载里面的文件(如果不能访问可以留言或私信我,看到会第一时间回复),只要
local.db
的文件就可以了。下载完了直接复制到输入法路径下,我的路径是这个
/usr/share/ibus-libpinyin/db
(没添加之前没有local.db文件)
然后重启一下
ibus
输入法,重启方式如下(不行的就重启系统):ibus-daemon -d -x -r
然后能打出弗雷德霍姆行列式
就是成功了。这个词库只是比较常用的,如果需要更丰富的,可以自己去找一下。
三、目前支持的词汇(如果你找到了比较全的词库,希望能够得到你的分享)
词库包括以下部分:成语大全
诗词精选
网络用语
名人词库
名人名言
美食大全
股票基金
计算机
流行歌曲
动漫大全
四、补充:自己添加词库
下载:
首先到搜狗输入法官方https://pinyin.sogou.com/dict/cate/index/97?rf=dictindex下载词库,下载后文件是以.scel
结尾的文件。转换:
这时就需要将搜狗的词库导出生成新的.txt
文档或者直接.db
的文档。粘贴复制:
方法同上,将你新生成的词库合并到之前local.db
的词库里面。重启输入法:
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输入法词库扩展相关推荐
- bat 等待输入_深蓝词库转换 - 简单的输入法词库转换工具
深蓝词库转换 是一款 输入法词库转换 软件,支持包括 搜狗拼音.QQ拼音.Windows 10 微软拼音 在内的超过 20 种的输入法工具和词库.该程序支持 批量转换(一次拖拽多个词库文件,或者按住 ...
- linux输入法大小,推荐linux下的输入法--五笔+拼音
推荐linux下的输入法--五笔+拼音 (2012-03-19 15:35:57) 标签: yum 输入法 repo ibus wubi pinyin 杂谈 在linux下,输入法问题曾经困扰过我一段 ...
- 搜狗细胞词库-fcitxibus拼音输入法词库
http://code.google.com/p/hslinuxextra/downloads/list 上面的地址中,增加了三个词库文件和工程的源代码,有兴趣的同学可以自己去搞搞. 三个词库文件分别 ...
- Linux下的静态链接库和动态链接库编程
Linux下的静态链接库和动态链接库编程 参考: Linux下的静态链接库和动态链接库编程 - Histring - 博客园 Mac下静态库和动态库的创建和使用_C/C++_vincent2610的专 ...
- 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 ...
- linux php curl扩展下载,linux下为php添加curl扩展的方法
linux下为php添加curl扩展的方法 发布于 2014-12-19 18:36:10 | 106 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...
- MiniGUI输入法词库更新
前言 MiniGUI中的输入法libmgi支持拼音输入,但是怎么进行个性化定制呢,比如想更换键盘皮肤,往词库里添加一些新的词组,下面这篇文章详细描述怎么添加新词 1. 词库文件构成 在libmgi中, ...
- 搜狗拼音输入法词库是怎样炼成的
搜狗输入法小组词库开发工程师 吕杰勇 转载此文请注明来自搜狗输入法官方博客,务必保留原始链接:http://pinyin.blog.sohu.com/41063494.html 众所周知,搜狗输入法在 ...
- Linux下的静态链接库和动态链接库
Linux下的静态链接库和动态链接库 零.链接库概述 Linux下得库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀.面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数, ...
最新文章
- python教程:15种字符串操作方法
- 宜搭数字工厂,让订单周期缩减三分之一
- 初识组织社会学(part1)--勉为其难,不如顺其自然,在力所能及的层次上研究、解释问题
- mysql-bin.index找不到_MySQL不能启动 mysql-bin.index' not found (Errcode: 13)
- 双向带环带头结点的链表实现栈
- 安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】
- 求Fibonacc数列中大于t(t3)的最小一个数 例 带入1000输出1597
- endnote修改正文中参考文献标注_如何用Endnote在论文中插入参考文献
- Nginx 架构——【核心流程+模块介绍】
- jQuery焦点图轮播slide插件
- 音频HiFi的二三事
- 生成验证码时,验证码图片不显示,报错信息如下:Can‘t create output stream;Can‘t create cache file
- python连接高斯数据库_高斯数据库 (gaussDB) - 连接数据库(6)
- 拼多多校招的三道笔试题
- 汤姆斯的天堂梦_NOI导刊2010提高(05)【洛谷P1796】
- 决定个人成败的关键---自我管理能力
- 创建西游记类,实例化猪八戒和孙悟空
- 学习记录:TIM—基本定时器
- 谈谈蓝牙跳频技术解决方案
- 记一次磁盘扩容失败并恢复
热门文章
- 女程序员的成长记录第一站
- 盲盒市场降温,“泡泡玛特”们如何建起护城河?
- Ubuntu 系统 OpenCV 4 无法打开视频文件解决方案
- CTR预估AUC=0.99问题记录
- 潘凯:C++对象布局及多态实现的探索(七)
- 编程示例:表格程序开发的EXCEL方法,以二维码的数据容量计算为例
- 第五章——决策树笔记(《统计学习方法》-李航)
- 赋能全栈软件,开源软件协调,我对英特尔有了全新认知
- ThinkPHP集成支付宝担保支付
- 【Web开发】Python实现Web服务器(Tornado+flask+nginx)