java的新闻自动系统设计与实现

题 目 基于java的新闻自动系统设计与实现 学生姓名 陈爱明 学 院计算机科学与工程 专 业 网络工程 班 级 112055A 学 号 12012055017 指导教师 许建 摘 要在当前社会,信息已成为一种隐型的财富,人们对信息的需求再也不是局限于单纯的电视、报纸等大众途径。其中不少人都习惯于在网上浏览新闻来了解身边事,国家事。但是网上的新闻千千万,新闻的标题和新闻的分类在一定程度上解决了我们查找的时间,但很多时候我们只想知道新闻的大意或者只想快速地阅读完一篇新闻,基于此种考虑,网络开发者们提出了一种“基于java的新闻自动系统”,该系统能够实现新闻的添加和等功能,能够使新闻和平常的新闻阅读一起配合为读者服务。这样读者可以根据阅读来最终选择是否要阅读新闻的全文。关键词:java;mysql; 新闻;play框架;hanlp自然语言包ABSTRACTIn the current society, information has become a stealth wealth, the demand for information is no longer limited to the mere television, newspapers and other mass channels. Many of whom are accustomed to browsing the Internet to learn news things around, country thing. But thousands and thousands of online news, headline news and free to some extent, solve the time were looking for, but many times we just want to know the effect of the news or just want to quickly finish read
 *好棒文|www.hbsrm.com +Q: @351916072@ 
