文本信息处理系统的设计与实现-改_第1页
文本信息处理系统的设计与实现-改_第2页
文本信息处理系统的设计与实现-改_第3页
文本信息处理系统的设计与实现-改_第4页
文本信息处理系统的设计与实现-改_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、注:居中,宋体,小一号,加黑。阅后删除此文本框。大连理工大学本科毕业设计(论文)文本信息处理系统的设计与实现(论文)题目The Subject of Undergraduate Graduation Project (Thesis) of DUT注:此处是论文中英文题目,中文题目,不超过20个汉字,居中,字体:华文细黑,加黑,字号:二号,行距:多倍行距1.25,间距:段前、段后均为0行,取消网格对齐选项。英文题目,与中文题目对应,居中,字体:Times New Roman,字号:三号,加黑,行距:多倍行距1.25,间距:段前、段后均为0行,取消网格对齐选项。阅后删除此文本框。阅后删除此文本框。

2、注:此处按照实际情况填写即可。打印(宋体,小三)或手写都可以。阅后删除此文本框。学 院(系): 软件学院 专 业: 软件工程 学 生 姓 名: 许 瀚 学 号: 201292445 指 导 教 师: 陈 志 奎 评 阅 教 师: 完 成 日 期: 大连理工大学Dalian University of Technology大连理工大学本科毕业设计(论文)题目注:页眉,居中,宋体,五号,论文中文题目。阅后删除此文本框。摘 要大数据,它指的是数据集是非常大,使用现有的数据库管理工具来处理,也出现了许多重要的应用,比如上网搜索,商业信息,社交网络,社交媒体,基因组学和气象学。大数据提出了数据库和数据分

3、析研究了隆重的挑战。应对大数据的挑战,文本处理是不可或缺的一部分。大数据与人们以各种方式连接的媒介。尤其是,大型数据集探索性分析和隐私保护数据共享和分析按需数据挖掘,这些内容都是数据处理的发展方向。由于资源供应的弹性和按需性质,云计算提供了一个高性价比和强大的技术大数据的能力。在这种模式下,数据服务提供商能够租地理上分散的数据中心来处理他们大量的数据。数据被动态生成,资源价格变化,随着时间的推移,从不同的不同地理位置的移动数据,数据中心而供应充足的计算资源来处理它们,是实现成本效益的一项重要任务。联合线上的方式,提出了解决这一问题的任务。我们针对问题,优化问题,然后将其分离步诹进行实现。以最小

4、化,包括计算成本,存储长期时间需要的平均成本等成本,带宽成本和延迟成本。本文的主要目的是提供可用于执行大数据文本处理平台的实现进行深入的分析。适用于普通WEB应用搭建,构造一个基于文本处理的数据处理平台,针对分词,关键字提取,全文检索,相似度查找等功能进行集成的网站。除了WEB应用部分,在每个这些平台所使用的软件框架的详细说明也与自己的长处和不足讨论。一些描述的关键特性有可能帮助读者做出关于根据他们的计算需求的平台是正确的选择一个明智的决定,能够提供更多的参考。关键词:写作规范;排版格式;毕业设计(论文)注:字体:仿宋_GB2312,小四;关键词之间用分号间隔。阅后删除此文本框。- I -大连

5、理工大学本科毕业设计(论文)题目注:论文英文题目。阅后删除此文本框。The Subject of Undergraduate Graduation Project (Thesis) of DUTAbstract “Abstract”不可省略。;或者手动设置成字体:Times New Roman,居中,字号: 标题“Abstract”上方是论文的英文题目,字体:Times New Roman,居中,字号: Times New Roman,字号: Key words与摘要正文之间空一行。Key words与中文“关键词”一致。词间用分号间隔,末尾不加标点,3-5个;Times New Roman,

6、小四,加粗。Key Words:Write Criterion;Typeset Format;Graduation Project (Thesis)- IV -注:在该页面中点击鼠标右键,选择“更新域”,在弹出窗口中选择“更新整个目录”,确定即可自动生成目录。标题“目录”,字体:黑体,字号:小三。章、节标题和页码,字体:宋体,字号:小四。阅后删除此文本框。目 录摘 要IAbstractII1 绪论11.1系统研发背景11.2系统研发现状21.3本文主要工作21.4论文组织结构32 相关技术和原理32.1 分词32.2 提取关键字52.3 全文摘要72.4 Lucene82.5 索引122.6

7、分析142.7 搜索142.8展示搜索结果153 系统需求分析153.1 业务需求分析153.1.1全年犯罪情况分布图153.1.2全国各省犯罪案件分布图153.1.3案发场所的分布图153.1.4词频统计153.1.5判决年限统计图163.1.6作案性质划分统计163.1.7基于相关度的文本摘要分析163.1.8关键词展示163.1.9主题概率分布163.2 功能需求分析163.2 功能需求分析164 系统设计174.1系统设计原则与目标184.2系统核心功能模块设计234.2.1中文分词模块264.2.2索引设计265系统测试27结 论(设计类为设计总结)29参 考 文 献30致 谢31大

