Python-jieba分词学习及应用

文章目录

  • 基础
  • 添加自定义词典
  • 实战

基础

  1. jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
  2. jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
  3. 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
  4. jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
  5. jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
# encoding=utf-8
import jiebaseg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))  # 全模式seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精确模式seg_list = jieba.cut("他来到了网易杭研大厦")  # 默认是精确模式
print(", ".join(seg_list))seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
print(", ".join(seg_list))

输出:
【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学

【精确模式】: 我/ 来到/ 北京/ 清华大学

【新词识别】:他, 来到, 了, 网易, 杭研, 大厦 (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)

【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造

添加自定义词典

载入词典,开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率
用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
词频省略时使用自动计算的能保证分出该词的词频。
如:
在这里插入图片描述
参考链接:python使用结巴中文分词以及训练自己的分词词典
Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计
【python】结巴中文分词生成词云图

实战

from collections import Counter
import jieba
jieba.load_userdict('userdict.txt')# 创建停用词list
def stopwordslist(filepath):stopwords = [line.strip() for line in open(filepath, 'r').readlines()]return stopwords# 对句子进行分词
def seg_sentence(sentence):sentence_seged = jieba.cut(sentence.strip())stopwords = stopwordslist('G:\\哈工大停用词表.txt')  # 这里加载停用词的路径outstr = ''for word in sentence_seged:if word not in stopwords:if word != '\t':outstr += wordoutstr += " "return outstrinputs = open('hebing_wenben\\wenben.txt', 'r') #加载要处理的文件的路径
outputs = open('output.txt', 'w') #加载处理后的文件路径
for line in inputs:line_seg = seg_sentence(line)  # 这里的返回值是字符串outputs.write(line_seg)
outputs.close()
inputs.close()
# WordCount
with open('output.txt', 'r') as fr: #读入已经去除停用词的文件data = jieba.cut(fr.read())
data = dict(Counter(data))with open('cipin.txt', 'w') as fw: #读入存储wordcount的文件路径for k, v in data.items():fw.write('%s,%d\n' % (k, v))
#1、生成词云图
from wordcloud import WordCloud
import matplotlib.pyplot as pltimport numpy as np
from PIL import Imageimport jieba# 数据获取
with open("C:\hhh.txt",'r', encoding='gbk')as f:text=f.read()# with open('dream is possible.txt','r',encoding='gbk')as f:
#     text=f.read()
#图片获取
mask=np.array(Image.open("C:\heart.png"))--这是词云的背景图形状# 数据清洗
# 屏蔽45
# STOPWORDS.add('45')font=r'C:\Windows\Fonts\simhei.ttf'---(必须引用字体不然代码会报错)
sep_list=jieba.lcut_for_search(text,)---(结巴有三种方式,全模式、精确模式、搜索引擎模式见链接3)
sep_list=" ".join(sep_list)
wc=WordCloud(scale=4,#调整图片大小---(如果设置太小图会很模糊)font_path=font,#使用的字体库max_words=200,  # 词云显示的最大词数margin=2,#字体之间的间距mask=mask,#背景图片background_color='white', #背景颜色max_font_size=200,# min_font_size=1,# stopwords=STOPWORDS, #屏蔽的内容collocations=False, #避免重复单词width=1600,height=1200 #图像宽高,字间距
)wc.generate(sep_list) #制作词云
wc.to_file('词云.jpg') #保存到当地文件# 图片展示
plt.figure(dpi=100) #通过这里可以放大或缩小
plt.imshow(wc,interpolation='catrom')
plt.axis('off')
plt.show()#2、词频统计并返回权重
from jieba.analyse import *
data = open("C:\hhh.txt",'r', encoding='gbk').read()#读取文件
for keyword, weight in extract_tags(data, topK=30,withWeight=True,allowPOS=()):#topK为返回几个TF/IDF权重最大的关键词,默认值为20# withWeight为是否一并返回关键词权重值,默认值为False# allowPOS仅包括指定词性的词,默认值为空,即不筛选print('%s %s' % (keyword, weight))

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

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

相关文章

LeetCode 302. 包含全部黑色像素的最小矩形(BFS)

文章目录1. 题目2. 解题1. 题目 图片在计算机处理中往往是使用二维矩阵来表示的。 假设,这里我们用的是一张黑白的图片,那么 0 代表白色像素,1 代表黑色像素。 其中黑色的像素他们相互连接,也就是说,图片中只会有一…

蓝色三角_叶子长得像韭菜,花朵开得像个糖三角的鸢尾,用这3个方法拍摄它...

女孩子们小时候都跳皮筋。有一段口诀,里面有一句“马兰开花二十一”……我虽然皮筋没少跳,但是对于马兰花,却也是只闻其名,未见其身。后来,我在户外拍风光、拍花卉。在草丛里看到三片细长花瓣组成的的蓝色小花&#xf…

LeetCode 1063. 有效子数组的数目(单调栈)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 A,返回满足下面条件的 非空、连续 子数组的数目: 子数组中,最左侧的元素不大于其他元素。 示例 1: 输入:[1,4,2,5,3] 输出:11 解释:有 11 个…

springboot 多了8小时_日本人不明白:中国的奶茶有多好喝,值得排队8小时去买?...

日本人不明白:中国的奶茶有多好喝,值得排队8小时去买?最近有许多的网红奶茶店兴起,尤其是在冬季,加料十足的热奶茶就成为了年轻人的心头之好,就拿最近在武汉新开的首家茶颜悦色来说,每天的队伍都…

