失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > jieba对红楼梦进行分词(一)

jieba对红楼梦进行分词(一)

时间:2022-07-06 17:35:11

相关推荐

jieba对红楼梦进行分词(一)

学习缘由

这个学期开了一门课程叫自然语言处理(NLP),这是第一缘由,通过学习,慢慢的发现python的第三方库的强大之处,所以对这门课程学习比较认真,对很多次实验都进行了实践,期间也遇到了不少问题,因为以前都是搞JAVA的,所以遇到问题到解决问题还是花了点时间的,所以想将这个思考过程写出来,一方面可以通过笔记让我对NPL有关操作有更深的理解,另一方面也希望可以将自己学习过程中遇到的一些问题点出来,避免大家多次入坑,浪费宝贵时间!

工欲善其事必先利其器

掌握一门中文分词第三方库,我就用jieba分词为例。具备基本的python开发能力,有同学问,何为基本能力呢呢? 呃呃呃。。基本语法总要会把!会使用一个ide软件,这里使用的是pycharm.红楼梦txt文本下载链接:链接:/s/1z8kXnZ30grA3PSCfHOIhgQ

提取码:natk

开始实验

打开pycharm,然后下载jieba第三方依赖库。将要分词的文本导入进来,采用open内置函数,第二个参数表示只读,第三个参数表示编码为utf-8。

txt=open("《红楼梦》完整版.txt",“r”,encoding=“utf-8”)采用jieba的lcut函数进行文本分词,注意:txt必须调用read方法,因为jieba需要的参数是一个字符串而不是一个文件

words=jieba.lcut(txt.read())创建一个字典数据类型存储需要的内容

counts={}对words字符串进行遍历,将词和词的数目通过字典形式展示出来注意:for循环内部必须进行缩进,不能和for处于同一列,可以按下tab键进行缩行

for word in words:

counts[word]=counts.get(word,0)+1因为字典是无序的,我们想要的结果是按照词的多少从大到小进行排列,将字典转为列表,然后用lambad表达式排序。

item=list(counts.items())

item.sort(key=lambda x:x[1],reverse=True)现在我们已经将需要的都拿到了放在了item列表中,下面只需要将item中数据放在counts里面然后打印出来即可啦为了使得结果看的比较舒服,采用正则表达式,不太理解的可以去菜鸟教程上看下python3的相关教程。

for i in range(20):

print("{0:<10}{1:>5}".format(item[i][0],item[i][1]))

实验所有代码

import jieba

txt=open("《红楼梦》完整版.txt","r",encoding="utf-8")

words=jieba.lcut(txt.read())

counts={} #新建一个字典

for word in words:

counts[word]=counts.get(word,0)+1

item=list(counts.items())

item.sort(key=lambda x:x[1],reverse=True)

for i in range(20):

print("{0:<10}{1:>5}".format(item[i][0],item[i][1]))

如果觉得《jieba对红楼梦进行分词(一)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。