- 1. 题目
- 2. 分析
- 3. 代码
- 4. 小结
- 致谢
从data.txt文件读入一篇文章《从清华到MIT》,用 jieba 库的函数 lcut 的全模式做分词,统计词汇长度为 2 的词出现的次数,输出出现次数最多的前 10 个词汇及其出现次数。
2. 分析读入,分词,定义一个字典存次长为2的词并将出现的频数统计为字典的关键字值,然后排序,遍历前十条,利用字符串格式化进行数据匹配并打印。
文本分词用jieba库里面的lcut类方法,参数arg1传入读取的文本str类型,参数**kwarg2cut_all=True。
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