8、连理工大学本科毕业设计(论文)题目 注:章、节序号的后面,空一个字即汉字输入状态下敲两下空格键。这样,序号与标题文字之间界限清楚。本文的第一章至第四章为规则说明,可以直接删除,从第五章开始作为论文书写模板。阅后删除此文本框。1 绪论1.1系统研发背景时下是一个信息数据爆炸的年代,我们在生活中无论是购物,交友,停车,健身,旅行还是读写,都在无时无刻的创造着新的数据,在海量的数据集中,很难通过普通的数据处理方法进行数据的分析和清洗,在时间与空间上都难以为满足需要,所以大数据的概念在近年来也持续升温。社交媒体时代,用户能够通过互联网来表达自己的意愿,进行评论或表达自己的观点。需要分析的数据不再局限于

9、能够较好的处理的“冷酷”且“坚硬”的结构化数据。更多的需要处理的非结构化数据成了近年来研究和攻克的方向。文本分析的目的是讲所有的非结构化数据进行清洗、处理、整合从而变成结构化数据,但由于超过80%的数据都是非结构化数据的今天,我们很难找个一个通用的处理非结构化数据的手段,所以对研究对象的文本进行学习总结归纳以及提取是一个非常重要的过程,存储与分析中文文本数据也是技术上的关键,如何能够存储并分析海量数据,生成精确的用户标签,依赖于数据存储系统和文本分析系统的技术。飞速发展的计算机互联网,信息已经呈爆炸式增长,大量的零散信息在互联网上传播。近年来不管是腾讯QQ,还是微信聊天,亦或是淘宝京东这样的购

10、物平台的用户都在迅速的增多,而每日由用户生成的日志、博客、微博和评论的数量都十分庞大。在这样一个时代,用户的选择成了公司所想要了解的重要信息,这些信息成为了丰富的互联网资源。有着潜在的高价值,这些资源面前如何解决迷茫、无从下手,有效地处理海量信息和资源是一个非常重要的课题。例如,在购物网站上某件商品的评价,微博某一突发事件的公众发表的观点和看法,比如豆瓣网上对书籍、影视作品的评价等等。通过对这些带有明显语义倾向的文本进行快速、准确、有效地分析,可以挖掘出人们潜在的见解和态度,如消费者对商品的满意程度,可以为其他消费者购买时提供参考,为企业级用户和个人提供信息参考以及决策支持。人工手动的判断和分

11、类固然准确,但却消耗了大量的人力成本。因此,如何利用计算机辅助来快速准确、批量地识别出文本的情感倾向性,成为了本系统的一个重点。1.2系统研发现状由于我们在汉语书写和表达森罗万象,所以无论我们的分词是多么的规范,所做的分词表有多么的完备。汉语自动分词存在的歧义都一直存在,这也影响到了分词系统的切分的精度。在分词中存在的歧义的字段是在分词实际运用中最大的障碍,所以学者们纷纷将歧义字段的处理作为自己的算法研究的重点。目前,Lucene作为世界上最流行的开源全文检索的工具包。对其的运用和研究结果已经在很多搜索引擎上被使用。Lucene为使用者提供了一个很灵活的API的接口,用来设置数据的存储结构,可

12、以很灵活的嵌入到很多实际项目中,来构成一个全文检索的系统。当我们使用Lucene构造一个基于中文文本检索系统时1,因为存在着中英文两个语言之间的形式与结构差异,我们在对中文文本信息进行检索时,不能再用自带的英文检索方法去处理,因此,得对基于Lucene的检索系统做一些改变使其能够支持中文文本的检索。1.3本文主要工作本系统面向大量的文本信息,需要处理大量的训练集,把这些信息作为训练的基础,然后构造一个测试过程,通过这个过程作为系统的输出,主要的功能是对文章进行分词,得到合法合理的词汇,并且对词汇进行整合,通过词汇之间的关系,以及文章之间的关系进行整理,依据文章的频率和词汇的重要的进行预测得到文

13、章的关键字。整个过程需要通过良好的用户界面展示出来,这样方便普通人通过非编程方式访问应用接口,获得对应的信息,之后需要对所有的文章建立索引,搭建搜索引擎,在搜索引擎之中插入必要的索引,这样通过索引就能快速找到需要的信息,对于海量文本处理来说是非常重要的。多数大型文本的理解系统有被假定输入下设计文本将在相当“整齐”的形式,例如,新闻报道和其他编辑的文本。然而,大量的自然语言文本例如,备忘录,草稿,谈话笔录等,与“整齐”显著的不同特点文本,和读者有关的特殊问题,如拼写错误的单词,漏字,语法错误,缺失时期等我们的解决方案这些问题是需要考虑意外的,基于这两个表面上的知识所描述的情况。这些句法和语义的期

14、望可用于从上下文推测生词,约束与可能感官多重含义,填写错字,并解决指称。1.4论文组织结构本文共六章,章节安排如下:第一章绪论,介绍本系统开发背景及意义,对本系统研发相关的国内外现状做简单介绍,最后阐述本文的主要研究内容并对论文的章节安排加以描述。第二章关键技术介绍,详细介绍本系统开发所用到的关键技术,包括分词,提取关键词,全文摘要,Lucene等。第三章系统需求分析:通过对调研,分析文本分析的需求以及功能需求,为系统的设计与开发提供基础准备。第四章系统设计:通过需求分析,对本系统进行设计,包括软件架构设计、功能模块设计以及数据库设计。第五章系统实现和测试:对系统的核心关键模块的实现进行详细的

