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…

javascript获取浏览器客户端IP

<script language"JavaScript"> function GetLocalIPAddr(){ var oSetting null; var ip null; try{ oSetting new ActiveXObject( "rcbdyctl.Setting" ); ip oSetting.GetIPAddress; alert(ip); if (ip.length 0){ return "没有连接到Int…

Excel常用函数总结

常用函数 数学和三角函数 计算公式 SIGN–返回数字符号 当数字大于0时返回1&#xff0c;等于0返回0&#xff0c;小于0返回-1 ABS–计算数字的绝对值 SUM–计算数字之和 PRODUCT–计算数字之积 MOD–返回商的余数 QUOTIENT–返回商的整数部分 SUMIF–按给定条件对指定单元格求…

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

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

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

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

vc调用matlab生成的dll实例

http://blog.csdn.net/ithzhang/article/details/7444563转载于:https://www.cnblogs.com/burellow/archive/2012/11/27/2790271.html

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

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

指标波动多大才算是异常?

指标波动不可怕&#xff0c;指标波动代表的业务场景才可怕&#xff01;脱离业务场景谈指标波动就是耍流氓。 指标波动分类 第一类&#xff1a;硬指标波动。 有一些指标是刚性考核业务部门的。比如 考核销售&#xff1a;业绩、回款 考核商品&#xff1a;库存、毛利 考核客服&…

.net 门槛高不高之我见

最近有两大.net高手在争论&#xff0c;一个说门槛高&#xff0c;一个说门槛低。 其实这两个都是高手&#xff0c;为何会有截然不同的看法&#xff1f;其实我感觉这应该是一个“语言”理解的问题&#xff0c;而不是对“事实”理解的差异。比如我觉得一个东西很好&#xff0c;但是…

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

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

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

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

Powerbi实战--常用新建表代码(单位切换,日期表)

单位切换 #Model_Unit DATATABLE("单位名称",STRING,"OrderBy_unit",INTEGER,"Value",INTEGER, {{ "无", 1, 1 },{ "万", 2, 10000 },{ "百万", 3, 1000000 },{ "亿", 4, 100000000 }})日期相关表…

Windows Phone 8安装包中的文件和独立存储区中的文件访问

安装包中的文件&#xff1a; Windows Phone 8访问安装包中的文件可以直接采用相对路径的形式&#xff0c;"apps/readme.txt"。例如&#xff1a;FileStream stream File.OpenRead("apps/readme.txt"); 也可以采用下面的方式&#xff1a; string installPat…

LeetCode 356. 直线镜像

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

使用DispatcherTimer计时器

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

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

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

SQL基础知识:DDL、DML、DQL

DDL&#xff1a;数据定义语言 对数据库和数据表的管理 数据库 1、创建 create database [if not exists] databasename;2、列举 show databases;3、查看当前所在数据库 select database();4、切换 use databasename;5、删除 drop database [if exists] databasename;数…

LeetCode 660. 移除 9(9进制)

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

DllImport的用法

DllImport是System.Runtime.InteropServices命名空间下的一个属性类&#xff0c;其功能是提供从非托管DLL导出的函数的必要调用信息。 DllImport属性应用于方法&#xff0c;要求最少要提供包含入口点的dll的名称。 DllImport的定义如下&#xff1a; [AttributeUsage(Attr…