爬取词库,使用jieba分词库,自定义dict.txt文件+将搜狗词库.scel文件为.txt文件

一:爬取词库,使用jieba分词库,自定义dict.txt文件

import jiebafrom urllib.request import urlopen
from bs4 import BeautifulSoup# 来源于地图搜索数据,按照网民输入习惯精心筛选使用较多的词条。包含城市地名、公交、购物、餐饮、楼盘等各种信息,适合本地区网友使用
url = "http://search.qinggl.com/dict-3687.html"
html = urlopen(url).read().decode('utf-8')
soup = BeautifulSoup(html, features='lxml')
urls = soup.find_all("div", {"id": "box-new","class":"wordbox basic"})
print(urls)
print(type(urls))
x = str(urls)
x = x.replace("><span>","")
x = x.replace("<span>","")
x = x.replace("</span","\n")
x = x.replace("></div>","")
x = x.split("\n")
x = x[1:]
x.pop()
print(len(x))
print(x)jieba.load_userdict("./dict.txt")
word_list = jieba.cut("我今天不处理逾期信用贷款,因为成都木材防腐厂根本打不开.我几天想去语过添情网吧开心happy一下。")
print("|".join(word_list))
# #D:\anacoda\envs\nlp\Lib\site-packages\jieba

二:将搜狗词库.scel文件为.txt文件

# -*- coding: utf-8 -*-
import struct
import os# 主要两部分
# 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 = {}# 解析结果
# 元组(词频,拼音,中文词组)的列表# 原始字节码转为字符串
def byte2str(data):pos = 0str = ''while pos < len(data):c = chr(struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0])if c != chr(0):str += cpos += 2return str# 获取拼音表
def getPyTable(data):data = data[4:]pos = 0while pos < len(data):index = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]pos += 2lenPy = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]pos += 2py = byte2str(data[pos:pos + lenPy])GPy_Table[index] = pypos += lenPy# 获取一个词组的拼音
def getWordPy(data):pos = 0ret = ''while pos < len(data):index = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]ret += GPy_Table[index]pos += 2return ret# 读取中文表
def getChinese(data):GTable = []pos = 0while pos < len(data):# 同音词数量same = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 拼音索引表长度pos += 2py_table_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 拼音索引表pos += 2py = getWordPy(data[pos: pos + py_table_len])# 中文词组pos += py_table_lenfor i in range(same):# 中文词组长度c_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 中文词组pos += 2word = byte2str(data[pos: pos + c_len])# 扩展数据长度pos += c_lenext_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 词频pos += 2count = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 保存GTable.append((count, py, word))# 到下个词的偏移位置pos += ext_lenreturn GTabledef scel2txt(file_name):print('-' * 60)with open(file_name, 'rb') as f:data = f.read()print("词库名:", byte2str(data[0x130:0x338]))  # .encode('GB18030')print("词库类型:", byte2str(data[0x338:0x540]))print("描述信息:", byte2str(data[0x540:0xd40]))print("词库示例:", byte2str(data[0xd40:startPy]))getPyTable(data[startPy:startChinese])getChinese(data[startChinese:])return getChinese(data[startChinese:])#scel2txt(.ChengDuInformationWord.scel)if __name__ == '__main__':# scel所在文件夹路径in_path = r"D:\InternetOffice\code"# 输出词典所在文件夹路径out_path = r"D:\InternetOffice\code"#fname = "ChengDuInformationWord.scel"fin = [fname for fname in os.listdir(in_path) if fname[-5:] == ".scel"]for f in fin:try:for word in scel2txt(os.path.join(in_path, f)):file_path = (os.path.join(out_path, str(f).split('.')[0] + '.txt'))# 保存结果with open(file_path, 'a+', encoding='utf-8')as file:file.write(word[2] + '\n')os.remove(os.path.join(in_path, f))except Exception as e:print(e)pass

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