15、分析描述,包括分词,提取关键字,全文摘要,统计四大大模块。最后对系统核心模块的测试情况进行介绍,确保系统能够正确运行。最后总结与展望:对本文工作进行总结,并分析系统的优缺点,对该课题的进一步工作进行展望。2 相关技术和原理2.1 分词本系统针对的对象是法院的盗窃卷宗,包含了大量的法律相关的中文信息,在文本提取上选用的是中文分词算法。英文分词非常简单,因为英文单词之间有明确的分隔符。而中文却没有,中文一句话本身就可以有不同的断句,比如“人多病少財富”,既可以是“人多病,少财富”也可以是“人多,病少,财富”,除此之外断句之间也会产生交集,比如“国外科学名著”中“国外”,“外科“,”科学“,”学名“

16、,”名著“都可以是一个单独的词,这些问题都加大了中文分词的难度,导致很多歧义,一个好的分词算法应该尽量识别中文文本当中的歧义,尽量划分出独立且完整的语句。分词算法本身是一个基础研究,已经有大量的算法能够提供很好的分词效果。比较常用的分词技术有:(1)基于字典、词库的匹配分词算法基于字典、词库的匹配分词算法需要预先整理出一个中文的词库,在分词时与该词库中的词语一一对比,若出现则划分为一个词语,继续读取下一个字符处理。显然这种匹配方法的效率很低。(2)基于规则的分词法基于规则的分词法是一种基于上下文理解的分词方法,通过对句法、词法的分析,类似编译原理中根据规则对字符串进行匹配识别,在性能上有其最大

17、的弊端在于需要人为建立分词规则库。(3)基于词频统计的分词法基于词频统计的分词法顾名思义是结合基于词典、词库,并基于统计值选出最优的匹配方案得到分词结果。(4)基于理解的分词法基于理解的分词法是一种人工智能的分词方法,以此模拟人脑的思维方式,理解文本的含义,学习推理的过程,对文本进行分析之后得到分词结果。(5)N-gramN-gram 分词法又称为汉语语言模型。 N-gram 将文本中相邻 N 个字符组成一个词语来划分文本词汇。显然这种方式会产生很多无意义的分词,需要统计后去掉低频和无意义的词汇。常用的是二元的 Bi-Gram 和三元的 Tri-Gram。比如说最简单的”最大匹配算法“,也就是

18、尽量匹配最长的单词,直到句子被完整的划分完才结束。这种算法符合中文从左向右阅读的习惯,但是并不是完美的算法,通过修正一些偏差能够避免问题,比如明显的”不可能“要明确划分成”不“和”可能“这样的两个单词,而不是完整的单词,这样的一张辅助表可以优化算法,但是这样的辅助规则可以指定无数多而且不是普遍适用的,所以上面的算法归根到底还是按照的是人类的思维,而没有考虑把问题变得更加形式化以便计算机能够更好的处理类似的问题。台湾的蔡志浩老师1996年提出的”MMSEG: A Word Identification System for Mandarin Chinese Text Based on Two V

19、ariants of the Maximum Matching Algorithm”对最大匹配法进行了很好的扩展1,他规定了几条基本要素,词典和扩展算法,达到了98。41%的匹配率。现在,国内专家学者在汉字分词研究的领域已取得不小的进展,但是目前自然语言处理依旧有着许多难题,主要存在于文本模型表示方法和特征抽取方式上:尽管现有文本表示方法在解决面向主题分类的任务时表现出了良好的性能和效果,但是在处理文本情感倾向性等问题上仍然存在着诸多不合理性。例如:文本空间向量表示法虽然能够提取出原始文本中的关键词语,但是却破坏了原有的词语的顺序和逻辑。文本空间向量模型虽然简化了文本分类的任务,但是也使得原始

20、文本丢失了很多重要的信息,而这些信息往往是文本情感分析等自然语言处理新的应用的一些重要特征。举个简单的例子:“这瓶洗发水,适合头发很干的人用”。“用了这瓶洗发水,头发变得很干”。这两句句子的主要成分差不多,如果使用文本空间向量表示模型也都能提取出“洗发水”、“很干”等几个关键词。在文本空间向量表示模型中,两个文本所表示成的向量距离并不是很大,但是其原本含义却差之千里。因此,如果不对文本特征表示方法进行改进,使其包含足够多的特征信息,普通的基于机器学习的文本分类方法是无法完成这种文本分类任务的。显然,传统的文本分类模型把所有文本特征词以无序集合的形式组织在一起的方法不适合新的文本分类的研究领域。

