中文分词毕业设计说明书.docx
- 文档编号:13128506
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:32
- 大小:320.24KB
中文分词毕业设计说明书.docx
《中文分词毕业设计说明书.docx》由会员分享,可在线阅读,更多相关《中文分词毕业设计说明书.docx(32页珍藏版)》请在冰点文库上搜索。
中文分词毕业设计说明书
学校代码:
10128
学号:
040201110
本科毕业设计说明书
(
题目:
中文分词在搜索引擎中的分词算法的
研究与应用
学生姓名:
张辉
学院:
信息工程学院
系别:
计算机系
专业:
计算机科学与技术
班级:
计算机04-2
指导教师:
马志强讲 师
钱庭荣工程师
二〇〇八年六月
摘要
随着信息的飞速增长,搜索引擎成为了人们查找信息的首选工具,在查询信息过程中,查询内容既包括西文也包括中文,中文与西文不同,西方文字(如英文)的单词间有空格作为分隔,计算机很容易把词分开。
而在中文句子里,词和词之间没有明显的分隔符,要把中文句子拆分成词就需要使用中文分词技术。
本设计主要是研究中文分词算法,在计算机专业搜索系统进行应用。
系统中的中文分词算法采用机械分词算法,通过和词典的比较,进行把中文词语拆分。
搜索引擎不是对整个查询内容进行匹配查询,而是划分成关键词进行查询。
本系统中设计的中文分词算法,主要是采用最大正向分词算法把两字以上的词语拆分出来。
这样既可以提高分词的速度,又可以提高搜索的速度和效率。
该系统以Java技术为基础,涉及到相关的Struts、Hibernate、JSP等技术。
本系统具有良好的可读性、可操作性、可维性、可扩展性和可移植性。
关键词:
中文分词;词典;搜索引擎
Abstract
Withtheinformationrapidgrowth,thesearchenginebecamethepeopletosearchtheinformationthefirstchoicetool,inthepollingmessageprocess,theinquirycontentalreadyincludedthewesternlanguagesalsotoincludeChinese,Chineseandthewesternlanguagesisdifferent,Westernwriting(forexampleEnglish)betweenthewordhadtheblankspaceachievementtoseparate,thecomputerwasveryeasythewordtoseparate.ButinChinesesentence,betweenthewordandthewordtheobviousseparatingcharacter,cannotanalyzeChinesesentencetouseChinesewordsegmentationtechnology.
ThisdesignmainlystudiesChinesewordsegmentationalgorithm,carriesontheapplicationinthecomputerspecializedsearchsystem.Insystem'sChinesewordsegmentationalgorithmusesthemechanicalparticiplealgorithm,throughwiththelexiconcomparison,carriesonChinesewordsandexpressionsresolution.
Thesearchengineisnotcarriesonthematchtoentireinquirycontenttoinquire,butisdividesthekeywordtocarryontheinquiry.InthissystemdesignsChinesewordsegmentationalgorithm,aremainlyusesmostTaishotoanalyzetotheparticiplealgorithmtwocharactersabovewordsandexpressions?
Likethisbothmayenhancetheparticiplethespeed,andmayenhancethesearchthespeedandtheefficiency.ThissystemtaketheJavatechnologyasafoundation,involvestorelatedtechnologiesandsoonStruts,Hibernate,JSP.Thissystemhasthegoodreadability,thefeasibility,tobepossibleUnger,theextendibilityandtheprobability.
Keywords:
Chinesewordsegmentation;Lexicon;Searchengine
引言
中文分词技术的研究,已经有几十年的历史了,在20世纪80年代,就有人开始研究如何用计算机来自动分词。
中文分词技术属于自然语言处理技术范畴,对于一句话,人们可以通过自己的知识来划分哪些是词,哪些不是词。
但如何让计算机识别那些是词,那些不是词?
其处理过程就是分词算法。
目前中文分词算法主要分为以下三种:
基于字符串匹配算法(机械分词算法),基于理解的分词算法和基于统计的分词算法。
在分词过程中,还存在两大难题。
一个是歧义识别,一个是新词识别。
歧义是指同样的一句话,可能有两种或者更多的切分方法。
新词,专业术语称为未登录词。
也就是那些在字典中都没有收录过,但又确实能称为词的那些词语。
本课题主要研究的是中文分词在搜索引擎中的分词算法。
分词准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的。
因为搜索引擎需要处理数以亿计的网页,假如分词占用的时间过长,会严重影响搜索引擎内容更新的速度。
因此对于搜索引擎来说,分词的准确性和速度,二者都需要达到很高的要求。
第一章技术概述
本设计中所用到的技术包括Java、Hibernate、Struts和JSP等。
下面简单的介绍下这些技术。
1.1Java概述
Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。
自从1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。
在早期,Java比较多的用在浏览器上,插入到网页中(即是JavaApplet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着JavaServlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(JavaServerPage)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型电子商务项目的必然选择。
1.2Hibernate概述
Hibernate是JDBC(JavaDatabaseConnectivity)的轻量级的对象封装。
它是一个独立的对象持久层框架,和AppServer,以及EJB(EnterpriseJavaBeans)没有什么必然的联系。
Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP(Bitmap)里面的访问数据库的代码。
从这个意义上来说,Hibernate和EJB不是一个范畴的东西,也不存在非此即彼的关系。
Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和AppServer没有任何关系,也不存在兼容性问题。
1.3Struts概述
Struts这个名字来源于建筑和旧式飞机中使用的支持金属架。
它的目的是为了减少在运用MVC(ModelViewController)模型来开发Web应用的时间。
Struts是一个基于模型(Model)、视图(View)和控制器(Controller)模式的应用架构的开源框架。
MVC即Model-View-Controller的缩写,是一种常用的设计模式。
MVC减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。
Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:
Taglib和页面导航。
1.4JSP概述
JSP(JavaServerPages)技术提供了一种简单快速的方法来创建显示动态生成内容的Web页面。
由业界处于领先地位的Sun公司制定了相关的JSP技术规范,该规范定义了如何在服务器和JSP页面间进行交互,还描述了页面的格式和语法。
JSP技术是行业协作的结果,它的设计是开放的,符合行业标准的,并支持绝大多数的服务器、浏览器和相关工具。
由于使用可重用的组件和标签取代了对页面本身脚本语言的严重依赖,JSP技术大大加快了开发的速度。
所有JSP的实现均支持以Java编程语言为基础的脚本语言,它有与生俱来的可适应性,支持复杂的操作。
JSP的优点有:
对用户界面的更新,其实就是由WebServer进行的,所以给人的感觉更新很快;所有的应用都是基于服务器的,所以他们可以时刻保持最新版本;客户端的借口不是很繁琐,对于各种应用易于部署、维护和修改。
第二章系统分析
2.1系统功能分析
2.1.1系统功能框图
计算机专业搜索系统的功能框图如图2-1所示
图2-1功能框图
2.1.2系统功能介绍
(1)信息搜索功能
1)中文分词
这块是本设计的主要内容,用来把中文句子拆分成一个一个的词语。
2)计算机专业搜索
在这里输入查询条件后进行搜索。
这里只能查询计算机相关方面的内容。
(2)用户管理功能
1)用户注册
对页面中的详细信息填写后,提交到服务器,然后将结果保存到数据库中。
2)用户登录
填写好登录用户名和密码后,提交到数据库进行查询,当用户名和密码正确后,转到acticity.jsp页面。
3)忘记密码
当用户忘记密码的时候,可以到忘记密码通过填写用户名、密码问题和密码答案,和数据库中的数据进行比较,全部正确会返回一个新的密码。
4)修改用户信息
当用户想要修改自己的信息时,可以到此页面进行修改。
2.2数据库分析
数据库设计的任务是确定系统所需的数据库。
数据库是表的集合,通常一个系统只需一个数据库。
本系统主要用了两张表,一张是用来存放用户信息的SCAN_MEMBERINFO表,在进行用户管理时,会使用此表的内容;另一张是用来存放大量的搜索内容的SCAN_DETAILS表,在进行搜索时,会操作此表。
2.3系统用例图
(1)用户注册用例图
这部分是用户在一开始使用此系统时要进行注册会员,通过注册的会员号才能进入系统进行搜索。
用户注册用例图如图2-2所示。
图2-2用户注册用例图
(2)忘记密码用例图
这部分实现的是会员当忘记密码时,可以通过这里进行找回密码,这里找回的密码是系统新设定的密码。
忘记密码用例图如图2-3所示。
(3)用户登录用例图
这部分实现的是用户在注册上会员号后,通过会员号登录到系统内部,这样才能进行计算机专业搜索。
用户登录用例图如图2-4所示。
图2-3忘记密码用例图
图2-4用户登录用例图
(4)系统核心用例图
搜索中心提供中文信息搜索。
个人基本信息是用来显示会员的基本信息。
管理基本信息主要是进行会员信息修改。
系统核心用例图如图2-5所示。
图2-5系统核心用例图
2.4系统开发环境
(1)硬件环境
设计本系统时,要求的硬件环境如表2-1所示
表2-1硬件环境表
内存
1G
CPU
Inter(R)Celeron(R)CPU2.80GH
(2)软件环境
设计本系统时,要求的软件环境如表2-2所示
表2-2软件环境表
操作系统
Linux
开发工具及相关技术
MyEclipse、Java、Hibernate、Struts
第三章系统总体设计
3.1系统设计目的
在搜索中文句子时,和搜索英文句子不一样。
英文中的每个词之间都是用空格隔开。
而中文句子是以字为单位,词与词没有明确的分隔符,这样就需要一种用来划分中文词语的算法。
本系统主要是设计在搜索引擎中的中文分词算法,通过这个算法来对中文句子进行拆分,然后用拆分出的词语进行中文的搜索。
3.2开发设计思想
本系统主要是实现中文分词算法,通过中文分词算法进行中文搜索。
本系统在中文分词算法设计的过程中,主要采用了机械分词,把句子中的字组成词,然后和词典每行的词进行比较,如果相同就把这个词保存到List集合中。
这样把一句话分成以词为单位,通过这些词进行搜索。
这里用到了词典,词典中存放词语的方式是一行一个词语,这样可以在程序中通过取词典中每一行的内容,把每个词取出并存放在List集合中。
然后在程序中通过List中的内容和拆分的词进行比较。
3.3系统数据库设计
本系统的数据库比较简单,主要使用了两张表,一张是用来存放用户信息的SCAN_MEMBERINFO表,如表3-1所示;另一张是用来存放大量的搜索内容的SCAN_DETAILS表,如表3-2所示。
表3-1用户信息表
SCAN_MEMBERINFO表
字段名
类型
描述
标识
id
Number
主键
唯一标识
nickname
Varchar2
非空,唯一
用户名
password
Varchar2
非空
密码
gender
Varchar2
非空
性别
age
Number
非空
年龄
Varchar2
非空
邮箱
address
Varchar2
无
地址
phone
Varchar2
无
电话
passwordquestion
Varchar2
无
密码问题
passwordanswer
Varchar2
无
密码答案
registerdate
Date
无
注册时间
latestdate
Date
无
最后登录时间
表3-2信息内容表
SCAN_DETAILS表
字段名
类型
描述
标识
id
Number
主键
唯一标识
name
Varchar2
非空,唯一
标题
remark
Varchar2
无
内容
3.4系统模块设计
(1)表示层
设计系统的外部视图。
这里用JSP进行设计,把设计好的JSP页面全部根据功能的划分放到pages文件中。
(2)业务逻辑层
处理外部视图的命令和设计中文分词算法来实现中文搜索。
WEB包中的Action和Form是用来实现JSP页面和业务逻辑进行连接,Service包中主要实现了业务逻辑。
(3)持久化层
连接数据库和处理业务逻辑层与数据库层的功能实现。
这里主要采用Hibernate进行与数据库连接和交互的,DAO包中的代码就是用来实现这些交互的。
(4)数据库层
创建数据库。
这个系统采用Oracle10g数据库。
第四章系统详细设计
4.1信息搜索的设计
4.1.1中文分词
此模块主要是对中文句子进行拆分,然后以词为单位进行搜索。
(1)中文分词的流程图,如图4-1所示。
图4-1中文分词流程图
(2)中文分词算法描述
词典,用来保存中文词语的文件,在进行中文分词时,与拆分出的词进行比较。
本词典设计比较简单,词典中的词语以每行一个词的形式存放。
在提取词典中的词语时,用了BufferedReader来把word.txt词典中每一行的词语写到内存中。
使用存放在内存中的computerscan.jsp页面搜索信息和从词典里提取的词语进行比较,如果比较后结果相同保存到内存中。
减少一个字,再与词典中的各行词比较,结果相同保存到内容中。
重复执行上面流程,直到这句话再无词语可拆分为止。
最后处理这些结果,把两字以上的词保存到集合中返回。
(3)核心代码
//1调用IFindDao接口
IFindDaoifd=newFindDaoImpl();
Listl=newArrayList();
//2运用IFindDao接口中的findWord()方法提取词典中的词语
l=ifd.findWord("/home/briup/Desktop/demon/demon/demon
/src/com/briup/scan/common/word.txt");
//3判断字符串长度是否为1
List
if(str.length()==1){
list.add(str);
}
4.1.2计算机专业搜索
此模块主要实现搜索功能。
(1)计算机专业搜索流程图,如图4-2所示。
(2)搜索算法描述
搜索功能的实现,在ScanComputerAction中把computerscan.jsp页面的搜索信息存到内存中,然后调用IParticipleService接口中的participle()方法先进行分词,然后把结果返回。
再对表中所有计算机专业信息进行查询,对其中的标题再进行分词,然后和之前返回的进行比较,如果分出的关键词相同,就将这条内容和关键词一起保存到对象中。
不相同就继续上次操作,直到全部结束。
最后在页面上把关键词和标题显示出来。
在点击标题时,可以再弹出个view.jsp页面来显示这个标题下的计算机专业内容。
图4-2计算机专业搜索流程图
(3)核心代码
List
//1调用IParticipleService接口
IParticipleServiceservice=(IParticipleService)BeanFactory.getBean("participleService");
for(Stringstr:
list){
for(Detdet:
detList){
List
sList=service.leachWord(service.participle(det.getName()));
for(Strings:
sList){
EnddetendDet=newEnddet();
//2和数据库中的信息进行比较,内容相同的保存到内存中
if(str.equals(s)){
endDet.setAkey(str);
endDet.setName(det.getName());
endDet.setRemark(det.getRemark());
endDet.setDetID(det.getId());
endList.add(endDet);}}}
4.2用户管理的设计
4.2.1用户注册的设计
此模块主要是实现创建一个新的用户,将用户内容保存到用户表中。
(1)用户注册流程图,如图4-3所示。
图4-3用户注册流程图
(2)注册算法描述
首先是把register.jsp页面上的内容通过RegisterForm将页面上的用户的信息记录到RegisterAction上。
在RegisterAction中实现用户是否已经存在,这里需要调用IMemberservice接口中的findMemberinfoBynickname()方法来查找用户。
还要比较页面上的两次密码是否正确,验证码是否正确,然后调用IMemberService接口中的register()方法来实现注册业务。
而在IMemberService接口的register()方法中又要调用IMemberDao接口的saveOrUpdateMemberinfo()方法把数据保存到数据库中。
(3)核心代码
publicvoidregister(Memberinfoinfo)throwsMemberServiceException{
HibernateTransactiontran=newHibernateTransaction();
IMemberDaodao=(IMemberDao)BeanFactory.getBean("memberDao");
try{
tran.beginTransaction();
//1判断注册的用户是否已经存在
Memberinfomember=dao.findMemberBynickname(info.getNickname());
if(member!
=null){
thrownewMemberServiceException("昵称已经存在");
}
//保存新注册的会员
dao.saveOrUpdateMemberinfo(info);
mit();
}catch(Exceptione){
tran.rollback();
e.printStackTrace();
thrownewMemberServiceException(e.getMessage());
}
}
4.2.2用户登录的设计
此模块主要是实现用户登录系统的功能。
(1)用户登录流程图,如图4-4所示。
图4-4用户登录流程图
(2)登录算法描述
在loginAction中通过LoginForm把login.jsp页面上的用户名和密码调入调用IMemberService接口中login()方法来实现登录业务,在login()方法中先查找用户是否存在,如果存在把用户信息取出存到Memberinfo对象中,再把页面上的密码与对象中的密码进行比较,相同就进入系统,进入系统后把查到的用户信息部分显示到rightframe.jsp页面上。
错误就返回到登录页面。
(3)核心代码
Memberinfoinfo=newMemberinfo();
IMemberDaodao=(IMemberDao)BeanFactory.getBean("memberDao");
H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中文 分词 毕业设计 说明书
![提示](https://static.bingdoc.com/images/bang_tan.gif)