ing a news article, based on this consider, web developers have proposed a "java-based News automatic summarization system," the system can add and news summaries and other functions, can make news headlines and news reader with the usual service for readers together. So readers can chose whether you want to read the full text of the news according to read the summary.Keywords: java;mysql;News Summary;play frame;hanlp Natural Language Pack第一章 绪论 11.1选题背景 11.2国内外现状 11.3研究内容和技术 1第二章 相关基础知识介绍 22.1开发平台ECLIPSE 22.2开发工具包JDK 22.3 PLAY框架 22.4 TEXTRANK算法 2第三章 系统需求分析与设计 33.1 功能需求分析 33.2 可行性分析 43.3系统概要分析 43.4新闻功能设计 6第四章 系统实现与测试 84.1 系统实现 84.1.1后台数据库设计 84.1.2用户管理 94.1.3编辑新闻 104.1.4新闻管理列表界面 104.1.5新闻图片的上传 114.1.6新闻 114.1.7新闻全文阅读界面 154.2系统测试 154.2.1测试的重要性 154.2.2测试的主要内容 15结束语 17致 谢 18参考文献 19第一章 绪论1.1 选题背景随着网络技术的发展,人们更加习惯于用计算机处理事情,过去人们想了解国家大事或新闻只能通过电视,广播或报纸,而现在人们可以通过网络获取新闻,这比之前方便的多。同时我们又会发现互联网包含的内容信息量大,内容也很丰富,新闻内容更新也及时,而且大部分新闻网站都会给新闻分类,所以身为读者可以十分方便地找到我们关注的新闻内容。读者也更习惯于根据新闻分类来选择自己感兴趣的内容。可是随着越来越多的人选择网络看新闻,新闻编辑者为了吸引更多的阅读者,会将新闻题目拟定的非常吸引人,会加一些最近流行的字眼,可是新闻里并没有相关的内容。正因为这样的情况的出现,对读者来说有时候新闻分类和新闻标题并没有很好的指向性。这算是现在不少新闻网站普遍存在的问题。同时又有些人空闲时间有限,他们只想在悠闲地时间内阅读更多的新闻。新闻这时候就有了用武之地,新闻简单的一句或几句话概括了一篇新闻的重要内容,读者可以通过阅读短短的来决定是否阅读全文。现在不少大型网站都有新闻的功能。1.2 国内外现状自从1958年H.P.Luhn在Ibm704机上面进行自动以来,自动技术发展到现在已经有50年了,这项技术在三四十年发展缓慢,直到上世纪八九十年代网络技术的发展,自动技术得到广泛的关注,随之技术得到了长足的发展,1995年,西方一个关于的英文期刊的发表预示着技术的黄金期来到。我国八十年代开始研究中文的自动技术,1988年之后陆续出现了两款基于中文的系统。这两款系统分别都可以适用于各种不同文章结构的文本,而且系统自动的准确度达到了百分之九十,这样的性能已经十分出色了。进入20世纪以来,很多系统陆续出现。这些系统的功能越来越丰富,性能也越来越强。1.3 研究内容和技术基于Java的新闻系统主要功能就是用户可以通过添加新闻后对新闻进行操作。这个系统能大大提高读者了解新闻的速度。经过使用者的诉求先要进行详细的需求分析,然后根据分析系统的整体逻辑和功能框架,选择合适的开发平台和开发方式,之后根据单位功能进行编码实现,这个系统还需要数据库的支持,需要考虑如何合理地建立数据库和数据表。在开发的过程中可以微调设计方案来优化系统,当然最后要测试系统的每一个基础功能,保证系统可以完美使用。写一份系统说明书也是必要的。第二章 相关基础知识介绍2.1 开发平台EclipseEclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)2.2 开发工具包jdkJDK是?Java?语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。2.3 play框架选用play框架进行开发,因为play框架的开发效率很高,排除代码错误也比较容易Play框架是一个full-stack(全栈的)Java Web应用框架,包括一个简单的无状态MVC模型,具有Hibernate的对象持续,一个基于Groovy的模板引擎,和建立一个现代Web应用所需的所有东西。Play框架的灵感来自于我们平时自己的java应用,它包括了web应用所需要的东西,其中包含:1.通过JDBC的关系数据库的支持。2.使用hibernate管理对象关系的映射(使用JPA API)3.集成的缓存支持,简单的分布式缓存系统(如果要的话)4.支持使用OPENID进行分布式身份验证2.4 TextRank算法TextRank自动算法详解自动就是要找到文章中的关键句,人类的理解是能概括文章中心的句子,机器的理解只能按照模拟人类的理解 就是拟定一个权重的评分标准TextRank的权重的思想是一句PageRank的迭代思想中衍生而来,公式如下:WS(vi)=(1-d)+d*Vj∈InViωjivk∈Out(Vj)ωjkWS(Vj)等式的左边用来表示句子的权重(weight_sum),等式右边的求和表示每个相邻句子对本句子的贡献程度过程包括(1).断句(2).分词并过滤停用词(3)计算BM25相关性阵列(4).迭代投票(5)排序输出。第三章 系统需求分析与设计3.1 功能需求分析在开发一个系统工程时需求分析是必要的。只有准确的需求评估最后才能满足用户的需求,如果需求分析错误,开发的东西满足不了用户,那只能是徒劳,当然用户的需求可能在开发当中变动,那就要靠双方及时的交流。本新闻系统需要实现以下几个功能1.添加删除编辑需要的新闻用户可以添加删除新闻(包括新闻标题 新闻内容 新闻图片)。3.新闻功能系统需要具备对新闻进行处理的功能,必须能概括新闻的重要内容,而且不能过长。3.查看新闻添加了新闻后可以看到新闻的 4.阅读新闻全文用户阅读了后可以选择阅读新闻的全文5.管理员管理员可以管理用户的账号3.2 可行性分析1.技术可行性:java,eclipse等软件一般的电脑都能运行。对于软件技术要求,java设计语言已非常成熟,图形制作工具可以来制作生动活泼的网页及美观的图形文件。2.经济可行性:由于本系统是用java语言在eclipse平台开发。所以没有什么经济上的压力。3.3 系统概要分析用户角色: 1.普通用户:可以添加编辑删除需要的新闻,当然还可以修改自己的密码。 2.管理员:可以添加编辑删除需要的新闻,可以管理普通会员。新闻系统是一个功能完善的新闻管理类网站 由前台新闻及新闻全文浏览和后台新闻管理两大部分组成。前台:1.新闻分类:新闻根据内容分为常见的几个类型(热点类,科技类, 游戏类,影视类)2.新闻列表:新闻列表显示您当前已经有的新闻,如果新闻添加后该页也会有相应的显示新的新闻,3.新闻:显示系统为新闻做出的,用户可以通过部分了解到该新闻的大致内容,以供用户选择自己喜欢的新闻内容。4.新闻内容页:用户看了新闻和以后还是能选择阅读全文。点击阅读全文后,会跳转至新闻内容页显示新闻的详细内容前台运行流程图如图3-1图3-1 前台运行流程图后台:管理员拥有最高权限1.用户列表(显示当前已有的所有用户) 2.添加用户(可以注册添加密码成为用户)3.编辑用户(可以修改用户的信息,修改用户的密码)4.删除用户(登陆管理员可以删除用户) 新闻管理1.新闻列表(通过新闻标题的形式显示新闻列表)2.添加新闻(支持新闻标题、新闻图片上传,新闻内容的添加)3.新闻编辑 (包含删除、修改新闻) 后台系统运行流程图如图3-2图3-2 后台系统运行流程图3.4 新闻功能设计一篇新闻形成的过程一般分为以下几步:1.对新闻文本进行预处理预处理过程包括对新闻本身进行划分段落、划分句子。2.计算新闻里句子的权值句子权重高的句子才能成为最后的新闻的素材。3.确定为文摘句根据句子的权重进行排序,最后权重高的成为文摘句,放入文摘句集合中。4.形成对可以成为的句子进行组合,变成新闻的。功能流程图如图3-3图3-3功能流程图第四章 系统实现与测试4.1 系统实现4.1.1 后台数据库设计数据库选用mysql,Play框架链接数据库的方式如下1.打开配置文件conf/application.conf ,测试mysql配置。代码如下db.url=jdbc:mysql://localhost:3306/newsabstract?useUnicode=true&characterEncoding=utf-8//连接数据库驱动程序db.driver=com.mysql.jdbc.Driver db.user=rootdb.pass=1234562.配置JPA代码如下//在控制台里面能看到生成的sql语句jpa.debugSQL=true#jpa.dialect=org.hibernate.dialect.MySQLDialect 数据库表结构如下1.设计表“attachments”如表 4-1表attachments 存放添加新闻时的新闻标题和图片文件的内容,还有添加新闻图片的时间 表4-1 图片文件表列名数据类型Key值允许空Idvarchar(255)Pri否_createdbigint(20)否_updatedbigint(20)否attachmentvarchar(255)否2.设计表“news”如表4-2表news存放着新闻的标题添加和编辑的时间和日期,新闻的分类,新闻的后的结果以及新闻图片的路径。表4-2 新闻表 news列名数据类型Key值允许空Idvarchar(255)Pri否createdTimebigint(20)Mul否updatedTimebigint(20)否abstractsvarchar(255)否contentlongtext否filePathvarchar(255)否isDeleteInt(11)否publicDatebigint(20)否titlevarchar(255)否typevarchar(255)否3.设计表“users”如表4-3表Users 存放添加的用户的账号,密码 ,用户名,人群类别以及创建更新的时间表4-3 用户表 user列名数据类型Key值允许空Idvarchar(255)Pri否createdTimebigint(20)Mul否updatedTimebigint(20)否accountNvarchar否isDeleteint(11)否nicknamevarchar(255)否passwordvarchar(255)否saltvarchar(255)否typevarchar(255)否4.1.2 用户管理利用管理员登陆后可以对普通用户账号进行管理(删除,添加,修改密码)用户管理界面如图4-1图4-1 用户管理界面4.1.3 编辑新闻编辑新闻模块主要实现对新闻的管理功能,包括添加修改删除1.添加新闻信息操作:点击添加新闻按钮,输入需要添加新闻的各项要素。包括新闻的标题、内容、分类以及新闻图片。系统会自动根据数据库中定义的字段要求判断用户输入的数据是否符合要求。如果不符要求,系统会提示错误。如果你有什么内容忘记填写,系统也会提示你某项内容不能为空,如果一切符合要求,系统会会更新数据库,当然新闻也就添加成功了。添加新闻的界面如图4-2图4-2 添加新闻界面图2.修改新闻内容点击新闻管理列表右侧的按钮可以修改对应的各项内容。之后的操作与添加新闻类似,只是最后是在数据库中更新一条记录,而不是添加一条记录。3.删除新闻内容点击新闻管理列表右侧的删除按钮,就可以删除对应的新闻内容,数据库中关于这条新闻的内容也会消失。4.1.4 新闻管理列表界面后台新闻管理界面显示当前已经添加的所有新闻,你可以选择对新闻进行任何操作,这里罗列了新闻的所有信息包括类别发布日期,如果发现这些信息错误可以及时修改。 后台新闻管理界面如图4-3图4-3新闻管理列表界面4.1.5 新闻图片的上传 新闻图片作为新闻的必需要素使用play.db.jpa.Blob类型可以上传到文件系统中,图片文件被上传到data下的attachments文件夹下,而新闻图片的文件名将会存储到Mysql数据库中,数据类型为varchar。Play框架自动对HTML窗体到jpa进行了文件上传绑定,play提供了操作二进制数据的方法,我们只需存储操作,play框架为我们进行了自动文件上传处理,在启动action方法前,上传的新闻图片已经被存储到tmp/uploads中,然后实体存储完成后,新闻图片会复制到data/attachments下,最后action方法完成后,临时文件将删除。新闻图片添加方式界面如图4-4图4-4新闻图片添加界面4.1.6 新闻1.分词断句功能:最后的都是文章中选出来的,所以最后想要正确的,断句不能出现错误。句子的结尾经常是以句号,问号,感叹号来结尾的,所以这些符号是我们用来断句的依据。分词句就有一个很大的问题就是怎样实现区分中文词汇和英文词汇,所以要选择合适的分词算法。讲文章段成句子的代码如下:/ * 将文章分割为句子 * @param document * @return */ static List spiltSentence(String document) { List sentences = new ArrayList(); for (String line : document.split("[ ]")) { line = line.trim();//去空格 if (line.length() == 0) continue; for (String sent : line.split("[,,。::“”??!!;;]"))//拆分字符串 { sent = sent.trim(); if (sent.length() == 0) continue; sentences.add(sent); } }return sentences; }2.句子的权重问题如果一句话在新闻中反复出现,那这句话很大程度上能表达这个新闻的大意,而且通常情况下,新闻的第一句话和最后一句话也会是对文章总结性的一句话,所以新闻的第一句话和最后一句也是很重要的。利用bm25相似度算法的代码进行句子权值的计算的代码如下: private void solve() { int cnt = 0; for (List sentence : docs)//增强for循环 { double[] scores = bm25.simAll(sentence);bm25相似度// System.out.println(Arrays.toString(scores)); weight[cnt] = scores; //weight_sum 是句子和其他句子的相关程度之和 weight_sum[cnt] = sum(scores) - scores[cnt]; // 减掉自己,自己跟自己肯定最相似 vertex[cnt] = 1.0;//权值 ++cnt; } for (int _ = 0; _ < max_iter; ++_)// max_iter最大迭代次数 { //D为文档句子的个数double[] m = new double[D]; double max_diff = 0; for (int i = 0; i < D; ++i) { m[i] = 1 - d; for (int j = 0; j < D; ++j) { if (j == i || weight_sum[j] == 0) continue; m[i] += (d * weight[j][i] / weight_sum[j] * vertex[j]); } double diff = Math.abs(m[i] - vertex[i]); if (diff > max_diff) { max_diff = diff; } } vertex = m; if (max_diff <= min_diff) break; } // 权值的排序 for (int i = 0; i < D; ++i) { top.put(vertex[i], i); } }3.形成关键句文档:最后形成的的句子数量又要有限制,所以形成关键时也会有句子数量的限制。形成关键句的代码如下:public static List getTopSentenceList(String document, int size) { List sentenceList = spiltSentence(document); List> docs = convertSentenceListToDocument(sentenceList); TextRankSentence textRank = new TextRankSentence(docs); int[] topSentence = textRank.getTopSentence(size);//限制关键句的个数 List resultList = new LinkedList(); for (int i : topSentence) { resultList.add(sentenceList.get(i)); } return resultList; }4.形成:在形成的时候还要规定的大小。之间句子的顺序也不能乱。int size = max_length / sentence_length_avg + 1;排序输出的代码如下:int index_buffer_x; int index_buffer_y; String sen_x; String sen_y; int length = resultList.size(); // 冒泡排序 for (int i = 0; i < length; i++) for (int offset = 0; offset < length - i; offset++) { sen_x = resultList.get(i); sen_y = resultList.get(i + offset); index_buffer_x = sentenceList.indexOf(sen_x); index_buffer_y = sentenceList.indexOf(sen_y); // 如果句子的顺序出现错误就对调他们 if (index_buffer_x > index_buffer_y) { resultList.set(i, sen_y); resultList.set(i + offset, sen_x); } } return resultList;新闻功能输出界面如图4-5图4-5 系统新闻界面4.1.7 新闻全文阅读界面当用户阅读完前台新闻列表里的新闻后,确定需要想看新闻全文后可以点击阅读全文进入新闻阅读界面。新闻全文阅读界面如图4-6 图4-6 新闻全文阅读界面4.2 系统测试4.2.1 测试的重要性一个网站做出来不可能就是十全十美的,可能会有不足的地方甚至是功能缺陷。一些功能预想难度可能与最后实际操作难度不一样,所以,最后而且我们在开发的时候可能更注重功能的实现。最主要的功能实现了并不意味着网站就能运行起来,在程序开发中难免会出现误差,我们做网站的目的是给人提供完美的服务,所以在程序投入使用前,系统测试是十分重要的。4.2.2 测试的主要内容为了确保测试的质量,我们要对基于java的新闻系统进行如下几个测试: 1单元测试 根据功能模块进行测试,每个功能模块会包括一个个小的单元功能,每个单元功能的实现才能促成功能模块功能的完美实现。 2集成测试 集成测试就是想了解各个功能模块之间能否完美的融合从而能实现全部功能;有可能出现各个功能不能同时实现的情况;个别小小的功能的缺失加起来可能导致很大的功能缺陷。3安全测试验证系统内的保护机构能否保证系统的安全,在测试软件中看系统对于程序的安全处理和安全防范。4确认测试 确认测试的目的就是对以上所有的进一步确认。将会按照预先的需求依次展示系统的功能,这是一次完整的测试。现阶段这样的测试已经满足要求。结束语过去学到的java理论知识不够支撑我做这样的系统,所以在新闻系统的开发中遇到了很多问题。开发的过程很艰难,但不能放弃。通过本系统的设计与开发,我得到了以下的结论:1.学习一门学科技术,最重要的是亲自动手实践,只有在理论中实践,我们才能尽快入门掌握它。2.由于之前没有什么开发系统的经验,所以在设计系统时经常会有考虑不到的情况,所以不停地积累经验很重要。3.在开发过程中难免会遇到各种问题,这个时候我们不能急,要耐心的尝试各种办法解决。4.一个系统想要吸引人,在系统功能齐全的情况下必须系统界面美观,人和系统的交互方式方便。但由于经验不足,我设计的用户界面很简陋。只是对基本功能进行了开发。5.本次开发,我参考了很多本系统的例子,吸取了一些别的系统的长处,希望随着知识的积累我能加强开发系统的能力。致 谢在本次做毕业设计的过程中,指导老师全程给了我很大的帮助,最初我在选题方面就十分地茫然,老师根据我的实际情况让我选了新闻这个题目,由于java的知识量不足,老师还为我推荐了几本书,前期开题报告开始就会不厌其烦地为我指出有毛病的环节,系统设计的开发平台工具也给了他的建议,在具体的编码方面也有不少的问题幸亏有老师的耐心指导,谢谢老师 。感谢我能遇到那么好的老师和同学,四年来我们相互关心相互支持,学校给我们提供了优越的学习环境和学习资源,让我们在知识技能方面有了很大的提高。大学给了我更多的阅历,教会了我要更加独立,谢谢我的大学。参考文献[1]杨烁,任晓菲.基于JAVA的技术[J].科技创新与应用,2015(21):79-80?[2]孙卫琴.Java Web开发技术详解[M].北京.电子工业出版社,2009[3]徐涛.基于自动文本的中文移动简讯系统[J].2012现代计算机专业版,2012,15(8),8-18[4]张筱丹,胡学钢.基于Web的新闻文本自动研究[J].2012,26(1):41-43[5]贺松平.基于MVC模式的B/S架构的研究及应用[D]:硕士论文.武汉:华中科技大学,2006[6]孔昊.Java Web设计实用教程:基于Eclipse环境的应用开发[M].北京.机械工业出版社,2012?[7]韩雪.Java JDK 7实例宝典[M].北京:电子工业出版社,2014[8]Jeff Linwood, Dave Minte. Beginning Hibernate [M],2010[9]Christian Bauer,Gavin Kin. Java Persistence With Hibernate[M],2010[10]张艳杰.Web新闻自动方法研究[D]:硕士论文.武汉.湖北工业大学,2013[11]王彩霞.试论自动技术[J].晋图学刊,2009(2):21-24[12]沈洲,王永成,许一震,吴芳芳.一种面向新闻文献的自动系统的研究与实践[J],2010,26(9):70-72[13]韩客松,腾伟.WEB页面中文文本主题的自动提取研究[J].情报学报,2009,20(2):210-222[14]刘挺,王开铸.自动文摘的四种主要方法[J].情报学报,2008,22(2):126-137[15]李保利,陈玉忠.信息抽取研究综述[J].计算机工程与应用,2003,39(10):20-39
目录
Play框架几个重要开发目录
1.app目录
app目录中用来存放可以执行的代码(包括java源代码和view模板)。
2.Conf目录
Conf目录下存放一些配置文件(包括application.conf和路由定义文件routes)
3.Public目录
Public目录存放的是可以被web服务器直接使用的静态文件(包括images,Css和JavaScript文件)。
4.Lib目录
Lib目录下存放应用程序需要的标准java库,他们会自动添加到classpath中去。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/wljs/500.html

好棒文