21、鉴于此,本课题提出了一种文本纹理的概念,这种概念模型能够很好地保留文本中词语之间的关系。文本纹理应包含词语间的依赖关系、词性组合、句式句型、修辞手法等等。在这个概念之上,将这些特征表达为文本纹理模型,并将其应用到真实的文本数据中。2.2 提取关键字提取关键字非常简单的方式就是通过提取出现频率次数最多的单词即可,也就是词频,但是这有一个问题就是类似“的”这样的助词往往是最多的,这些词本身没有任何意义,对于关键字的提取没有帮助,所以需要过滤掉这些单词,而过滤掉这些单词的方法就是通过和其他的文档进行比较,去衡量这个单词的常见性,比如说“的”在文档中出现的同时在文章中也出现了很多次,那么这个词就没有显

22、得很重要,而如果某个词在当前文章中出现了很多次,但是在其他文章中出现很少的话,就表明这个词在这篇文章中比较特殊,所以这篇文章的关键词就应该是这个词,这样既避免了高频无关词的影响,又能突出低频有关词的作用,相对于其他文章的权重被称为“逆文档频率”。所以,我们需要一个重要性调整系数,衡量一个词是不是常见词。如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。用统计学语言表达,就是在词频的基础上,要对每个词分配一个"重要性"权重。最常见的词("的"、"是"、"在")

