- 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):4. 小结#使用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]))
jieba库做分词,是NLP第一步,功能强大,使用便捷,简要介绍见如下超链接。
jieba库参数简介
本题来自python123题目,只作为个人学习使用,未经允许请勿转载。
thanks for reading
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)