资源简介
scel2txt.py
代码片段和文件信息
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#
# @Version : 1.0
# @Time : 2018/8/17
# @Author : 圈圈烃
# @File : scel2txt.py
# @Description: 将搜狗的词库.scel文件转化为.txt文件
# 本人在之前作者的基础上进行了部分修改
# 添加了单个文件转化函数single_file()
# 添加了多个文件转化函数batch_file()
#
import struct
import os
############################################################################
# 第二原作者
# 由于原代码不适用python3且有大量bug
# 以及有函数没有必要使用且一些代码书写不太规范或冗余
# 所以本人在原有的大框架基本不动的情况下作了大量的细节更改
# 使得没有乱码出现,文件夹导入更方便等等
# Author:Ling Yue Taiyuan U of Tech
# Blog: http://blog.yueling.me
############################################################################
# 原作者:
# 搜狗的scel词库就是保存的文本的unicode编码,每两个字节一个字符(中文汉字或者英文字母)
# 找出其每部分的偏移位置即可
# 主要两部分
# 1.全局拼音表,貌似是所有的拼音组合,字典序
# 格式为(indexlenpinyin)的列表
# index: 两个字节的整数 代表这个拼音的索引
# len: 两个字节的整数 拼音的字节长度
# pinyin: 当前的拼音,每个字符两个字节,总长len
#
# 2.汉语词组表
# 格式为(samepy_table_lenpy_table{word_lenwordext_lenext})的一个列表
# same: 两个字节 整数 同音词数量
# py_table_len: 两个字节 整数
# py_table: 整数列表,每个整数两个字节每个整数代表一个拼音的索引
#
# word_len:两个字节 整数 代表中文词组字节数长度
# word: 中文词组每个中文汉字两个字节,总长度word_len
# ext_len: 两个字节 整数 代表扩展信息的长度,好像都是10
# ext: 扩展信息 前两个字节是一个整数(不知道是不是词频) 后八个字节全是0
#
# {word_lenwordext_lenext} 一共重复same次 同音词 相同拼音表
#############################################################################
# 拼音表偏移
startPy = 0x1540;
# 汉语词组表偏移
startChinese = 0x2628;
# 全局拼音表
GPy_Table = {}
# 解析结果
# 元组(词频拼音中文词组)的列表
GTable = []
def byte2str(data):
“““
原始字节码转为字符串
:param data:
:return:
“““
pos = 0
str = ‘‘
while pos < len(data):
c = chr(struct.unpack(‘H‘ bytes([data[pos] data[pos + 1]]))[0])
if c != chr(0):
str += c
pos += 2
return str
def getPyTable(data):
“““
获取拼音表
:param data:
:return:
“““
data = data[4:]
pos = 0
while pos < len(data):
index = struct.unpack(‘H‘ bytes([data[pos] data[pos + 1]]))[0]
pos += 2
lenPy = struct.unpack(‘H‘ bytes([data[pos] data[pos + 1]]))[0]
pos += 2
py = byte2str(data[pos:pos + lenPy])
GPy_Table[index] = py
pos += lenPy
def getWordPy(data):
“““
获取一个词组的拼音
:param data:
:return:
“““
pos = 0
ret = ‘‘
while pos < len(data):
index = struct.unpack(‘H‘ bytes([data[pos] data[pos + 1]]))[0]
ret += GPy_Table[index]
相关资源
- python+ selenium教程
- 英文原版-Scientific Computing with Python
- CpuMemSets在Linux操作系统中的实现
- Python学习全系列教程永久可用
- 蓝奏云批量上传工具.zip
- python书籍 PDF
- 老男孩python项目实战
- Python.rar99111
- decision_tree_v2.py
- Python绝技运用Python成为顶级黑客.pdf
- python小波包文档及论文.zip
- Python黑帽子(黑客与渗透测试编程之
- FlaskWeb开发:基于Python的Web应用开发实
- Python基础教程第3版中英文源码.rar
- python数据结构与算法中文版.zip
- Python-冲顶大会芝士超人西瓜视频头脑
- time_series_forecasting_with_python.zip
- Python基础教程第三版PDF高清可复制.
- python编程从入门到实践.zip237878
- FlaskWeb开发:Python基于Web应用开发实战
- pythonBCRMDSJ.mobi
- 量化交易之路用Python做股票量化分析
- PYTHON自然语言处理中文版.pdf
- Python基础教程(第3版).rar
- GRAYHATPYTHON高清.英文.书签版.pdf
- Python简明教程第四版.rar
- Python编程:从入门到实践带书签完整
- Python基础教程(第3版).pdf109608
- vamei-从Python开始学编程.pdf
- 利用Python进行数据分析.pdf
评论
共有 条评论