23、给予最小的权重,较常见的词("中国")给予较小的权重,较少见的词("蜜蜂"、"养殖")给予较大的权重。这个权重叫做"逆文档频率"(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见程度成反比。知道了"词频"(TF)和"逆文档频率"(IDF)以后,将这两个值相乘,就得到了一个词的TF-IDF值。某个词对文章的重要性越高,它的TF-IDF值就越大。所以,排在最前面的几个词,就是这篇文章的关键词。结合这两点的算法就是“词频逆文档率算法”2。

24、这个算法能够很好的提取文章当中的关键字。TextRank关键字提取算法TextRank是基于图的文本处理算法,是由PageRank演化而来。基于图的排名算法是一种归约的算法,根据图上顶点的重要性,考虑从整个图递归计算的全局信息,而不是只依赖特定的顶点信息。通过基于图的排名模型实现的基本思想是“投票”或“推荐”。当一个顶点链接到另一个,它基本上是对于其他顶点在投票。票的数量越高,被投的这个顶点的重要性就越高,此外,顶点的重要性也决定了投出的票的重要性,这个信息也被排名模型考虑。因此,要与顶点相关联的得分的基础上确定的得票情况,也就是最后的权重值排序。从分配一个任意值给图中的每个节点开始,计算迭代

25、,直到下一个给定的阈值实现收敛之后重复运行该算法,每个相关联的顶点的得分,其表示在图中的顶点的“重要性”。最终值获得TextRank运行完成后不受选择的初始值的影响,所以迭代收敛的数目可以是不同的。为了使基于图形的排名中的应用和算法适用于自然语言文本,我们要建立表示文字和互连字或其他文本实体的具有意义的图形。这取决于应用的类型,各种类型或者特征的文本单元可加入作为顶点在图中,例如单词,短语,整个句子,或其它。同样地,也要决定关系的类型,用于任何两个这样的顶点之间绘制连接,例如词汇或语义关系,上下文重叠等。文本的特性加入到图中,基于图的排名算法的自然语言文本的应用包括以下主要步骤:1. 确定文本

26、单位的定义,并将它们添加到图中的顶点。2. 确定连接文字等单位的关系,在图中利用这些关系来绘制顶点之间的边。边缘可有向或无向,加权或不加权。3. 迭代基于图的排名算法直到收敛。4. 根据他们的最终得分排序顶点。使用连接到每个顶点值排名/选择决定。在下文中,我们研究和评估TextRank应用,从涉及文本单位排名两个自然语言处理任务来考虑:(1)关键词抽取任务,对于一个给定的文本,由选择关键字句的代表(2)句子抽取任务,在文本组成的最“重要”的句子的识别,它可以用于构建摘要。一个关键字提取应用程序的任务是在文本中自动识别一组术语最符合描述的文档。这样的关键字可能构成有效的条目来建设一个自动索引。同

27、时一个文档集合,可以用于文本分类,或者可以用作用于给定文档的简明摘要。此外,用于在文本重要术语自动识别系统可以被用于术语提取的问题,和特定领域的字典。此应用程序的预期最终的结果是一组词或那些代表对于一个给定的短语或自然语言文字。加入TextRank关键字提取算法,讲解算法原理,可以对比PageRank2.3 全文摘要自动摘要也是自然语言处理当中的一个难点,文本摘要基本上都是对文章全文信息进行过滤之后提炼得到的信息,重组之后的句子应该比原本更加的简单和明确。文章的特征摘要是文本抽象化的一个重要组成部分,几乎是对文本分类是否成功的一个关键因素,对于文章的特征能够详尽的表现出来。特征对于文本来说是对

28、原始文本的抽象刻画,需要对冗余信息进行排除,并转化、提取成计算机的模式。对文本抽取特征的准确率高低直接影响了分类的效果。此外,对特征向量维度的控制也是需要关注到重点。特征维度越高,对原文本描述所丢失的信息越少,但是计算机处理起来效率越低,甚至会造成内存溢出;特征维度太低,特征抽取时损失了很多信息,可能会导致分类准确率下降。摘要的历史要远远长于计算机的历史,因为从很早开始人们对于书籍都会添加摘要,但是,人工添加摘要的方式已经不适用于现在海量数据的互联网信息社会,对于重点对象进行人工摘要尚且可以,但是对于几万份的卷宗进行摘要是一个耗费巨大人力物力的事情,并且人工摘要具有很大的主观性,而计算机自动生

29、成的摘要则不会具有主观性,摘要的内容完全是由算法生成的,不会受主管控制,这样也保证的搜索结果的中立性。全文摘要的主要是通过对文档进行分析,比如说每个阶段划分成一个标准,按照重要程度给每个单元赋值,得到分析结果,然后进行文摘提取,这一步需要做的是确定生成摘要要使用的基本单元,比如限制低层次的语言,选择较高层次的语言,例如主从复合句,等富含语法结构的句子,这样更具有代表性。最后根据文章摘要的比例,结合我们选取的语言单元进行组合最后生成文章摘要。在本系统当中依赖的是lucence这个全文检索系统的功能,lucence将会在下一节介绍。TextRank摘要提取TextRank句子抽取的问题,可以被视为

30、类似于关键字提取,因为这两个应用程序的目的是对于给定的文本确定序列。在关键词提取,候选文本单位包括词或短语,而在句子提取,我们处理整个句子。文本分类结果非常适合这种类型的应用程序,因为它允许基于整个文本的信息计算一个递归的文本单元的排序。将文本分类,我们首先需要建立一个与文本相关的图,图中顶点代表单位为排名。这项任务的句子的提取,目标是对整个句子进行排序,因此一个顶点被添加到图都是以句子问单位的。对于文本中的每一个句子。用于关键字提取的共生关系,不能应用于这里,因为文本单位代价是明显大于一个或几个词,和“共现”是不是一个有意义的关系,这样的大背景。相反,我们定义一种不同的关系,它决定了连接两者

31、之间的一个“相似”的关系,作为一个函数的内容重叠。这样一个句子之间的关系可以看作是一个过程一个句子,在一个文本中,以解决某些概念,给读者一个“建议”,以指在文本中的其他句子地址相同的概念,因此,一个链接可以被画在任何这两个这样的句子之间常见的内容。句子重叠可以简单地作为常见的标记之间的数量,这两句话的词汇表示可以通过语法过滤,某些句法范畴的计数词,例如开放类词,名词和动词等,为了避免促进长句子,我们使用归一化因子,分开内容的重叠。2.4 Lucene来自Apache软件基金会库,Lucene3是一个开源的,高度可扩展的文本搜索引擎。可以在商业和开源应用程序使用Lucene。Lucene的强大的

32、API主要集中在文本索引和搜索。它可以用来为应用程序,如电子邮件客户端,邮件列表, Web搜索,数据库搜索等网站如维基百科,还有LinkedIn已经搭载的Lucene的搜索功能。具有强大的,准确的,高效的搜索算法。计算每个匹配一个给定的查询,并返回分数排名最相关的文档文件的得分。支持多种强大的查询类型,如PhraseQuery , WildcardQuery , RangeQuery , FuzzyQuery , BooleanQuery ,等等。支持人类进入丰富的查询表达式解析。允许用户使用自定义排序,过滤,延长搜索行为,并查询表达式解析。使用基于文件的锁定机制,以防止并发的索引修改。允许同

33、时搜索和索引。Lucene使得你索引文本格式提供的任何数据。 Lucene的可以与几乎任何数据源兼容,只要可以从中提取文本信息使用。可以使用Lucene来保存HTML文档中,微软Word文档, PDF文件等索引和搜索数据。在索引数据的第一步是让它在简单的文本格式中呈现。可以使用自定义解析器和数据转换器做到这一点。Lucence架构图索引是现代搜索引擎的核心,建立索引的过程就是把源数据处理成非常方便查询的索引文件的过程。为什么索引这么重要呢,试想你现在要在大量的文档中搜索含有某个关键词的文档,那么如果不建立索引的话你就需要把这些文档顺序的读入内存,然后检查这个文章中是不是含有要查找的关键词,这样

34、的话就会耗费非常多的时间,想想搜索引擎可是在毫秒级的时间内查找出要搜索的结果的。这就是由于建立了索引的原因,你可以把索引想象成这样一种数据结构,他能够使你快速的随机访问存储在索引中的关键词,进而找到该关键词所关联的文档。Lucene 采用的是一种称为倒排索引(inverted index)的机制。倒排索引就是说我们维护了一个词 / 短语表,对于这个表中的每个词 / 短语,都有一个链表描述了有哪些文档包含了这个词 / 短语。这样在用户输入查询条件的时候,就能非常快的得到搜索结果。对文档建立好索引后,就可以在这些索引上面进行搜索了。搜索引擎首先会对搜索的关键词进行解析,然后再在建立好的索引上面进行

35、查找,最终返回和用户输入的关键词相关联的文档。全文检索的核心功能主要是两点检索技术基本原理:1、如何创建索引 2、何查询。下面就来主要分析基本原理和相关的具体内容。排序机制排序的流程图Lucene内部隐含了检索的排序算法。Lucene默认是按照自己的相关度算法进行结果排序的。主要流程如下:Lucene 将信息检索中的Boolean model (BM)和Vector Space Model (VSM)联合起来,实现了自己的评分机制。VSM模型如下: 计算某个查询q的文档d得分如下(摘自API文档注释):其中每个因子的分析如下: (这些公式最好重新弄一下统一格式)1) 

