# 基于特征熵值分析的网站分类系统实现
**摘要**
随着互联网技术的飞速发展,Internet 上的 Web 页面呈指数型增长。对于如何自动对这些海量数据有效处理和管理,来取代低效繁琐的人工管理,Web 文本分类技术成了关键技术。目前对于这方面的研究已经有了很大进展,并且产生了一系列分类方法,比较著名的有支持向量机(VSM)、K 最邻近(KNN)、神经网络和贝叶斯(Bayes)算法等。在这些算法中,KNN 算法由于其简单、有效、参数无关,目前的应用非常广泛。但是,KNN 算法有着不少的缺陷,最关键的两个缺陷是运行速度太慢和分类精度不高。
本设计对 KNN 算法的缺陷产生原因进行了分析,并对其进行了改进:在特征提取上引入了基于改进的 CHI 方法使得特征提取更加合理;在 KNN 分类器运行速度的改进方面引入了 Rocchio 算法的思想和一些其他简单的思路对分类器进行速度的提升,使得新的分类器的分类速度得到大幅度提升;在 KNN 分类器分类精度的改进方面,通过在相似度计算上引入了基于属性熵值的相似度改进和基于 KNN 类别加权的改进,使得改进的 KNN 算法又在分类精度上得到了大幅度提高。在基于上述这些改进后,搭建出了一个真正具备高效、实用的网站分类系统。
本文完成了分类器系统的实现,并且利用个 3578 个真实网站内容作为测试集对系统进行了性能测试。通过对实验结果进行分析,得出本文提出的新的 KNN 分类器在测试集数据的环境下达到了高速分类和分类正确率远高出传统方法的结论。本文提出的新的高效 KNN 算法作为网站分类器比原有的 KNN 分类方法和加权 KNN 方法有更快的速度,同时比两者有更高的分类精度。
**关键词**:高效网站分类;改进特征提取;快速分类;高精度分类;属性熵值分析
# 一、绪 论
## 1.1 课题的研究背景和意义
### 1.1.1 目前网站分类的研究情况
随着互联网技术的飞速发展,Internet 上的 Web 页面呈指数型增长。对于如何有效组织和处理这些海量信息,如何更好地搜索、管理这些网络资源,Web 文本分类技术成了关键技术。目前对于这方面的研究已经有了很大进展,并且产生了一系列分类方法,比较著名的算法有:
支持向量机(SVM):未改进的支持向量机是用来解决二分分类模式识别问题的,基本思路是通过寻找支持向量来确定可以区分类别的决策面,并且使得分类间隔最大。虽说 SVM 靠着良好的学习能力和灵活的推广能力而得到了广泛的应用,但是该算法也存在着一些问题,主要包括算法复杂而难以实现、学习过程速度慢、对参数敏感等缺点。
神经网络:人工智能领域被广泛利用的一项技术,在网站分类问题中应用这项技术时,每个分类都需要建立一个神经网络,通过学习得到特征词汇到分类的非线性映射。其计算量庞大而且训练时间非常漫长。
贝叶斯(Bayes)算法:机器学习中非常轻量且常见的方法,基本思想是通过单词和类别的关联概率来估计网站所属类别。
最邻近(KNN):知名的模式识别统计方法,是目前最好的文本分类方法之一。KNN 算法的思想非常简答:将测试文档与训练集中所有已标注类别的文档进行对比,得到相似度最高的 K 个邻近,根据这 K 个邻近所标记的类别选出出现最频繁的类别作为测试文档类别。缺点在于计算量非常巨大而且类别判定策略过于简单和武断。
这些算法均立足于机器学习理论。在它们当中,KNN 算法由于其简单、有效、参数无关,目前的应用非常广泛。
### 1.1.2 现有解决方案的优点与不足
目前对 KNN 算法用于网站分类的研究有很多,而且出现了很多基于改进的KNN 算法。
针对传统 KNN 算法在分类速度上的不足,目前相关的研究内容有基于训练集裁剪的改进和基于邻近搜索方法的改进等。基于训练集裁剪的改进主要的考虑角度在于对训练集的裁剪可以直接减小计算开销,还可以适当提高分类精度。而基于邻近搜索方法的改进主要是从 KNN 算法对每个新样本都要计算它与所有训练样本之间的相似度,而导致算法本身分类效率低下且占用大量内存的角度来入手。但是以上这些方法不仅对算法提速不明显,而且改进本身需要大量的工作,未体现出简单、实用。
而针对传统 KNN 算法在分类精度上的不足,目前比较著名的改进有基于特征加权的改进和基于类别判断的改进。基于特征加权的改进考虑到传统 KNN 算法在进行相似度计算时等同对待各个向量维而影响分类精度,TF*IDF 方法是目前最常用的加权方法,但是该方法没有考虑特征项的类内、类外分布情况。基于类别判断的改进主要在 KNN 算法判断类别的决策中改进,传统 KNN 算法对 K 个邻近等同对待,改进的 KNN 算法会给 K 个邻近中的那些类别不同的权重来综合评价。以上这些方法各自都会适当提高分类器分类精度,但是都会带来新的问题。
纵观 KNN 算法的研究,在 KNN 分类速度的改进上看,目前的研究从应用角度来说改进效果不明显而且改进代价较大,而在 KNN 分类精度的改进上的考虑又稍显片面,往往顾此失彼。此外,目前少有对 KNN 分类器的分类速度和精度两者都进行改进的研究和系统实现。
### 1.1.3 基于特征熵值分析的网站分类系统的设计目标
设计目标简而言之就是:设计一个高分类速度且高分类精度的网站分类器,分类速度目标分类速度是毫秒级,目标分类精度是大于 80%。
本设计以实用为出发点对 KNN 算法的缺陷产生原因进行分析并进行对算法的改进:在特征提取上引入了基于改进的 CHI 方法使得特征提取更加合理;在 KNN 分类器运行速度的改进方面引入了 Rocchio 算法的思想和一些其他简单的思路对分类器进行速度的提升,使得新的分类器的分类速度得到大幅度提升;在 KNN 分类器分类精度的改进方面,通过在相似度计算上引入了基于属性熵值的相似度改进和基于 KNN 类别加权的改进,使得改进的 KNN 算法又在分类精度上得到了大幅度提高。
在基于上述这些改进后,搭建出了一个真正具备高效、实用的网站分类系统,分类响应速度达到了毫秒级,分类精度在 3578 个真实测试数据中达到了 85.047%。
# 二、系统模块组成介绍
## 2.1 系统总体架构
本设计旨在设计一个效果优秀的网站分类系统。
首先确定输入和输出:输入为一个或多个 URL,输出为每个输入 URL 对应网站的类别判断结果。
根据输入输出分析需求:输入为 URL 列表,而网站识别靠的是对网站内容分析,所以首先需要一个爬虫来对 URL 对应的 HTML 文档进行下载;其次,为了提取出 HTML 文档中的重要信息进行进一步的分析,需要一个页面处理模块来提取有价值信息;再次,在有价值信息中,需要提取出对分类有辨识能力的若干特征项,并且要把特征项进行数学抽象以便于作为分类器可读取的输入,所以又需要一个特征提取和文本特征表示模块;接下来,通过把网页文本的数学形式输入到分类器,分类器进行识别后输出分类结果,所以还需要一个分类器模块。
根据上述的分析,可以得出我们所需的模块包括:
- 一个爬虫模块:输入是 URL,输出是对应 HTML �
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
采用了语言 Python(Python 2.7.5)来对系统进行全方面设计,系统实现的平台 是 Unix 操作系统。基础的爬虫搭建和页面处理涉及的分词技术均非设计重点,且稳定性要求较高, 所以这两者分别采用了目前相对稳定强大的开源工具 Scrapy 和 Jieba 分词。 最终本系统利用个 3578 个真实网站内容作为测试集对系 统进行了性能测试,最终的成绩是分类精度达到 85.05%,平均一个网页的分类速 度是 0.88 秒。
资源推荐
资源详情
资源评论
收起资源包目录
基于Python实现基于改进的KNN网站分类系统【100012583】 (226个子文件)
scrapy.cfg 264B
input.csv 26B
0.html 36KB
settings.ini 82B
logo.jpg 253KB
LICENSE 1KB
README.md 67KB
基于特征熵值分析的网站分类系统实现_李琛轩.pdf 941KB
类别说明.pdf 149KB
29-32bb3725b4988e53831e22dad6d12ba7.png 224KB
lmain.png 221KB
outcome.png 206KB
linput.png 190KB
28-09cc7ebd9dd094a7b350b3e1e351a718.png 144KB
lsys.png 133KB
luser.png 132KB
5-c9878fadb475774a551156857318da0c.png 97KB
27-6c4feb822b0c9a5e10f587d96f6361c9.png 92KB
06.png 46KB
5-6.png 40KB
03.png 26KB
5-7.png 25KB
04.png 23KB
5-8.png 21KB
01.png 16KB
05.png 14KB
5-1.png 13KB
02.png 13KB
5-9.png 13KB
5-4.png 9KB
5-10.png 9KB
5-2.png 9KB
5-11.png 9KB
5-5.png 8KB
4-8.png 7KB
5-3.png 6KB
4-9.png 5KB
4-7.png 5KB
1-ef2b6e153cd75d9b0e248be11dd546f5.png 353B
main.py 7KB
CateFeature.py 4KB
DistributekNN.py 3KB
GetFeatures.py 3KB
WebPageParser.py 3KB
WebFeature.py 2KB
ParticipleTool.py 2KB
Maper.py 2KB
Rocchio.py 2KB
Reducer.py 2KB
AttrEntroy.py 2KB
cfgdialog.py 2KB
DBop.py 2KB
helppage.py 1KB
WebPermit.py 1KB
superSpider.py 1KB
Util.py 1KB
CSVstream.py 1KB
WordClass.py 1KB
Filter.py 1KB
startspider.py 945B
settings.py 856B
Index.py 774B
pipelines.py 754B
settings.py 455B
startextractor.py 391B
items.py 381B
TestObj.py 344B
filedialog.py 339B
Centroid.py 331B
SimResult.py 298B
__init__.py 161B
tipsdialog.py 154B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
__init__.py 0B
train.sql 8.89MB
roindex.txt 32.2MB
entroy.txt 1.05MB
train_t12.txt 955KB
featureall.txt 639KB
train_t27.txt 553KB
index_t12.txt 340KB
train_t3.txt 324KB
train_t10.txt 316KB
train_t28.txt 258KB
train_t15.txt 255KB
train_t20.txt 211KB
index_t27.txt 187KB
train_t11.txt 186KB
train_t5.txt 173KB
train_t24.txt 163KB
train_t29.txt 162KB
共 226 条
- 1
- 2
- 3
资源评论
神仙别闹
- 粉丝: 2707
- 资源: 7662
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功