91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.01M
    文件類型: .py
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-13
  • 語言: Python
  • 標簽: 其他??

資源簡介

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?????????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?????????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?????????index?=?struct.unpack(‘H‘?bytes([data[pos]?data[pos?+?1]]))[0]
????????ret?+=?GPy_Table[index]

評論

共有 條評論