核心:
从应用的角度看中文分词算法,是用于搜索引擎,或者智能识别语义等?应用的不同影响着中文分词的策略选择。
正文:
建立索引或对用户输入的句子分词时,当遇到"
XxYyv
Zz "(每个字母代表一个汉字)这样一个句子时,
如果Xx和Zz是已经收录在词库中的词汇,而Y,y,v,Yy,yv,Yyv均不是词库的词汇,
分词器应该如何处理Yyv这个非词汇组成的孤立串呢?可能的处理情况有:
1、二元分词:Yy/yv
2、单字分词:Y/y/v
3、混合分词:Y/Yy/yv/v
4、不分分词:Yyv
5、通过上下文进行词频统计进行判断
6、根据历史智能学习,根据学习结果判断
比如假设Y=黄,y=西,v=来,那么Yyv就是"黄西来",对应的分词就是:
1、黄西/西来
2、黄/西/来
3、黄/黄西/西来/来
4、黄西来
5、不定结果
6、不定结果
首先,第5、6种情况应该
首先被排除!理由如下:
通过上下文环境词频的统计进行判断,意味着不同的文章,该孤立字符串可能有不同的切分方法。
假设文章1采用Y/yv,文章2采用Yy/v,文章3采用Yyv.
当用户在输入框中仅仅输入Yyv三个字或还有少量的其他字时,
若采用方法5,则因为缺少足够上下文环境用于统计词频,几乎只会产生某一种分词结果。假设就分为了Yyv,那么,文章3可以被检索出来,而文章1和2则永远也不会检索出来!
若采用方法6,则以前被切分为Y/yv,因为自学习后,现在被切为Yyv,那么将导致以前的文章永远不会再被检索出来,除非重新建立索引。
所以方法5、6看起来美丽动人,但在搜索领域里不是很可行。
由这一点展开的,我有2个有反很多人“想法”的结论:
1、为搜索引擎服务的中文分词组件,不能具有上下文词频的功能,否则是不可用的。
2、为搜索引擎提服务的中文分词组件,不能具有自学习的功能,否则是不可用的。
相反,作为为搜索引擎服务的中文分词组件,不是为了智能理解中文,而是为了良好地为用户提供良好的检索体验
要具有良好的检索体验,我认为应该在满足以下3条原则,并取得平衡:
a、索引建立要尽量快(和分词组件密切有关),检索速度要快(和分词组件关系较疏但亦有关系,先略过不述)
b、用户想要的目标文章不要因为中文分词组件分词的原因被永远派出在检索结果之外(以上的例子违反了这一条,所以被首先排除出我的考虑范围)
c、不要让用户想要的文章淹没在不想要的文章中。
说完以上的一些我个人的看法,我继续讨论Yyv的问题。
paoding曾经采用过第3种方法,但是因认为分出的词语过多,目前2.0.4-alpha2采用的是第1种方法,但自己也一直都在挣扎当中,
今天我似乎能得出一个结论,
paoding目前的做法并不好,目前的这种做法可能会违反以上的b原则。
因为XxYyvZz被分成Xx/Yy/yv/Zz后,那么当用以XxY作为输入条件检索文章时,特别是作为短语查询时,XxYyvZz就不会被检索出来:
作为检索条件 XxY 会被paoding-2.0.4-alpha2分成Xx/Y,当使用QueryParser构造Query对象时,因为XxYyvZz的分词结果不满足同时存在这两个Term:Xx和Y,从而被忽略,违反了b原则。
而2.0.4之前采用做法3做法,虽然分出的词语过多,但却能够被检索出,其符合b原则。
(感慨:QueryParser真是个好东西,可用来测试分词组件的到底具不具有正确性)
作为paoding分词的作者,经过了持续的一段时间思考,现在本人比较倾向于使用第2种分词方式,认为它应是最适合的:1、符合b原则:将XxYyvZz分成 Xx/Y/y/v/Zz,这样当用户输入XxY时,XxY会被切成Xx/Y,XxYyvZz符合了:a)同时具有Xx,Y两个term,b)且在分词排序上是近邻且顺序和用户输入一致。
(对Lucene的QueryParser来说,当输入没有分隔的汉字时,QueryParser会调用Analyzer对它进行分词,并理解短语处理)
2、符合c原则:用户以XxY作为输入条件,不会将XxZzYyv的文章检索出来,虽然他可能被分为Xx/Zz/Y/y/v:因为该文章分词结果上Y并没有紧接在Xx这个term后
这种分词(方法2)的坏处:总是比二元分词(方法1)多分出一个词。这样从库的大小上,前者不及后者,库可能相应较大。
----------------------------------
如果paoding-2.0.4-alpha2在这个方面如果真的选择错了,那我会义无反顾地把它改过来,哪怕落了个“不成熟”的帽子!
关键是,还要听听各方的意见先。
----------------------
paoding目前还不是paoding2.x的最终稳定版本。最终的稳定版本应该是2.0.4-beta后的2.0.4-final。
如果您愿意在paoding每次分发时(大概1个月1次),您能够不嫌麻烦地做到paoding分发时提示的建议(可能需要重新建立索引库或词典重命名),我建议您下载并使用paoding。(paoding程序bug现在倒是已经很难发现了)
如果不能遵照paoding分发的建议,比如需要重建索引,或不愿意使用未最终稳定的版本,请您等待至2.0.4-final版本(需等待3-6个月)。
谢谢!
---------------------
to new incoming:
Paoding中文分词是一个使用Java开发的,可结合到Lucene应用中的,为互联网、企业内部网使用的中文搜索引擎分词组件。
Paoding填补了国内中文分词方面开源组件的空白,致力于此并希翼成为互联网网站首选的中文分词开源组件。
Paoding中文分词追求分词的高效率和用户良好体验。
分享到:
- 2007-10-26 23:34
- 浏览 5374
- 评论(5)
- 论坛回复 / 浏览 (4 / 7597)
- 查看更多
相关推荐
语言学方向研究的分词算法,看重分词的准确性,不看重运算速度;而搜索引擎的分次算法,特别看重分词速度,分词准确性中等。 (五)全文检索系统和搜索引擎关系: 1、搜索引擎技术来源于全文检索系统,搜索引擎是...
- **价值**:通过提供大量的非重复语料,该词典有助于提高中文分词算法的准确性和效率,对于推动中文自然语言处理技术的发展具有重要意义。 - **未来方向**:随着技术的进步,中文分词词典的规模和质量将进一步提升...
PHPAnalysis使用了高效的分词算法,如基于字典的正向最大匹配法(Forward Maximum Matching, FMM)、逆向最大匹配法(Backward Maximum Matching, BMM)等,能够快速准确地对中文文本进行分词处理。 1. **字典构建*...
这三篇论文结合了理论与实践,从不同的角度深入探讨了搜索引擎的关键技术和实际应用。通过对Lucene、MapReduce和Nutch的深入研究,可以了解到如何构建高效、智能和专业化的搜索引擎,这对于理解和改进现代互联网信息...
总结,基于新闻的高级中文搜索引擎项目涵盖了从数据抓取、分词处理、索引构建到查询处理的全过程,结合新闻数据的特性,为用户提供高质量的搜索体验。源码打包提供了宝贵的实践资源,对于学习和研究搜索引擎技术具有...
而SEO则是从网站设计和内容角度出发,配合搜索引擎的规则,提升网站在搜索结果中的可见度。理解这些原理和技术,对于信息时代的从业者来说至关重要,无论是开发搜索技术,还是利用搜索引擎进行网络营销,都能从中...
从中英文用户的搜索习惯差异的角度出发,引入中文分词技术对中文搜索引擎的搜索日志进行了分析。重点分析了用户输入搜索词的一些规律,包括选择的语言、搜索词的长度和频率、高级搜索技巧的使用以及搜索词的修改情况...
由于没有具体的标签信息,我们将从通用的角度探讨搜索引擎在电商平台中的应用及其关键技术。 一、搜索引擎基础 1. **全文检索**:淘特搜索引擎的核心是全文检索技术,它能理解用户输入的关键词,并在商品数据库中...
1. **抓取页面**:搜索引擎的爬虫程序(Spider)会遍历互联网上的网页,通过超链接从一个网站跳转到另一个网站,抓取新的或更新的内容。 2. **处理页面与建立索引**:抓取的网页经过处理,包括去除重复内容、分词...
文章匹配相似度是NLP中的一个重要问题,特别是在信息检索、新闻推荐和搜索引擎优化中。常见的方法有余弦相似度、Jaccard相似度以及基于深度学习的表示学习。通过计算两篇文章的向量表示之间的距离或角度,可以评估...
易语言是一种专为中国人设计的...学习和分析这个源码,可以从实际应用的角度加深对搜索引擎工作原理的理解,同时提升在易语言中的编程能力。对于想深入研究搜索引擎或者易语言编程的人来说,这是一个很好的实践素材。
1. **大量数据处理**:搜索引擎需要对网页内容进行分析、分词和建立倒排索引,这个过程可能需要消耗大量的内存。 2. **不合理的数据结构**:如果索引的数据结构设计不合理,如过度使用哈希表或链表,可能导致内存...
不过,我们可以从一般的角度来探讨搜索系统的构成和工作原理,以及它们在现代互联网应用中的关键作用。 搜索系统通常由以下几个核心部分组成: 1. **爬虫(Crawler)**:这是搜索系统的第一步,负责在网络上抓取...
3. **文本处理与分析**:搜索引擎需要对抓取的团购信息进行文本处理,包括分词、去停用词、词性标注等,以提高搜索的精确度。这部分源码可能会揭示如何利用自然语言处理技术进行文本预处理。 4. **索引构建**:为了...
Elasticsearch 是一个基于 Lucene 的搜索引擎,提供了强大的搜索功能和灵活的数据处理能力。本资源库分享了 Elasticsearch 的多个方面的知识点,涵盖了基本概念、查询优化、安全策略、Java 集成、数据处理等多个方面...
本文将从统计语言模型、中文分词、隐含马尔可夫模型、信息度量、布尔代数、图论、信息论、贾里尼克公式、相关性计算、有限状态机、地址识别、余弦定理、信息指纹、数学模型的重要性、最大熵模型、搜索引擎反垃圾技术...
在IT行业中,实现一个搜索框输入时提示相近词的功能是一项常见的需求,特别是在开发搜索引擎、智能助手或者信息检索系统时。这个功能能够极大地提高用户的搜索体验,帮助他们更快地找到目标内容。下面我们将深入探讨...