36、60;        在Lucene的实现中,使用了  2)          反映有多少个文档包含了该term,文档数越多,该因子的值越小,反之越大。计算idf的常用方法为   )          查询时期t的加权,或者由t.setBoost(int boost)来

37、指定4)          压缩几个索引期间的加权和长度因子。计算公式如下:其中的因子解释如下:Document boost:文档加权。在索引创建过程中写入了索引中。用 doc.setBoost()Field boost:字段加权,在索引创建过程中写入了索引中。 field.setBoost()lengthNorm(field):由字段(Field)内的 Token 的个数来计算此值,字段越短,评分越高,在做索引的时候由 Similarity.lengthNorm 计算。5) 

38、0; 评分因子,是基于文档中出现查询项的个数。越多的查询项在一个文档中,说明些文档的匹配程序越高。6)   查询的标准查询,使不同查询之间可以比较。此因子不影响文档的排序,因为所有有文档都会使用此因子。这个因子是在查询的时候计算的。而sumOfSquareWeights的计算由下面来得到:Lucene写的太粗略了,可以加入Lucene排序的打分机制。创建索引的详细过程并且如何优化。搜索的详细过程并且如何优化2.5 索引我们为什么要建立索引呢?索引很高效-在一些比较厚的书籍后面我们往往能够找到附关键词的索引表(比如:川菜:17,46页,湘菜:53,72页)

39、,它能够帮助读者比较快速的地找到相关内容的页码。而数据库索引能够大大提高查询的速度的原理也是这样。我们可以想象一下通过书后面的索引查找的速度比我们去一页一页的翻找查询来说要快多少,当然索引的效率之所以很高,另外一个原因是它是排好序的。对于检索系统来说它的核心是一个排序的问题。要怎么解决这一问题,我们采用了反向索引的机制。所以我们在建立一个高效的检索系统的关键就是建立一个反向索引机制,将数据源(比如多个文本)排序顺序存储的同时,有另外一个排好序的关键词的列表,用来存储 关键词=文章映射关系,利用这样的映射关系索引:关键词=>出现关键词的文章编号,出现次数(有时会包括位置:起始偏移量,结束偏

40、移量)(详细可见4.2.2中表1)。检索的过程就是把模糊查询变成多个可以利用索引的精确查询的逻辑组合过程。从而大大提高了多关键词查询的效率,所以,全文检索问题归结到最后是一个排序问题由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问题,这也是大部分数据库对全文检索支持有限的原因。Lucene最核心的特征是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了拓展接口,用以方便针对不同应用的定制。索引是将文本数据转换成便于快速搜索的格式的过程。一个简单的类比是,你会发现在论文文末的索引:这个索引指向相关内容出现的位置。Lucene的存储在一个数据结构中的输入数据被称为倒排索引

41、,它是存储在文件系统或存储器作为一组的索引文件。大多数Web搜索引擎使用倒排索引。它可以让用户快速的进行关键词查询,并查找匹配给定查询的文件。文本数据被添加到索引之前,它是由一个分析器处理。在计算机科学中,一个倒排索引(也称为“文件或倒排文件”)是一个索引数据结构,它将一个映射从存储在数据库文件中的位置内容(如单词或数字),或者在文档或文档集(命名为一个正向索引,从文档到内容的映射)。一个反向索引的目的是允许快速全文检索,增加处理的成本,当一个文档添加到数据库中。倒排文件可能是数据库文件本身,而不是它的索引。它是最流行的数据结构中使用的文件检索系统。此外,一些重要的通用的基于主机的数据库管理系

42、统都在使用倒排表的架构。一个未经处理的数据库中,一般是以文档ID作为索引,以文档内容作为记录。而倒排索引指的是将单词或记录作为索引,将文档ID作为记录,这样便可以方便地通过单词或记录查找到其所在的文档。倒排索引有2个主要的反转索引的变体:一个记录水平的倒排索引(或倒排文件索引或只是一个倒排文件)包含一个对每个单词的文档的列表。一个字级的倒排索引(或全倒排索引或倒列表),另外包含一个文档中的每个字的位置。后者的形式提供更多的功能(如短语搜索),但需要更多的处理能力和空间来创建。Lucence建立索引相关对象如下:Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮

43、件,或者是一个文本文件。一个 Document 对象由多个 Field 对象组成的。可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。Field 对象是用来描述一个文档的某个属性的,比如一封电子邮件的标题和内容可以用两个 Field 对象分别描述。在一个文档被索引之前,首先需要对文档内容进行分词处理,这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。针对不同的语言和应用需要选择适合的 Analyzer。Analyzer 把分词后的内容交给 IndexWriter 来建立索引。IndexWriter

