读取一个文本文件返回其中的top10关键词
使用jieba.analyse提取句子级的关键词
#文本使用古诗词《滕王阁序》,找出其中top10词。
from jieba import analyse
def keyword_extract(data, file_name):
tfidf = analyse.extract_tags #analyse.extract_tags()使用TF-IDF模型对文档进行分析
keywords = tfidf(data) #提取data中的关键字
return keywords
def getKeywords(docpath, savepath):
with open("../twg.txt", 'r',encoding='utf-8') as docf, open('../out.txt', 'w',encoding='utf-8') as outf:
for data in docf:
#print(data)
data = data[:len(data)-1]#遍历docf中的文本,长度为len(line)
#print(data[:1])
#print(data)
keywords = keyword_extract(data, savepath)
for word in keywords:
outf.write(word + ' ') #输出分词,形式为:词+空格
outf.write('\n') #写入的字符串在末尾包含一个换行符。
def getTopwords(dictpath):
with open(dictpath,'r',encoding='gbk') as fr:
# 读取文件所有行
content = fr.readlines()
contentLines = ''
characters = []
stat = {}
# 依次迭代所有行
for line in content:
# 去除空格
line = line.strip()
if len(line) == 0:
continue
contentLines = contentLines + line
# print(line)
# 统计每一字出现的个数
for x in range(0, len(line)):
# 如果字符第一次出现,加入到字符数组中
if not line[x] in characters:
characters.append(line[x])
# 如果是字符第一次出现,加入到字典中
if line[x] not in stat:
stat[line[x]] = 1
# 出现次数加一
stat[line[x]] += 1
stat = sorted(stat.items(), key=lambda e: e[1], reverse=True)
print('全文共有%d个字' % len(contentLines))
print('一共有%d个不同的字' % len(characters))
print('前10名出现次数最多的词和次数是:')
for i in range(10):
print(i + 1, stat[i][0], stat[i][1])
fr.close()
if __name__ == '__main__':
getTopwords(r'../out.txt')