6.算法编程练习:词频统计(1)

6.算法编程练习:词频统计(1),第1张

6.算法编程练习:词频统计(1)

文章目录
  • 1. 题目
  • 2. 分析
  • 3. 代码
  • 4. 小结
  • 致谢

1. 题目

从data.txt文件读入一篇文章《从清华到MIT》,用 jieba 库的函数 lcut 的全模式做分词,统计词汇长度为 2 的词出现的次数,输出出现次数最多的前 10 个词汇及其出现次数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

2. 分析

读入,分词,定义一个字典存次长为2的词并将出现的频数统计为字典的关键字值,然后排序,遍历前十条,利用字符串格式化进行数据匹配并打印。
文本分词用jieba库里面的lcut类方法,参数arg1传入读取的文本str类型,参数**kwarg2cut_all=True。

3. 代码
import jieba
dk = {}
with open('data.txt','r') as f:
    sl = f.readlines()
for s in sl:
    key=jieba.lcut(s, cut_all=True)
    for wo in key:
        if len(wo)==2:
            dk[wo] = dk.get(wo,0) + 1
dp = list(dk.items())
dp.sort(key= lambda x:int(x[1]), reverse=True)
for i in range(10):
    print('{}:{}'.format(dp[i][0],dp[i][1]))

注释版

This is a python123.io file.
'''
import jieba        # 导入jieba中文分词库
dk = {}             # 定义dk字典变量 type(dk):

#使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。
#例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法

#以指定utf-8编码只读方式打开data.txt文件,文件句柄命名为f
with open('data.txt','r',encoding = "utf-8") as f:  
    sl = f.readlines()

#print(type(f))    f是文件句柄的类型
#print(type(sl))   sl是一个列表,包含了文件中每一行内容
#print(type(sl[0]))  sl[0]是列表sl中第一个元素,是文件中第一行所有内容

for s in sl:        #循环读取列表元素
    k =jieba.lcut(s, cut_all = True)
    #对每个s,使用jieba.lcut函数以全模式方式返回一个列表(由词语组成)
    for wo in k:    #对每个词语进行筛选
        if len(wo) == 2:    #如果词语的长度为2,进行统计
           dk[wo] = dk.get(wo,0) + 1
           #逐步构建统计字典,形式如{"大学":1,"设计":2,...},备注,这里的1、2是逐渐变化中

dp = list(dk.items())   #转换为列表,列表中元素为元组。
dp.sort(key= lambda x:int(x[1]), reverse = True)

for i in range(10):   #输出排序后的内容
   print("{}:{}".format(dp[i][0],dp[i][1]))
4. 小结

jieba库做分词,是NLP第一步,功能强大,使用便捷,简要介绍见如下超链接。
jieba库参数简介
本题来自python123题目,只作为个人学习使用,未经允许请勿转载。

致谢

thanks for reading

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4680146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-07
下一篇 2022-11-07

发表评论

登录后才能评论

评论列表(0条)

保存