尊敬的读者&#xff1a; 网络安全是当今数字时代的一大挑战&#xff0c;各种勒索病毒如.halo病毒层出不穷&#xff0c;对用户和企业的数据安全构成了严重威胁。本文将介绍.halo勒索病毒&#xff0c;以及如何恢复被其加密的数据文件&#xff0c;同时提供预防措施。在面对被勒索…

阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略

常见性能优化策略分类 1.代码 之所以把代码放到第一位&#xff0c;是因为这一点最容易引起技术人员的忽视。很多技术人员拿到一个性能优化的需求以后&#xff0c;言必称缓存、异步、JVM等。实际上&#xff0c;第一步就应该是分析相关的代码&#xff0c;找出相应的瓶颈&#xf…

周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题...

近年来&#xff0c;机器学习技术的快速发展推动了语音、自然语言处理、机器视觉等多个领域获得巨大进步&#xff0c;也带动了人工智能相关产业的蓬勃发展。回顾机器学习最近30 年的发展历程&#xff0c;各种学习方法推陈出新、不断演进。但是&#xff0c;在此历程中&#xff0c…

Redis常用数据类型的数据结构

文章目录1. Redis 数据库介绍2. 列表&#xff08;list&#xff09;3. 字典&#xff08;hash&#xff09;4. 集合&#xff08;set&#xff09;5. 有序集合&#xff08;sortedset&#xff09;6. 数据结构持久化7. 总结1. Redis 数据库介绍 Redis 是一种键值&#xff08; Key-Val…

python 异常处理相关说明

Python异常及处理方法总结&#xff1a; https://blog.csdn.net/polyhedronx/article/details/81589196?depth_1- .tar(是打包操作&#xff0c;不是压缩&#xff09; 解包&#xff1a;tar -xvf FileName.tar 打包&#xff1a;tar -cvf FileName.tar DirName —————————…

论文浅尝 | 使用循环神经网络的联合事件抽取

余博涛&#xff0c;南京大学计算机科学与技术系&#xff0c;硕士研究生论文连接&#xff1a;http://www.aclweb.org/anthology/N16-1034发表会议&#xff1a;NAACL-HLT 2016摘要事件抽取&#xff08;event extraction&#xff09;是信息抽取中一个特别具有挑战性的问题。针对该…

阿里P8架构师谈:Web前端、应用服务器、数据库SQL等性能优化总结

web前端性能优化 Web前端指网站业务逻辑之前的部分&#xff0c;包括&#xff1a; 1.浏览器加载 2.网站视图模型 3.图片服务 4.CDN服务等 主要优化手段有优化浏览器访问&#xff0c;使用反向代理&#xff0c;CDN等。 1.浏览器访问优化 &#xff08;1&#xff09;减少http…

决策树(西瓜书学习)

算法是死的&#xff0c;思想才是活的&#xff01; 1. 基本流程 决策树&#xff08;decision tree&#xff09;&#xff1a;一般的&#xff0c;一棵决策树包含一个根结点、若干个内部结点和若干个叶结点&#xff1b;叶结点对应于决策结果&#xff0c;其他每个结点则对应于一个…

动手做个DialoGPT:生成式多轮对话模型

文 | 苏剑林编 | 兔子酱前段时间刷Arixv的时候&#xff0c;发现清华大学开源了一个大规模的中文闲聊语料库LCCC&#xff0c;从开源的文件上来看&#xff0c;这可能是目前开源的数量最大、质量最好的闲聊语料库了&#xff0c;而且还包含了部分多轮对话聊天&#xff0c;总的来说可…

搜索引擎背后的数据结构和算法

文章目录1. 整体系统介绍2. 搜集2.1 待爬取网页链接文件&#xff1a;links.bin2.2 网页判重文件&#xff1a;bloom_filter.bin2.3 原始网页存储文件&#xff1a;doc_raw.bin2.4 网页链接及其编号的对应文件&#xff1a;doc_id.bin3. 分析3.1 抽取网页文本信息3.2 分词并创建临时…

mysql: order by, group by ,having, select, where 执行 顺序

