第四次作业
1.英文小说 词频统计
#读取文本文件 f = open('man and cat.txt','r',encoding='utf-8') story = f.read() f.close() print(story) #预处理 story=story.lower() #全部字母小写 print(story) sep = ',.:!""''' #符号处理 for ch in sep: story=story.replace(ch,' ') #利用for循环语句把特殊符号替换成空格 print(story) #字符串分隔 strList=story.split() print(len(strList),strList) #排除语法型词汇,代词、冠词、连词等无语义词 strSet=set(strList) exclude={'an', 'old','has', 'a','are','is', 'very','quickly','bad', 'one', 'evening', 'the','because'} strSet=strSet-exclude print(strSet) #字典 strDict={} for you in strSet: strDict[you]=strList.count(you) print(len(strDict),strDict) #按词频排序 wcList=list(strDict.items()) print(wcList) wcList.sort(key=lambda x:x[1],reverse=True) print(wcList) #输出TOP(20) for i in range(20): print(wcList[i])
2.中文小说 词频统计
#读取文本文件 f = open('hong.txt','r',encoding='utf-8') story = f.read() f.close() print(story) #预处理 sep = ',。:“”?!''' #符号处理 for ch in sep: story=story.replace(ch,' ') #利用for循环语句把特殊符号替换成空格 print(story) #中文分词:结巴 import jieba cnStr = story #精确模式 print(list(jieba.cut(cnStr))) # 分隔提取单词
strList = story.split(' ') print(len(strList), strList) # 单词计数字典 strSet = set(strList) print(len(strSet), strSet) strDict = {} for word in strSet: strDict[word] = strList.count(word) # print(len(strDict),strDict) # 词频排序 wcList = list(strDict.items()) # print(wcList) wcList.sort(key=lambda x: x[1], reverse=True) # print(wcList) # 输出TOP10 for i in range(10): print(wcList[i])