目 录
摘要 I
ABSTRACT II
1绪论 3
1.1 研究背景 3
1.2 文本分类研究现状 3
1.3 主要研究内容 4
1.4 本文章节安排 5
2理论基础与相关工具 6
2.1 中文分词 6
2.2 卡方检验 7
2.3 神经网络 10
2.3.1 神经网络简介 11
2.3.2核方法与径向基函数 12
2.4 支持向量机 12
2.4.1线性可分模式的最优超平面 12
2.4.2线性不可分模式的最优超平面 14
2.5 前端工具 15
2.6 后端工具 16
3需求分析 19
3.1 功能需求 19
3.2 界面需求 19
3.3运行环境需求 20
4系统设计 21
5系统实现 24
5.1 数据收集模块 24
5.1.1 web 界面实现 24
5.1.2 根据URL或本地文件解析网页 26
5.1.3 数据库设计与实现 27
5.1.4 数据库访问对象的单例实现 29
5.1.5 爬虫模块实现 29
5.1.5 收集数据说明 30
5.2 数据处理模块 33
5.2.1中文分词的IKAnalyzer实现 33
5.2.2 java 并发与同步 35
5.2.3 文档结构化存储的数据结构实现 37
5.2.4卡方检验实现 39
5.2.5 特征向量计算与归一化 41
5.2.6 libsvm工具箱的javaAPI使用 43
5.2.7 使用libsvm进行训练 46
5.2.8 机器学习效果评价 49
5.3判别模块 49
5.3.1用户交互web界面实现 50
5.3.2 文件上传功能实现 53
5.3.3 web service调用 53
6总结与展望 55
6.1 本文工作总结 55
6.2 未来研究展望 55
参考文献 57
致谢 58
翻译原文 59
译文 75
附录 86
3需求分析
3.1 功能需求
该系统是为了弥补人工判别网页的繁琐低效与机械评判网页的不够灵活而开发的,所以要保障判别模块的判别效果。为了实现这一目的,数据的收集加工都要认真对待,每个阶段的需求见下。
数据收集任务量不小,靠人工去一个个地保存网页,比较麻烦且效率很低,所以考虑实现一个爬虫模块来辅助收集。该系统的机器学习是一个有监督的学习过程,所以收集到的网页要想用于训练还需添加标注,该系统也要实现方便加标注的需求。
机器学习接受的输入为多个带标签的向量,所以该系统要实现网页解析、中文分词、计算特征向量这些需求。为了得到更有效的特征向量,还需要降维与向量归一化。
判别模块接受网页文件、url两种用户提交。判别结果要详实完备,输出结果应包括网页的标题、正文、分词结果、特征向量、判别结果。为了给用户一个参考依据,还要附带判别结果准确率估计这一参数。此外,为了让该系统用途更广,除了与人交互外,判别模块同时也提供了web 服务,可以供其他代码跨平台批量调用。
3.2 界面需求
该系统有些模块有用户交互的过程,选用web页面来实现效果很好,因为它可以跨设备、跨操作系统来展现。
收集模块包含爬虫模块。设定完初始url之后,它就应该展现Jsoup解析后的标题、正文内容,然后等待用户判别。如果它是正样例网页,就可以点击“是”按钮,存入到数据库存放正样例的表中。如果它不是正样例网页,就可以点击“否”按钮,存入到数据库存放反样例的表中。本文转载自http://www.biyezuopin.vip/onews.asp?id=15114如果该网页内容偏少,无法确定,就可以点击“不清楚,跳过”按钮,忽略对该网页的处理。当写入数据库成功时,也需要有对话框进行反馈。
机器学习是一次性的过程,代码直接实现直接又简单,这部分不需要界面。
判别模块接受网页文件、url两种用户提交,所以需要给出两个提交框。考虑到页面整洁且这两个提交框是二选一的情况,提交框并不直接显示,而是由用户选择哪一种输入后触发相应的模态框来交互。上文提到的6个输出参数都要醒目地以h2标题形式展现。
3.3运行环境需求
需求1:java运行环境。这是显然的,要求版本为jre 1.7及以上。
需求2:电脑联网。该系统需要从互联网中抓取数据,所以必须联网。
需求3:web容器。该系统有web网页模块,所以需要部署在web容器中,推荐tomcat工具。
需求4:数据库。该系统一些信息需要持久化保存,所以只靠内存是不够的,推荐mysql数据库。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- Bootstrap 根据屏幕大小自适应样式 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
<!-- 可选的Bootstrap主题文件(一般不用引入) -->
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="http://cdn.bootcss.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="../css/app.css">
<title>基于SVM的算法实践相关文本判别系统——判别模块</title>
</head>
<body class="container">
<nav class="navbar navbar-default">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a class="navbar-brand" href="#">基于SVM的程序设计相关文本判别系统——判别模块</a>
</div>
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="index.html">说明 </a></li>
<li><a href="use.html">判别</a></li>
</ul>
</div>
</nav>
<!--
<div>
<span class="text">该系统将在5月26日答辩完后开放</span>
</div>
-->
<div>
正样例为侧重于算法编程的网页,如 下面三个<br>
http://blog.csdn.net/chuchus/article/details/23205283<br>
http://blog.csdn.net/chuchus/article/details/25340723<br>
http://blog.csdn.net/zxy_snow/article/details/7527713<br>
</div>
<hr>
<div>
用到的技术与工具<br>
jersey——webService框架<br>
jackson——json与java对象的序列与反序列化<br>
tomcat-jdbc-pool——数据库连接池<br>
spring——依赖注入框架<br>
bootstrap——前端css框架<br>
AnjularJS——前端MVC框架<br>
ajax——异步http请求<br>
maven——项目依赖管理工具<br>
</div>
<div class="myfooter">
©2015 <span class="text">yichu</span>
| 沪ICP备15017991号
</div>
</body>
</html>