44、是 Lucene 用来创建索引的一个核心的类,他的作用是把一个个的 Document 对象加到索引中来。这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。参考优化读取和写入整个索引,是一项IO密集型的应用过程。 优化操作背后的想法是在Lucene索引重新组合所有的各个环节,构成一个单一的段,这样可以大大降低查询时间,没有真正打开查询搜索的多个文件。如果使用的是正常的Lucene索引文件结构(而不是组合结构),会得到每

45、提交操作一个新的细分域,承担了重新索引的代价。由于查询性能紧密联系在一起的段数的索引,一个简单的指数计数可能是当优化真正需要的一个有用的指标。另外,跟踪查询的性能和容量,达到可接受的低容积以及不可接受的低性能会是一个更好的解决方案。2.6 分析分析将文本数据转换成搜索的一个基本单元,它被称作术语。在分析过程中,文本数据通过多种操作:提取单词,除去常用词,标点忽视,改变的单词小写等分析只是索引和查询解析之前发生的。分析文本数据转换为标记,这些标记被添加为Lucene索引项。Lucene的带有各种内置的分析器,如SimpleAnalyzer , StandardAnalyzer , StopAna

46、lyzer , SnowballAnalyzer ,等等。这些不同之处在于,他们记号化的文字和应用过滤器的方式。作为分析索引之前删除词语,它减少索引的大小,但它可能对精密查询处理造成负面影响。你可以有超过通过创建利用的Lucene提供的基本构建块定制分析仪分析过程中更多的控制。2.7 搜索搜索是寻找在索引中的单词和发现包含这些单词的文档的过程。建立使用Lucene的搜索API搜索功能是一个非常简单和容易的过程。搜索器是具有各种重载搜索方法的抽象基类。 IndexSearcher的是一种常用的子类,允许搜索存储在给定的目录索引。 search方法返回一个由计算分数排名文件的有序集合。 Lucen

47、e的计算每个匹配给定查询的文档的分数。 IndexSearcher的是线程安全的;单个实例可以由多个线程同时被使用。搜索项术语是用于搜索的最基本单元。它由两部分组成:字的文本,并且其中所述文本发生字段的名称。术语对象也参与索引,但它们是由Lucene的内部创建。查询器是查询的抽象基类。搜索指定的词或短语涉及包装他们在一个任期,增加的条款查询对象,并通过此查询对象IndexSearcher的搜索方法。2.8展示搜索结果IndexSearcher的返回引用数组排序的搜索结果,如匹配给定查询的文档。可以决定需要由IndexSearcher的搜索方法,指定它来检索顶级的搜索结果的数量。自定义分页可以建

48、立在此之上。可以添加自定义的Web应用程序或桌面应用程序来显示搜索结果。参与检索搜索结果中的主要类是ScoreDoc和TopDocs 。3 系统需求分析3.1 业务需求分析3.1.1全年犯罪情况分布图对于大量文本的读取与分析我们想要通过判决书中案件日期设立field,对地点和日期进行归并。(1)统计出每一个月中案件宗数。(2)显示该年度中案件宗数的波峰与波谷。3.1.2全国各省犯罪案件分布图对犯罪案件的地理位置进行提取,统计出该年在各省中案件的分布情况的结果展示,以颜色亮度来体现案件数量。3.1.3案发场所的分布图对案发场所进行分析,对案发场所建立索引,最后进行案发地点的统计结果计算。统计结果

49、展示该年中案发场所的主要分布图,3.1.4词频统计选取文本分析的测试文本,对文本中:(1)多次出现的分词后的词段进行统计。(2)选取统计结果的Top10。(3)列出Top10每一项的数量。(4)计算出Top10的平均词频。3.1.5判决年限统计图在判决书中,判决年限的记录多种多样,我们不得不对得到的数据先进行清洗,得到统一的可识别的判决年限。对判决年限进行统计,从2个月的期限开始一直到10年的都单独展示,将11年-15年和16-20年的进行归并形成一组。3.1.6作案性质划分统计3.1.7基于相关度的文本摘要分析3.1.8关键词展示3.1.9主题概率分布3.2 功能需求分析3.2.1建立索引

50、大部分的搜索(数据库)引擎都是用B树的结构来维护索引,索引的更新会导致大量的I/O操作,Lucene在实现中,对此稍微有所变化:不是维护一个索引文件,而是在拓展索引的时候不断创建新的索引文件,然后定期的把这些新的小索引文件合并到原先的大索引中(针对不同的更新策略,批次的大小可以调整),这样在不影响检索的效率前提下,提高了索引的效率。为了实现搜索查询统计等功能,先要实现索引。3.2.2进行分词4 系统设计4.1系统设计原则与目标本信息系统是基于Java Sping MVC4实现的WEB平台,针对平台不同的功能提供了操作界面的接口,通过完善不同的网页部分,能够满足文本处理的各种需求,而不需要考虑具

