一种教学资源的全文搜索引擎系统的制作方法_2

文档序号:9326938阅读:来源:国知局
源中抽取出文本;文本来源包括:ppt类型、word类型、pdf类型、txt类型的文档。中文词语处理模块32为ICTCLAS分词系统用于对从文本、用户输入的关键词或语句进行词语切分、词性标注及词语过滤,生成分词结果。
[0031]文本抽取是创建索引的基础,本发明文本抽取模块31使用了 POI和TOFbox开源文本抽取工具,对office文档和pdf等格式进行文本抽取。
[0032]Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式文档读和写的功能。本发明对以后缀名为doc、docx、ppt、pptx的文件进行文本抽取,使用到了 POI如下结构:
[0033]HSLF-提供读写 Microsoft PowerPoint2003 格式档案的功能。
[0034]XSLF-提供读写Microsoft PowerPoint2007及以上格式档案的功能。
[0035]HffPF-提供读写Microsoft Word2003格式档案的功能。
[0036]XWPF-提供读写Microsoft Word2007及以上格式档案的功能。
[0037]中文本抽取模块31若使用的是POI 3.1版本,在抽取文本之前,需要引入po1-3.10-FINAL, jar 包。Apache PDFbox 是最常见的一种 PDF 文本抽取工具,PDFBox 是一个开源的Java PDF库,这个库允许访问PDF文件的各项信息。中文本抽取模块31若使用的是F1DFboxl.8版本,在抽取pdf文本之前,需要引入pdfbox-app-1.8.jar包。
[0038]2、分词
[0039]词语是信息表达的最小单位,而汉语不同于西方语言,其句子的词语一没有分隔符(空格),因此需要进行词语进行切分。本发明实施例提供的中文词语处理模块,用于对从课件资源中抽取出的文本信息和用户输入的查询语句进行词语切分和词性标注。
[0040]汉语词语切分中存在切分歧义,如“帽子和服装”可切分为“帽子/和/服装”,也可能被错误地切分为“帽子/和服/装”,因而需要利用各种上下文知识解决词语切分歧义。在切分的基础上,利用基于规则和统计(隐马尔科夫模型)的方法进行词性标注。基于隐马尔科夫模型的η元语法统计分析方法,被证明在词性标注中能达到较高的精度。这里本发明实施例中的中文词语处理模块32使用的分词程序是中科院计算所研发的分词系统-1CTCLAS,其是目前最好的中文分词器之一。该分词系统的主要思想是先通过CHMM(层叠隐马尔可夫模型)进行分词,通过分层,既增加了分词的准确性,又保证了分词的效率。中文词语处理模块32的基本思路:先进行原子切分,然后在此基础上进行N-最短路径粗切分,找出前N个最符合的切分结果,生成二元分词表,然后生成分词结果,接着进行词性标注并完成主要分词步骤。ICTCLAS功能包括:中文分词;词性标注;未登录词识别。分词正确率高达97.58%,运行效率高,占用内存小。本发明使用的是ICTCLAS2011Java版本。在创建索引之前,Lucene会调用Analyzer类对待索引文件的文本进行分词,Lucene本身的StandardAnalyzer提供了中文分词接口,不过其采用的算法为1-gram,这种分词方法虽然不会损失任何索引信息,但是造成的索引垃圾太多,并且中文分词正确率很低。本发明调用了中科院分词系统ICTCLAS,在Lucene中建立了一个新的分词器ICTCLASAnalyzer,该分词器支持用户自定义词典,添加停用词表等功能,对人名和英文分词的准确率也较高。实现ICTCLASAnalyzer分词器,需要继承Analyzer类,并重写publicTokenStreamtokenStream(String fieldName, Reader reader)方法。
[0041]3、创建索引
[0042]如图2所示,建立索引单元4包括:索引创建模块41,其用于建立索引器Indexffriter,建立文档对象Document,在文档对象Document中建立字段Field,并将文档对象Document添加到索引器IndexWriter中,得到索引文件;索引存储模块42,其与索引创建模块41通信,用于存储索引文件。在进行全文搜索的过程中,Lucene主要用于建立索引和进行搜索。上述功能所涉及的Lucene的类主要包括:
[0043]Indexffriter:1ucene中最重要的类之一,它主要是用来将文档加入索引,同时控制索引过程中的一些参数使用。
[0044]Analyzer:分析器,主要用于分析搜索引擎遇到的各种文本。常用的有StandardAnalyzer 分析器,StopAnalyzer 分析器、WhitespaceAnalyzer 分析器等。
[0045]Directory:索引存放的位置;Iucene提供了两种索引存放的位置,一种是磁盘,一种是内存。一般情况将索引放在磁盘上;相应地Iucene提供了 FSDirectory和RAMDirectory 两个类。
[0046]Document:文档;Document相当于一个要进行索引的单元,任何可以想要被索引的文件都必须转化为Document对象才能进行索引。
[0047]Field:字段。
[0048]IndexSearcher:是Iucene中最基本的检索工具,所有的检索都会用到IndexSearcher 工具。
[0049]Query:查询,Iucene中支持模糊查询,语义查询,短语查询,组合查询等等,如有TermQuery, BooleanQuery, RangeQuery, WildcardQuery 等一些类。
[0050]QueryParser:是一个解析用户输入的工具,可以通过扫描用户输入的字符串,生成Query对象。
[0051]Hits:在搜索完成之后,需要把搜索结果返回并显示给用户,只有这样才算是完成搜索的目的。在Iucene中,搜索的结果的集合是用Hits类的实例来表示的。
[0052]Token是建立索引的基本单位,表示每个被编入索引的字符。其中包含了词元的内容,词元所属的类别,词元的首字母和尾字母在文本中的位置信息等。TokenStream是用来走访 Token 的 iterator, Tokenizer 继承自 TokenStream,其输入为 Reader。为了构建ICTCLASAnalyzer分词器,需要实现自己的ICTCLASTokenizer类,该类继承自Tokenizer类,并重写 public booleanincrementTokenO 等方法。
[0053]索引创建模块41建立索引addDocument (Document)的过程如下:
[0054]I 建立索引器 IndexWriter:
[0055]Indexffriter writer = new IndexWriter (存储索引的路径,分析器的实例);
[0056]存储索引的路径:在物理硬盘上的路径如:d:/aa等
[0057]分析器的实例:分析器就是词法分析器,包括英文分析器和中文分析器等,应根据情况使用分析器,常用的分析器有:StanardAnalyzer (标准分析器)、CJKAnalyzer ( 二分法分词器)和FrenchAnalyzer (法语分析器)等。本发明使用的是ICTCALSAnalyzer (调用中科院分词系统ICTCLAS自建的分词器)。
[0058]2建立文档对象Document:
[0059]Document doc = new Document ();
[0060]这个方法用来创建一个不含任何Field的空Document。
[0061]3建立信息字段对象Field:
[0062]如果想吧Field添加到Document里面,只需要使用add方法。
[0063]Document doc = new Document ();
[0064]doc.add (field)
[0065]4 将 Field 添加到 Document 里面:
[0066]Field field = newField(Field 名称,Field 内容,存储方式,索引方式);
[0067]参数介绍:
[0068]FieId名称就是为FieId起的名字,类似数据表的字段名称。
[0069]Field内容就是该Field的内容,类似数据表的字段内容。
[0070]存储方式包括三种:
[0071]不存储(Field.Store.NO)、完全存储(Field.Store.YES)、压缩存储(Field.Store.COMPRESS)
[0072]索引方式包括四种:
[0073]不索引(Field.1ndex.No)、索引但不分歧(Field.1ndex.N0_N0RMS)、索引但不分词(F
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1