第1关:使用jieba进行分词
任务描述
本关任务:对对应内容进行分词,转换成列表后输出。
我想起花瓣 试着掉落 为你翘课的那一天
花落的那一天 教室的那一间 我怎么看不见
import jieba
jieba.setLogLevel(jieba.logging.INFO)
'''请输入未完成内容'''
s='我想起花瓣试着掉落为你翘课的那一天花落的那一天教室的那一间我怎么看不见'
print(jieba.lcut(s))
第2关:飘-词频统计
任务描述
本关任务:编写一个程序,统计哈姆雷特中出现最多的5个单词(无需排除)。
def gettext():
txt=open('/data/workspace/myshixun/src/step2/gonewind.txt','r',encoding='utf-8').read()
'''请输入未完成内容'''
txt = txt.lower()
for i in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
txt = txt.replace(i, " ")
return txt
hamletTxt = gettext()
words = hamletTxt.split()
counts = {} #新建一个空字典
for word in words:
counts[word] = counts.get(word, 0) + 1 #对单词出现的频率进行统计
'''请输入未完成内容'''
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(5):
'''请输入未完成内容'''
word,count = items[i]
print("{0:<10}{1:>5}".format(word,count))
第3关:三国-词频统计
任务描述
本关任务:编写程序,统计三国中人名出现最多的5个人(排除非相关词)。
import jieba
jieba.setLogLevel(jieba.logging.INFO)
excludes={'将军','却说','二人','不可','不能','如此','荆州'}
txt=open('/data/workspace/myshixun/src/step3/sanguo1.txt','r',encoding='utf-8').read()
'''
添加未完成内容'''
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) ==1:
continue
elif word=="诸葛亮" or word=="孔明曰":rword="孔明"
elif word=="关公" or word=="云长":rword="关羽"
elif word=="玄德" or word=="玄德曰":rword="刘备"
elif word=="孟德" or word=="丞相":rword="曹操"
elif word=="后主" or word=="阿斗":rword="刘禅"
#elif word=="都督" or word=="公瑾":rword="周瑜"
elif word=="子龙" :rword="赵云"
else:rword=word
counts[rword]=counts.get(rword,0)+1
for word in excludes:#若存在上述excludes里面的词组都不是词组,然后减一
del(counts[word])
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)#通过出现的次数降序排序输出
for i in range(5):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))