今天遇到一个比较无奈的问题。在用paoding的时候,我发现一些词组我认为是有用,却被它过滤掉,查看了一下源代码,发现有加载过x-noise-word,于是我将x-noise-word里面关于我需要的词组删除掉,那么这样是变成有用的词了吧。比如说x-noise-word里面有"什么",我删除掉,分词的时候,就认为"什么"是有用的词组。
事实上,修改后,发现没有效果。因为个人看paoding源代码比较吃力,没能力弄明白。于是,有了一个异想天开的想法。
在分词之后,它认为没有用的词组,我把它修改成有用的词组,那不是解决问题了。有了想法,就有干劲。
花了一个下午,把这个问题解决掉。代码如下:
package net.paoding.analysis.dictionary;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;
public class ContraryStopWord {
private static final String DEFAULT_DIC_PATH = "dic/contrary-stopword.dic";
private String UNSTOPWORD = null;
private static Hashtable<String,Integer> HSW = new Hashtable<String,Integer>();
private static ContraryStopWord unStopWord = new ContraryStopWord();
public static ContraryStopWord getInstance(){
return unStopWord;
}
private ContraryStopWord(){
loadContraryStopwordDic();
}
private void loadContraryStopwordDic()
{
FileInputStream in = null;
BufferedReader breader = null;
try {
in = new FileInputStream(new File(this.DEFAULT_DIC_PATH));
breader = new BufferedReader(new InputStreamReader(in));
String line = breader.readLine();
while(line!=null){
hswAdd(line);
line = breader.readLine();
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if(breader!=null){
breader.close();
}
if(in!=null){
in.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void setMode(String UNSTOPWORD)
{
this.UNSTOPWORD = UNSTOPWORD;
}
private void hswAdd(String key)
{
HSW.put(key, 1);
}
public boolean hswGet(String key)
{
return HSW.get(key)==null?true:false;
}
public static void main(String args[]){
ContraryStopWord word = ContraryStopWord.getInstance();
word.hswGet("");
}
}
dic/contrary-stopword.dic
就是反停用词的文件。
比如,在文件里面写
什么
为什么
....
最后在net.paoding.analysis.dictionary找到Word类
private ContraryStopWord contraryStopWord = ContraryStopWord.getInstance();
public boolean isNoise() {
if(!contraryStopWord.hswGet(text)){
return false;
}
return isNoiseCharactor() || isNoiseWord();
}
填写上面两个代码
在分词的时候,就能起到反停用词的作用。
分享到:
相关推荐
因此作者对paoding进行重新编译,使其与最新Lucene 3.0.1版本适用。 Latest paoding 3.0.1 for lucene 3.0.1 使用说明: 先下载2.0.4的版本(h t t p : / /code.google.com/p/paoding/),配置好环境后,引用...
"庖丁解牛"是一款专为中文处理设计的分词工具,其版本2.0.4-alpha2提供了更稳定和高效的分词体验。这个工具的核心功能是将中文文本拆分成有意义的词语,这对于中文信息处理、自然语言理解和搜索引擎优化等场景至关...
这个工具的名字来源于中国古代寓言故事“庖丁解牛”,寓意对文本的精细处理和深入理解,就像庖丁对牛肉的熟练切割一样。在IT行业中,分词是自然语言处理(NLP)中的基础步骤,它将连续的汉字序列分割成具有语义意义...
"庖丁解牛jarbao"是一个专为中文分词设计的工具,它的核心是"庖丁解牛中文分词器"。在Java开发环境中,它通常以jar包的形式提供,如"paoding-analysis - 3.1.jar",这表明它是基于Java语言实现的,并且是版本3.1的...
在实际应用中,例如建立一个新闻网站的全文检索系统,开发者可以利用"庖丁解牛分词法"对新闻内容进行预处理,将每篇新闻文本拆分成关键词,再用Lucene建立索引。当用户输入查询词时,系统将使用相同的分词逻辑进行...
实例是一个java实例,可直接导入到MyEclipse中...其中是lucene3.0整合了庖丁解牛分词法,添加了高亮显示。因为lucene3.0无法整合paoding-analysis.jar 所以我已经把paoding-analysis中的源码整合进来了避免无法整合问题
《庖丁解牛 源码 for Lucene 2.4》是一份针对开源全文搜索引擎Lucene 2.4版本的深度解析资料。这个压缩包包含的文件名为"paoding-for-lucene-2.4",很可能是针对中文处理的Paoding Lucene库的源代码分析或扩展。...
1. **引入库**:首先,我们需要将`paoding_lucene3_0530.jar`文件添加到项目的类路径中,这个库包含了庖丁解牛分词器的实现。 2. **配置字典**:利用`dic`目录下的字典文件,可以定制化分词器的词典,以适应特定...
一直找不到适合lucene-35以上的庖丁解牛jar包,搞了半天总于生成好了jar包,在lucene-35中运行没问题
这个工具包的名称形象地借用中国古代故事“庖丁解牛”,寓意对文本的精细处理,如同庖丁对牛肉的熟练分解。在Java开发中,分词是自然语言处理(NLP)的重要环节,它将连续的汉字序列拆分成有意义的词汇单元,为后续...
《庖丁解牛算法代码解读》 算法是计算机科学中的核心组成部分,对于高效地处理大量数据和解决复杂问题起着至关重要的作用。本文将深入解析一种名为“庖丁解牛”的分词算法,该算法在自然语言处理领域有着广泛的应用...
"庖丁解牛"是一款专为处理中文文本的分词工具,它的设计目的是为了帮助开发者更高效、准确地对中文文本进行分词处理。在自然语言处理(NLP)领域,分词是基础且关键的一环,它将连续的文本序列切分成具有独立意义的...
Paoding's Knives 中文分词具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。 高效率:在PIII 1G内存个人机器上,1秒 可准确分词 100万 汉字。 采用基于 不限制个数 的词典文件对文章...
庖丁解牛 分割文件~~~
庖丁解牛,搜索引擎分词技术,用于开发网站站内搜索所需分词技术工具包。
可以适用于lucene3.5的庖丁解牛分词器jar包
庖丁解牛分词时需要的高亮显示jar包,高亮显示需要的jar包
标题“Paoding中文分词”指的是一个专门用于处理中文文本的分词工具,名为“庖丁解牛中文分词”。在自然语言处理领域,分词是预处理的重要步骤,它将连续的汉字序列切分成有意义的词汇单元,便于后续的文本分析和...
Paoding这个名字来源于中国古代的一种宰牛技术,寓意其对中文文本的“解构”能力,如同庖丁解牛般精细入微。 Paoding的核心特点包括: 1. **智能词典**:Paoding使用了一种动态加载的词典机制,能够根据上下文信息...