在附件中有一个 data.txt文件是一个来源于网上的技术信息资料。
本题回答问题1
问题1 (10分)在右侧的编程框内,补充修改代码完成程序。用Python语言中文分词第三方库jieba对文件data.txt进行分词,并选择长度大于等于3个字符的关键词,写入文件out1.txt,每行一个关键词,各行的关键词不重复,输出顺序不做要求,例如:
人工智能
科幻小说
...
代码示例:(有问题可以联系我o(* ̄︶ ̄*)o)
import jieba
fi=open("data.txt","r")
lines=fi.readlines()
f = open('out1.txt','w')
words=[]
for line in lines:
line=line.strip("\n")
wordlist=jieba.lcut(line)
for word in wordlist:
if len(word)>=3 and (word not in words):# 判断词长度,要大于等于3个长度
words.append(word)
for word in words:
f.write(word+"\n")
fi.close()
f.close()
问题2:(10分)右侧编程框中给出部分代码,补充完成程序,对文件data.txt进行分词,对长度不少于3个字符的关键词,统计出现的次数,按照出现次数由大到小的顺序输出到文件out2.txt,每行一个关键词和出现次数,例如:
科学家:2
达特茅斯:1
...
代码示例:
import jieba
fi=open("data.txt","r")
lines=fi.readlines()
fo = open('out2.txt','w')
words=[]
for line in lines:
line=line.strip("\n")
wordlist=jieba.lcut(line)# 用结巴分词,对每行内容进行分词
for word in wordlist:
if len(word)>=3:
words.append(word)
for word in words:
fo.write(word+"\n")
d = {}
for word in words:
d[word]=d.get(word,0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 此行可以按照词频由高到低排序
s=""
for i in ls:
s="{}:{}".format(i[0],i[1])
fo.write(s+"\n")
fi.close()
fo.close()