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

本文介绍了一个自然语言处理(NLP)实验,利用Python的jieba库对《红楼梦》进行中文分词,并统计词频,展示了从数据准备到结果呈现的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习缘由

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

工欲善其事必先利其器

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

开始实验

  1. 打开pycharm,然后下载jieba第三方依赖库。
  2. 将要分词的文本导入进来,采用open内置函数,第二个参数表示只读,第三个参数表示编码为utf-8。
    txt=open("《红楼梦》完整版.txt",“r”,encoding=“utf-8”)
  3. 采用jieba的lcut函数进行文本分词,注意:txt必须调用read方法,因为jieba需要的参数是一个字符串而不是一个文件
    words=jieba.lcut(txt.read())
  4. 创建一个字典数据类型存储需要的内容
    counts={}
  5. 对words字符串进行遍历,将词和词的数目通过字典形式展示出来注意:for循环内部必须进行缩进,不能和for处于同一列,可以按下tab键进行缩行
    for word in words:
    counts[word]=counts.get(word,0)+1
  6. 因为字典是无序的,我们想要的结果是按照词的多少从大到小进行排列,将字典转为列表,然后用lambad表达式排序。
    item=list(counts.items())
    item.sort(key=lambda x:x[1],reverse=True)
  7. 现在我们已经将需要的都拿到了放在了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]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值