当前位置:首页 > 开发 > 移动开发 > 正文

lucene 分词原理2

发表于: 2012-05-31   作者:晨必须的   来源:转载   浏览:
摘要: 建立索引和查询的过程中,都是以基本的语素项为单位的。基本的语素项就是通过分词得到。这个过程决定了索引单元金额最终的匹配过程。  分词在文本索引的建立过程和用户提交检索过程中都存在。利用相同的分词器,把短语或者句子切分成相同的结果,才能保证检索过程顺利进行。  1、 英文分词的原理  基本的处理流程是:输入文本、词汇分割、词汇过滤(去除停留词)、词

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

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

1、 英文分词的原理 

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

2、 中文分词原理 

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

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

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

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

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

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

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

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

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

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

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

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

②      基于语义理解的分词 

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

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

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

③      基于词频统计的分词 

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

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

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

3、 Lucene 分词 

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

lucene 分词原理2

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
package org.lucene.test; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene
Lucene中的Analyzer 处理英文的流程 WhitespaceTokenizer 空格分隔 WordDelimiterFilter 对单词进
本篇主要说一个lucene使用多个条件同时匹配的情况,如图所示 这个检索表示四个条件同时满足的结果,
package com.demo.ajax; public class Building { private Integer id; private String name; priva
看lucene主页(http://lucene.apache.org/)上目前lucene已经到4.9.0版本了, 参考学习的书是按照2.1
Lucene原理 1 反向索引 _ 字符串到文件的映射 左边的称为“字典”,用户要搜索的词语,而右边就是所
转自:http://hi.baidu.com/zhumulangma/item/fcb2851542a2b924f7625c32 Lucene分词实现(二次开发流
SharpICTCLAS分词系统简介(2)初步分词(转) ICTCLAS初步分词包括:1)原子切分;2)找出原子之间所
不同规则的中文分词对Lucene索引的影响<?XML:NAMESPACE PREFIX = O /> 田春峰 在中文全文索引
Lucene分词组件盘古与mmseg4j评测 前言 .Net 下分词组件选择不多,最近看到宝玉发布了改进版本的mms
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号