`

lucene 分词原理2

阅读更多

建立索引和查询的过程中,都是以基本的语素项为单位的。基本的语素项就是通过分词得到。这个过程决定了索引单元金额最终的匹配过程。 

分词在文本索引的建立过程和用户提交检索过程中都存在。利用相同的分词器,把短语或者句子切分成相同的结果,才能保证检索过程顺利进行。 

1、 英文分词的原理 

基本的处理流程是:输入文本、词汇分割、词汇过滤(去除停留词)、词干提取(形态还原)、大写转为小写、结果输出。 

2、 中文分词原理 

中文分词比较复杂,并没有英文分词那么简单。这主要是因为中文的词与词之间并不像英文中那样用空格来隔开。 

主要的方法有三种:基于词典匹配的分词方法、基于语义理解的分词、基于词频统计的分词。 

①      基于词典匹配的分词方法 

基 于字典匹配的分词方法按照一定的匹配策略将输入的字符串与机器字典词条进行匹配。如果在词典中找到当前字符串,则匹配成功输出识别的词汇。按照匹配操作的 扫描方向不同,字典匹配分词方法可以分为正向匹配和逆向匹配,以及结合了两者的双向匹配算法;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最 小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与词性标注相结合的方法。几种常用的词典分词方法如下所示: 

● 正向最大匹配(由左到右的方向)。 

● 逆向最大匹配(由右到左的方向)。 

● 最少切分(是每一句中切除的词数最小)。 

实际应用中上述各种方法经常组合使用,达到最好的效果,从而衍生出了结合正向最大匹配方法和逆向最大匹配算法的双向匹配分词法。由于中分词最大的问题是歧义处理,结合中文语言自身的特点,经常采用逆向匹配的切分算法,处理的精度高于正向匹配,产生的切分歧义现象也较少。 

真正实用的分词系统,都是把词典分词作为基础手段,结合各种语言的其他特征信息来提高切分的效果和准确度。有的实用系统中将分词和词性标注结合起来,利用句法和词法分析对分词决策提高帮助,在词性标注过程中迭代处理,利用词性和语法信息对分词结果进行检验、调整。 

既然是基于分词词典的分词方法,当然还要考虑选择一个好的查找词典算法。一般有数字搜索树, Trie 算法等等。 

所 谓的数字搜索树( retrieve 树)就是要求树的一个节点保留一个字符。如果一个单词比一个字符长,则包含第一个字符串的节点有指向下一个字符的节 点,以此类推。这样组成一个层次结构的树,树的第一层包括所有单词的第一个字符,树的第二层包括所有单词的第二个字符,以此类推,数字搜索树的最大高度是 词典中最长单词的长度。但是这样的树,每一个节点都需要很多内存。假设每个词都是由一个小写英文字母组成的,这个节点中会有 26 个指针。所以不太可能 直接用这样的数字搜索树来存储中文这样的大字符集。 

Trie 树, 即三叉搜索树,每一个节点包括一个字符,但只有三个指针,一个指向左边的树,一个指向右边的树,还有一个向下,指向单词的下一个数据单元。三叉搜索树是二 叉搜索树和数字搜索树的混合体。它有和数字搜索树差不多的速度但是和二叉搜索树一样只需要相对较少的内存空间。单词的读入顺序对于创建平衡的三叉搜索树很 重要,但对于二叉搜索树就不是太重要了。由于限于篇幅,这里就不写上代码了。 

②      基于语义理解的分词 

基于语义理解的分词方法是模拟人脑对语言和句子的理解,达到识别词汇单元的效果。基本模式是把分词、句法、语义分析并行进行,利用句法和语义信息来处理分词的歧义。 

一般结构中通常包括分词子系统、句法语义子系统、调度系统。在调度系统的协调下,分词子系统可以获得有关词、句子等的句法和语义信息,模拟人脑对句子的理过程。基于语义理解的分词方法需要使用大量的语言知识和信息。 

目前国内外对汉语语言知识的理解和处理能力还没有达到语义层面,具体到语言信息很难组织成机器可直接读取、计算的形式,因此目前基于语义理解的分词系统还处在试验阶段。 

③      基于词频统计的分词 

这种做法基于人们对中文词语的直接感觉。通常词是稳定的词的组合,因此在中文文章的上下文中,相邻的字搭配出现的频率越多,就越有可能形成一个固定的词。根据 n 元语法知识可以知道,字与字相邻同时出现的频率或概率能够较好地反映成词的可信度。 

实 际的系统中,通过对精心准备的中文语料中相邻共现的各个字的组合的频度进行统计,计算不同字词的共现信息。根据两个字的统计信息,计算两个汉字的相邻共现 概率。统计处来的信息体现了中文环境下汉字之间结合紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成一个词。 

基 于词频统计的分词方法只需要对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计分词方法。这种方法经常抽出一些共现频度高、但并 不是词的常用字组,需要专门处理,提高精确度。实际应用的统计分词系统都使用一个基本的常用词词典,把字典分词和统计分词结合使用。基于统计的方法能很好 地解决词典未收录新词的处理问题,即将中文分词中的串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,有利用了无词典分词结合上下文识 别生词、自动消除歧义的优点。 

3、 Lucene 分词 

在 Lucene3.0 中, 对分词主要依靠 Analyzer 类解析实现。 Analyzer 内部主要通过 TokenStream 类实 现。 Tonkenizer 类, TokenFilter 类是 TokenStream 的两个子类。 Tokenizer 处理单个字符组成的字符 流,读取 Reader 对象中的数据,处理后转换成词汇单元。 TokneFilter 完成文本过滤器的功能,但在使用过程中必须注意不同的过滤器的 使用的顺序

分享到:
评论

相关推荐

    Lucene 3.0 原理与代码分析

    本系列文章将详细描述几乎最新版本的Lucene的基本原理和代码分析。 其中总体架构和索引文件格式是Lucene 2.9的,索引过程分析是Lucene 3.0的。 鉴于索引文件格式没有太大变化,因而原文没有更新,原理和架构的文章中...

    Lucene4.X 第十五讲-Lucene高级进阶

    本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...

    Lucene4.X第九讲-Lucene搜索深入实战

    本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...

    Lucene 3.6 学习笔记

    4.2 分词原理 21 (1) TokenStream 21 (2) Tokenizer 22 (3) TokenFilter 23 4.3 分词属性 23 (1) 分词属性查看 24 (2) 分词属性对比 25 4.4 自定义分词器 26 (1) 自定义Stop分词器 26 (2) 实现简单同义词索引 27 第...

    lucene1.0.doc

    4. lucence分词的原理与种类 3 4.1、基于字符串匹配的分词方法 3 4.2、基于理解的分词方法 4 4.3、基于统计的分词方法 4 4.4几种具体的分词方式: 4 5. lucene可检索的内容 4 6. lucence与网络抓取的结合 4 6.1三种...

    深入理解Luncen搜索引擎开发

    Lucene是一个高性能、可伸缩的信息搜索(IR)库。它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 [ASF, ...Lucene分词器

    lucene.net构建搜索引擎ppt

    手把手教您如何构建自己搜索引擎,从网络爬虫,C#中文分词,Lucene.net 的原理等等

    Ansj中文分词

    •增加了目前对最新版的Lucene、Solr、Elasticsearch开源第三方搜索框架的分词插件 效果测试——新词发现 引用 1. 未登陆词识别 example:NER:我要碎觉吊丝要小心!城西嘉南公寓 result:命名/v 实体/n ner/...

    Lucene3.教程.ppt(学习的ppt)

    Java全文检索器 Lucene3.6教程 搜索引擎介绍 Lucene介绍、结构分析 Lucene的全文索引实现 Lucene原理分析、优化 中文分词器使用 高亮器的使用 过滤与排序 常见的各种搜索 如果需要源码的,请到我的资源去找,谢谢

    针对中文检索的Lucene改进策略

    给出了具体的实验方法和实验过程,对改进原理和实验数据进行了分析,表明了加入中文分词模块和在索引预处 理模块中采用提取特定数量的特征词来替代文档的方法能够有效提高Lucene检索系统的效率和精度,增强Lucene...

    lucene:lucene技术细节

    lucene lucene词典的构造原理 lucene模糊查询以及正则查询的原理 lucene删除索引的实现 lucene段merge的过程 lucene怎么实现Field lucene的分词过程

    一种基于LUCENE的中文分词算法研究倡 (2011年)

    该算法基于字符串匹配原理,实现了正向和逆向相结合的最大增字匹配分词算法。通过实验仿真,比较改进后的分析器与Lucene自带的两种分析器在分词效果和效率上的差异。结果显示,改进后的分析器分词效果明显优于Lucene...

    解密搜索引擎技术实战-Lucene&java;精华版

    自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入...

    基于Lucene的MYSearch全文搜索引擎

    基于Lucene开源框架设计实现了MYSearch全文搜索引擎。给出了MYSearch实现的基 本原理和设计流程,以及实验结果,并针对Lucene在中文分词方面的不足展开了讨论,给出了改进 方法。

    1.解密搜索引擎技术实战:Lucene&Java;精华版(第3版)

    自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入...

    浅谈MySQL和Lucene索引的对比分析

    MySQL和Lucene都可以对数据构建索引并通过索引查询数据,一个是关系型数据库,一个是构建搜索引擎(Solr、ElasticSearch)的核心类库。两者的索引(index)有什么区别呢?以前写过一篇《Solr与MySQL查询性能对比》,...

    使用C sharp开发搜索引擎 C#搜索引擎开发实战 08-文本排重(共28页).ppt

    23-Lucene简介(共23页) 24-索引原理(共22页) 25-查询原理(共13页) 26-分析器(共15页) 27-概念搜索(共13页) 28-相关度打分(共12页) 29-搜索界面(共12页) 30-AJAX搜索界面(共25页) 31-Solr(共29页) ...

    Java搜索引擎的研究与实现(含文档+源码)

    9 3.2.4如何提高程序性能 11 3.2.5网络机器人的代码分析 12 3.3小节 14 第四章 基于lucene的索引与搜索 15 4.1什么是Lucene全文检索 15 4.2 Lucene的原理分析 15 4.2.1全文检索的实现机制 15...

    【信息检索课程设计】sdu新闻网站全站爬取+索引构建+搜索引擎

    以下是检索的基本要求:可以利用lucene、nutch等开源工具,利用Python、Java等编程语言,但需要分别演示并说明原理。 Web网页信息抽取 以山东大学新闻网为起点进行网页的循环爬取,保持爬虫在view.sdu.edu.cn之内...

Global site tag (gtag.js) - Google Analytics