`

庖丁分词的源码分析 (6) 我自己对庖丁分词的修改应用

阅读更多
1 我要满足一个需求,只返回在字典中的词。对于不在字典中的:庖丁默认的实现是两个字一分。我现在的这个需求相当于是覆盖这个对应的方法,让他不返回即可。我的实现就是覆盖了
CJKKnife的dissectIsolated方法,改成不做任何事情:


protected void dissectIsolated(Collector collector, Beef beef, int offset,
			int limit) {
		
	}


2 另外一个地方我们的需求是:不需要字典,全部都是两个字一分。不要字典其实我们自己实现起来也比较简单方便,但是感觉在庖丁的基础上改下可能也不错,然后我就这样做了。我仿照StandardTokenizer(这个是每个字一分,和我的需求很接近)写了个:TwoWordTokenizer

public final class TwoWordTokenizer extends Tokenizer {

	private int bufferIndex = 0;
	private int dataLen = 0;
	private final char[] buffer = new char[2];
	private char[] ioBuffer = new char[16];

	public TwoWordTokenizer(Reader in) {
		this.input = in;
	}

	public final Token next(Token reusableToken) throws IOException {
		int length = 0;
		while (true) {
			if (this.bufferIndex >= this.dataLen) {
				this.dataLen = this.input.read(this.ioBuffer);
				// 索引之前转为小写
				String inputString = new String(this.ioBuffer);
				inputString = inputString.toLowerCase();
				this.ioBuffer = inputString.toCharArray();

				this.bufferIndex = 0;
			}

			if (this.dataLen == -1) {
				return null;
			}

			char c = this.ioBuffer[(this.bufferIndex++)];

			if (Character.isLetter(c)) {
				this.buffer[(length++)] = c;
				if (length == 2) {
					this.bufferIndex -= 1;
					break;
				}
			}

		}
		
		if (length == 0) {
			return null;
		}

		return reusableToken.reinit(this.buffer, 0, length, 0, 0, "word");
	}
}


原理其实就是不断移动原始字符串的位置,去填充一个buffer,每次buffer填充两个字就next,next的时候buffer重新填充。会说这个说起来比较容易的功能,我当时就是看了半天,也许这个东西和c语言那些比较类似吧,看多了java代码证的是人容易变傻。
1
2
分享到:
评论

相关推荐

    庖丁分词jar包和dic目录

    庖丁分词是基于Java开发的一个高效、可扩展的中文分词库,它借鉴了Lucene的分词技术,并在此基础上进行了优化,以提高对中文文本的处理效率。 描述中的链接指向了GitHub上的项目“chubbyjiang/MapReduce”,这可能...

    庖丁分词jar包

    6. **社区支持与更新**:作为开源项目,庖丁分词有一个活跃的社区,用户可以从中获取帮助,同时也可以贡献自己的代码,推动项目的发展。 总之,庖丁分词jar包是Java开发者处理中文文本的利器,它提供了高效的分词...

    庖丁分词.jar

    庖丁分词.jar 庖丁分词.jar 庖丁分词.jar 庖丁分词.jar

    lucene中文分词(庖丁解牛)庖丁分词

    4. 分词处理:在索引文档时,先用庖丁分词器对中文文本进行分词,然后将分词结果转换成Lucene的Term对象,再添加到索引中。 5. 搜索优化:在搜索阶段,同样可以使用庖丁分词器对用户输入的查询进行预处理,提高搜索...

    庖丁解牛分词源码

    "庖丁解牛分词器"是一款著名的中文分词工具,源自开源社区,因其高效的性能和灵活的应用场景而广受欢迎。在深入理解其源码的过程中,我们可以了解到许多关于自然语言处理(NLP)和Java编程的知识点。 1. **中文分词...

    庖丁解牛 中文分词工具

    分词技术在中文文本处理领域内占据着举足轻重的地位,因为它能将一连串的汉字拆分成有明确语义的单元,从而为后续的文本分析和应用提供便利。 用户在使用"庖丁解牛"时,可以通过运行位于软件包中名为`analyzer.bat`...

    庖丁分词测试数据集 工具

    庖丁分词是一款在中文自然语言处理领域...总的来说,庖丁分词测试数据集为开发者提供了一个评估和改进分词算法的平台,通过对"data"文件中内容的深入分析和处理,可以不断提升庖丁分词在中文自然语言处理任务中的表现。

    最新庖丁分词源代码(for lucene3.0)

    你可以研究如何将庖丁分词集成到自己的Lucene项目中,或者基于源代码开发自己的分词组件。 6. **优化与改进**: 针对Lucene 3.0的优化可能不适用于更现代的版本,因此,源代码也提供了机会去探索如何适应Lucene的...

    庖丁分词归类

    总之,"庖丁分词归类"是一个强大的Java分词工具,适用于需要对中文文本进行深入处理的各种应用场景,如搜索引擎构建、文本挖掘、情感分析等。其易用性、高效性和灵活性使得它在Java开发者中受到广泛欢迎。

    庖丁解牛分词 java包

    这个工具包的名称形象地借用中国古代故事“庖丁解牛”,寓意对文本的精细处理,如同庖丁对牛肉的熟练分解。在Java开发中,分词是自然语言处理(NLP)的重要环节,它将连续的汉字序列拆分成有意义的词汇单元,为后续...

    庖丁解牛,一种中文分词器

    通过这些接口,开发者可以轻松地将分词功能融入到自己的应用中,例如搜索引擎、文本分析系统或者智能聊天机器人。 在提供的压缩包文件"paoding-analysis"中,通常会包含分词器的源代码、库文件、配置文件以及相关的...

    庖丁解牛分词之自定义词库、庖丁解牛配置

    "庖丁解牛分词"是一个针对中文文本的分词工具,它借鉴了中国古代庖丁解牛的故事,寓意对文本进行精细、深入的剖析。这个工具的主要目标是帮助开发者更准确地切分中文句子,提取关键信息,从而提升搜索效率或理解文本...

    庖丁分词工具

    庖丁中文分词需要一套词典,这些词典需要统一存储在某个目录下,这个目录称为词典安装目录。词典安装目录可以是文件系统的任何目录,它不依赖于应用程序的运行目录。将词典拷贝到词典安装目录的过程称为安装词典。...

    sorlr + tomcat+ 庖丁解牛中文分词 配置文档

    庖丁解牛是一个流行的中文分词库,主要用于对中文文本进行分词处理,以适应搜索引擎的需求。它采用了高效的分词算法,能够快速准确地将中文句子拆分成单词或短语,为Solr的中文搜索提供支持。 5. **Solr的配置**:...

    庖丁中文分词在VB.NET的使用例子方法

    `pangu_xml`变量存储了DLL文件的完整路径,这是初始化庖丁分词器时所必需的参数。 接下来,通过`PanGu.Segment.Init(pangu_xml)`进行初始化操作,加载庖丁的配置文件和模型数据。一旦初始化完成,就可以创建一个`...

    paoding analysis 3.0.1 jar (庖丁解牛分词器)

    由于庖丁官方目前提供可下载尚不支持Lucene 3.0以上版本。因此作者对paoding进行重新编译,使其与最新Lucene 3.0.1版本适用。 Latest paoding 3.0.1 for lucene 3.0.1 使用说明: 先下载2.0.4的版本(h t t p : / ...

    支持lucne4.X的庖丁分词jar包

    支持lucne4.X的庖丁分词jar包,自己打的jar包,保准好用

    lucene 中文分词 庖丁解牛

    本文将深入探讨如何在Lucene中高效地进行中文分词,借助“庖丁解牛”的概念,以求在理解与应用上达到游刃有余的境地。 一、Lucene简介 Lucene是Java语言编写的一个高性能、可扩展的信息检索库,它提供了完整的搜索...

    lucene Analyzer 庖丁解牛 中文分词

    5. **用户自定义扩展**:除了内置的Analyzer,用户还可以通过继承`Analyzer`类,结合自己的业务需求,实现定制化的分词逻辑。例如,可以添加特定领域的专业术语到词典,或者编写特定的分词规则。 总的来说,Lucene...

    中文分词 庖丁解牛 2_0_0版本发布 - 企业应用

    【庖丁解牛 2_0_0版本】是一个专门针对中文分词的软件工具,其在企业应用中扮演着重要角色。中文分词是自然语言处理中的基础步骤,对于文本分析、信息检索、机器翻译等领域至关重要。在这个2_0_0版本的更新中,我们...

Global site tag (gtag.js) - Google Analytics