将整个表单设置为只读_如何将独立网站设置为制作中,阻止搜索引擎收录网站页面?...

独立网站设置为制作中当网站未完成状态时,可能不希望除管理员以外的人看到未完成的页面时,如何操作可以将独立网站设置为制作中,并阻止搜索引擎收录网站页面呢?可按照以下步骤进行操作;将网站设置为制作中网站制作中设…

LeetCode 361. 轰炸敌人(前缀和DP)

文章目录1. 题目2. 解题1. 题目 想象一下炸弹人游戏,在你面前有一个二维的网格来表示地图,网格中的格子分别被以下三种符号占据: W 表示一堵墙 E 表示一个敌人 0(数字 0)表示一个空位请你计算一个炸弹最多能炸多少敌…

led拼接屏报价_液晶拼接屏与led显示屏的区别在哪?

在目前的大屏显示产品中,液晶拼接屏和led显示屏是两种比较普遍的产品,拼接大屏是通过单个液晶拼接单元拼接而成的显示大屏,而led显示屏则是通过发光二极管组成密集点阵组成图像显示,我们通常听到的P1、P2代表的是像素点距离&#…

LeetCode 356. 直线镜像

文章目录1. 题目2. 解题1. 题目 在一个二维平面空间中,给你 n 个点的坐标。 问,是否能找出一条平行于 y 轴的直线,让这些点关于这条直线成镜像排布? 示例 1: 输入: [[1,1],[-1,1]] 输出: true示例 2: 输入…

使用DispatcherTimer计时器

《银光志--Silverlight 3.0开发详解与最佳实践》第3章XAML与Silverlight编程内功,通过本章的学习,相信你会对Silverlight编程模型、XAML、事件处理,以及LINQ查询语言有了一个比较全面的了解,在本章的示例中应用的都是一些基本的XA…

静物摄影用光技巧_室内人像摄影想要拍好,这3种用光技巧你了解吗?

选择靠近窗户的位置在室内可以首先考虑在靠近窗户的位置进行拍摄,因为窗户边上尤其是朝北的窗户会有非常柔和的散射光,当投射进窗户的是直射光线时,摄影者还可以拉上一层很薄的窗帘来缓解一下光线的强度,在靠近窗户的位置&#xf…

LeetCode 660. 移除 9(9进制)

文章目录1. 题目2. 解题1. 题目 从 1 开始,移除所有包含数字 9 的所有整数,例如 9,19,29,…… 这样就获得了一个新的整数数列:1,2,3,4,5,6&…

postman怎么导出测试用例_利用Charles抓包巧转接口自动化测试用例

在前面的文章中,也有介绍类似的工具的。例如:一键将接口请求转为测试用例介绍了开源的mitmproxy录制转化为接口测试用例,postman接口用例转化为python自动化测试用例 文章记录了如何把postman的测试用例转化为python的接口自动化的测试用例&a…

LeetCode 1236. 网络爬虫(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 给定一个链接 startUrl 和一个接口 HtmlParser ,请你实现一个网络爬虫,以实现爬取同 startUrl 拥有相同 域名标签 的全部链接。该爬虫得到的全部链接可以 任何顺序 返回结果。 你的网络爬虫应当按照如下模…

启动不起来_国产开源工具:U盘启动工具Ventoy v1.0.29发布——墨涩网

Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把ISO文件拷贝到U盘里面就可以启动了,无需其他操作。你可以一次性拷贝很多个不同类型的ISO文件,在启动时Ventoy会显示一个菜单来选择。 无差异支持Legacy B…

众多Android 开源项目再次推荐,学习不可错过

FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。项目地址:http://www.fbreader.org/FBReaderJ/Angle Angle是一款专为Android平台设计的&#…

LeetCode 1231. 分享巧克力(极小极大化 二分查找)

文章目录1. 题目2. 解题1. 题目 你有一大块巧克力,它由一些甜度不完全相同的小块组成。我们用数组 sweetness 来表示每一小块的甜度。 你打算和 K 名朋友一起分享这块巧克力,所以你需要将切割 K 次才能得到 K1 块,每一块都由一些 连续 的小…

筛选末位数字为1或5_看看广州示范性高中排行榜,怎么填报志愿?如何运用末位考生分数...

人们评价一所高中学校的层次通常会用两个指标:高考升学率和录取分数线,升学率又多以高优率高低为排序标准。在志愿填报期间,不少家长总希望我对学校进行比较。我试以三个维度对广州的70所示范性高中学校(校区)进行比较供大家参考。2016-2018近…

简明Python3教程 8.控制流

简介 迄今为止我们见到的所有程序总是含有一连串语句并且python忠实的顺序执行它们。 那么如何改变它们的执行顺序呢?例如你希望程序根据不同情况作出不同反应,按照当前时间分别 打印出’Good Morning’或’Good Evening’? 也许你已经猜到了&#xff0…

LeetCode 1166. 设计文件系统(哈希map)

文章目录1. 题目2. 解题1. 题目 你需要设计一个能提供下面两个函数的文件系统: create(path, value): 创建一个新的路径,并尽可能将值 value 与路径 path 关联,然后返回 True。 如果路径已经存在或者路径的父路径不存在,则返回 …

LeetCode 1087. 字母切换(回溯)

文章目录1. 题目2. 解题1. 题目 我们用一个特殊的字符串 S 来表示一份单词列表,之所以能展开成为一个列表,是因为这个字符串 S 中存在一个叫做「选项」的概念: 单词中的每个字母可能只有一个选项或存在多个备选项。 如果只有一个选项&…