where&#xff1a;数据库中常用的是where关键字&#xff0c;用于在初始表中筛选查询。它是一个约束声明&#xff0c;用于约束数据&#xff0c;在返回结果集之前起作用。 group by:对select查询出来的结果集按照某个字段或者表达式进行分组&#xff0c;获得一组组的集合&#x…

论文浅尝 | DKN: 面向新闻推荐的深度知识感知网络

笔记整理&#xff1a;仲亮靓&#xff0c;东南大学硕士研究生&#xff0c;研究方向是基于知识图谱的推荐系统动机新闻文本的语言非常凝练&#xff0c;其中包含了很多实体和常识知识。但目前的新闻个性化推荐方法都没有利用这些外部知识&#xff0c;也没有使用新闻之间潜在的知识…

聊聊工业界做机器学习的里程碑

文 | 吴海波编 | YY阅读说明&#xff0c;本文的机器学习领域限制于互联网搜索、推荐、广告场景&#xff0c;仅限于个人观点。2017年&#xff0c;我和团队的几个核心去了趟北京&#xff0c;找了各大互联网公司一线实战的同学&#xff0c;交流各自在机器学习上的经验。这次交流让…

直通BAT JVM必考题:Minor GC、Major GC、Full GC的区别

Java面试过程&#xff0c;JVM属于必考题系列&#xff1a; 直通BAT必考题系列&#xff1a;深入详解JVM内存模型与JVM参数详细配置 直通BAT必考题系列&#xff1a;JVM的4种垃圾回收算法、垃圾回收机制与总结 直通BAT必考题系列&#xff1a;7种JVM垃圾收集器特点&#xff0c;优…

matplotlib绘制多张图、多子图、多例图

绘制多图 关键&#xff1a; fig plt.figure(1) 表示新建第几个图 import matplotlib.pyplot as pltfig plt.figure(1) plt_rec_loss [1,2,3,4,5,6] plt_rec_recall [4,3,6,5,8,9] plt.xlabel("epoch") plt.ylabel("loss") plt.plot(range(len(plt_re…

jieba分词并做分析

Github&#xff1a;结巴分词地址 https://github.com/fxsjy/jieba 几种分词方法的简单使用&#xff1a;一 . jieba安装、示例 pip install jieba&#xff0c;jieba分词的语料是基于人民日报。分词示例1 import jieba 2 3 str1 江州市长江大桥 4 word_object jieba.cut(s…

研讨会 | CCF TF 第 17 期:认知计算产业化落地

CCF TF 技术前线只为技术专家CCFTF第17期主题 认知计算产业化落地2019年05月11日上海斯波特酒店五楼&#xff08;上海市南丹路15号&#xff0c;徐汇区政府对面&#xff09;人类迈入人工智能时代&#xff0c;技术的发展使得机器可以从大数据中提取信息&#xff0c;串联成知识&a…

短网址系统

文章目录1. 短网址服务整体介绍2. 如何通过哈希算法生成短网址&#xff1f;2.1 如何让短网址更短2.2 如何解决哈希冲突&#xff1f;2.3 如何优化哈希算法生成短网址的性能&#xff1f;3. 如何通过ID生成器生成短网址&#xff1f;3.1 相同的原始网址可能会对应不同的短网址3.2 如…

一个神经元的价值和一个神经病的坚持

作者 | 周博磊来源 | 机器之心一个神经元能够催生多少故事&#xff1f;香港中文大学信息工程系助理教授周博磊近日撰文介绍了他自 2015 年开始至今对神经元的研究经历。最近&#xff0c;他与 David Bau、朱俊彦等人合作的神经元研究论文发表在了 PNAS 杂志上。以下是周博磊的原…

直通BAT必考题系列:深入剖析JVM之G1收集器、及回收流程、与推荐用例

金三银四马上到了&#xff0c;即将进入面试的高峰期。在BAT面试中&#xff0c;JVM基本都是必考的系列。你至少需要掌握JVM内存模型与JVM参数详细配置&#xff0c;JVM的4种垃圾回收算法、垃圾回收机制与总结&#xff0c;以及今天重点谈到的JVM垃圾回收算法的实现&#xff1a;JVM…