测试数据是来自于搜狗实验室的新闻数据
下载地址为:
https://www.sogou.com/labs/resource/cs.php
大致流程为:
- 读取测试样本文件;
- 读入停用词表,并对合并后的文本进行分词、去停用词和特殊符号;
- 遍历处理过后的文本,将其存入文档中;
- 进行词频统计,对所有词语出现的次数进行统计;
- 计算词频TF,统计含有该单词的句子数;
- 计算逆文档频率IDF,计算TF-IDF;
- 存储全部的关键词,排序得到降序的列表;
- 定义文章返回关键词的数量,将结果保存到文件。
# -*- coding:utf-8 -*-
# 因为py文件不支持中文(包括注释里的),因此需要使用这段代码将就文件编码类型改为UTF-8的类型。
# 这样就可以在py文件中正常输入中文而不报错了
from lxml import etree
# 导入 jieba
import jieba #中文分词
import math #计算IDF时会用到log函数
'''
defaultdict 用法与 dict 相似,在dict中取key的值,若key不在dict中,报错;
若用defaultdict,则不会报错,返回值是工厂函数默认参数值
(工厂函数是list,返回[]。工厂函数是str,返回空字符串’’。工厂函数是set,返回set()。)
'''
from collections import defaultdict
'''
Zhon是一个Python库,它提供了中文文本处理中常用的常量。
python自带punctuation包,可以消除所有中文标点符号
'''
from zhon.hanzi import punctuation
# string.punctuation将给出所有的标点符号。
from string import punctuation as eng_punctuation
import time
def parse_xml(xml):
"""解析xml文件"""
try:
# 获取文本