51、体的细节。前端页面是通过boostrap5这款框架构建的。这些功能最后可以通过图表的形式进行可视化,这样所有的数据都可以通过图表展现出来,展现的方式是通过前端组件Echarts6。后端服务运行在一台服务器上作为整个系统的支撑,需要管理整个系统的文本,所属,元信息以及对应的搜索结果管理的信息和记录,这些数据以文件来存储。文本库中和每个关键词,摘要,元信息都是有映射的,添加和修改这些信息都是一个全局对象来存储,对于每个用户都有自己单独的搜索记录,记录的属性相对于全局的文本来说,多了文本内容和文本所属等情况,和对应搜索结果,搜索结果就可以重复利用并缓存起来,有利于系统更加高效地利用索引,所以将对象分

52、为两类,存储在文件中的文本和布置在搜索引擎当中的索引相关的信息,搜索相应文章时依据搜索的索引计算对应的数据结果。如果要达到更强的针对性可以添加附属的搜索条件。对海量的文本进行划分,同时刷新缓存的搜索结果,这样搜索结果可以根据索引还有缓存信息进行投放,有利于分类和管理。 后端采取Java的Spring框架对于该项目的需求,总体分为三大部分,针对普通的使用者,针对文档管理者,和针对服务端的,文档管理者主要包括查阅文档,审查等功能,而普通使用者则包含了搜索和查找的功能,可以把文本上传到服务器进行快速查找,服务端需要对这些应用的功能提供对应的支持。管理者方面的功能在Web端实现,包括修改文档,添加文档

53、,设置文档类型,查看搜索频率等在web上实现一个类似于后台管理的页面。普通用户方面的功能则是在网页上实现的,可以拉取最新的搜索结果,并且进行查找和获取摘要进行类比分类。服务端作为整个应用的支撑需要完成对于普通使用者的采集,便于管理者进行管理,而且而且还有对应的统计信息的计算。Spring框架是Java平台的应用程序框架和控制容器的结合。该框架的核心功能,可以通过任何Java应用程序中使用,但也有对Java EE平台之上构建Web应用程序扩展。虽然该框架不强加任何特定的编程模型。 Spring框架是开源的。Spring框架有它自己的面向方面编程(AOP)框架,进行模块化的方面的关注点。创建一个单

54、独的AOP框架的动机来自于独特的理念,即有可能提供基本的AOP功能并且没有太多的过度设计,以及实施和配置的复杂性。 Spring AOP框架也充分利用了Spring容器。Spring AOP框架是基于代理模式,并在运行时配置。这消除了一个加载时编译的需要。在另一方面,拦截器只允许在一个连接点上的现有对象public方法执行。Spring 是一款优秀的Web框架,首先这款框架在国际上都有很多的实践,具有很强的生产环境的实践,有丰富的文档和案例,便于新手上手,其次该款框架设计优良适合本应用,该框架整体遵 循MVC原则,即模型(Model),视图(View),控制器(Controller),模型这一

55、层主要和上面提到的数据库打交道,负责对原始的搜索引擎操作进行封装,利用ORM(Object-Oriented Mapping,面向对象映射技术),将这些裸操作封装成相应数据对象的方法,比如文章的添加,可以作为一个文章类的一个方法,这样就能在数据操作上和其他的部分相互解耦,提高程序的可扩展性。视图部分 采取Srping自带的模板引擎,能够提高网页内容的重用率,同时可以节省重复开发的时间,另外能够做到动态显示相应的数据,模板引擎依赖于数据层的数据来通过逻辑操作来显示相应的界面内容。这是从Web的角度出发,因为整个的管理系统搭建在Web上。但是整个服务的主体还是WEB应用,所以作为服务端,必要的应用

56、层的接口是要存在的,而框架也有对应的数据封装,能够 很好的承载数据的请求,控制承担这Web界面和用户请求的路由和相应的请求处理的主体,通过程序的主要流程都在控制器内完成,包括文件索引统计等类似的输入输出操作和CPU计算操作。Structs 2和SpringMVC的比较。Apache的Struts 2和SpringMVC和,是当今最流行的和谈论得很多的Java Web框架,这两个都是。那么Apache的Struts 2是用于创建企业级Java Web应用的优雅和可扩展的框架。它的目的是简化开发周期,从建筑到部署和应用维护都具有很高的效率。在Struts中,接受一条请求,并把它路由进行进一步的处理

57、被称为“行动”的对象。在另一方面,Spring MVC是包含其他Spring模块一个巨大的Spring框架协议栈的一部分。这意味着它不会让开发商没有Spring运行它,但开发商可以在没有Spring MVC的运行Spring核心。对Spring MVC(模型 - 视图 - 控制器)是围绕DispatcherServlet的,它把请求分派给可配置的处理器映射,视图解析和主题解析的处理程序。同时负责处理请求和路由的对象在Struts中处理的对象称为动作,同一个对象在Spring Web MVC框架称为控制器。这是Spring MVC和Struts2的之间的第一个区别之一。 Struts 2的操作是每次启动时提出要求,而Spring MVC中创建只有一次有控制器,存储在内存中,所有的请求之间共享。所以,Spring Web MVC框架是比Struts 2远远高效的处理方式。在任何基于请求的web应用,正变得越来越流行使用RESTful Web服务,因为它们更容易开发和维护,启动成本是最小的。在其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论