第四次作业
1、英文歌词词频统计:
读取文件、提取字符串、文件预处理
#读取文件 f=open('enwords.txt','r',encoding='utf-8') Str_some=f.read() f.close() print(Str_some) #对文件进行预处理 #把全部的字母变成小写 Str_some=Str_some.lower() print(Str_some) #标点符号以及特殊符号的处理 s1='''. , = ? ' ''' for i in s1: Str_some=Str_some.replace(i,' ') print(Str_some)
提取分词单词list
##提取单词变成list Str_list=Str_some.split() print(len(Str_list),Str_list)
单词计算字典set、dict
#把单词变成集合的形式 Str_set=set(Str_list) print(len(Str_set),Str_set) #变成字典形式 StrDict={} for word in Str_set: StrDict[word]=Str_list.count(word) print(len(StrDict),StrDict)
按词频排序
#按词频排序 S_list=list(StrDict.items()) print(S_list) S_list.sort(key=lambda x:x[1],reverse=True) print(S_list)
排除语法词汇,输出top20
##按词频排序 S_list=list(StrDict.items()) # print(S_list) S_list.sort(key=lambda x:x[1],reverse=True) # print(S_list) ###排除语法词汇的定冠词 Str_set=set(Str_list) exclude={'a','the','and','i','you','it'} print(Str_set-exclude) ##输出Top20 for i in range(20): print(S_list[i])
中文小说词频统计;
import jieba #读取文件 f1=open('xiaoshuo.txt','r',encoding='utf-8') S1=f1.read().strip() #print(S1) f1.close() #对中文的标点符号进行处理: s1=''',!?。:“ ” ' ''' for i in s1: S1=S1.replace(i,' ') #print(S1.strip()) S1_list=list(jieba.cut(S1)) #对一个字的进行处理 S1_Dict={} for word in S1_list: if len(word) == 1: continue else: S1_Dict[word]=S1_Dict.get(word,0)+1 print(S1_Dict) #按词频排序 S_list=list(S1_Dict) S_list.sort(key=lambda x: x[1], reverse=True) print(S_list) #输出前20个 for i in range(20): print(S_list[i])