`
wj.geyuan
  • 浏览: 14823 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ansj_Seg5.0.1版本与lucene的集成以及ansj_seg 5.0.1使用

阅读更多
首先之前的ansj2.X版本需要导入两个包ansj_seg-2.0.8-min..jar、nlp-lang-0.2.jar。
现在只需要导入一个包就OK了 简单方便了ansj_seg-5.0.1-all-in-one.jar

好了不说了。直接贴与lucene的代码
其实就这么一句话,就OK了。
public static Analyzer analyzer = new AnsjAnalyzer(AnsjAnalyzer.TYPE.index);

public static void main(String[] args) throws IOException {
        Set<String> filter = new HashSet<String>() ;
        
        String stopDicStr = "y" ;  
        
        BufferedReader br = new BufferedReader(new StringReader(stopDicStr)) ;
        String temp = null ;
        while((temp=br.readLine())!=null){
            filter.add(temp) ;
        }
        
        StringReader reader = new StringReader("测试中华人名共和王y健") ;
        Tokenizer tokenizer = new AnsjTokenizer(new IndexAnalysis(reader), filter);
        while(tokenizer.incrementToken()){
            CharTermAttribute attribute = tokenizer.getAttribute(CharTermAttribute.class) ;
            System.out.println(attribute);
        }
    }

5.0.1 使用的jdk1.6.不过这里上传的包我处理过的。需要用jdk1.7的版本


public static void main(String[] args) {
		/**
		 * 这里我还是要说名下AnsjAnalyzer.TYPE里面有6个参数index, query, to, dic, user, search
		 * 这个6个参数使用的分词调用方式是不同的。具体调用的是什么分词方式。我下面贴ansj的源码
		 * 
		 */
        Analyzer ca = new AnsjAnalyzer(TYPE.index);        
        String content = "王占三李四王五,中华人名共和国xx格原信息技术有限公司" ;        
        try {
			TokenStream tokenStream = ca.tokenStream(content, new StringReader(content)) ;
			
			while(tokenStream.incrementToken()){
				CharTermAttribute attribute = tokenStream.getAttribute(CharTermAttribute.class)  ;
				System.out.println(attribute);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        ca.close();

	}



/**
	 * 获得一个tokenizer就是这段了
	 * IndexAnalysis、DicAnalysis、ToAnalysis 三个调用方式
	 * @param reader
	 * @param type
	 * @param filter
	 * @return
	 */
	public static Tokenizer getTokenizer(BufferedReader reader, TYPE type, Set<String> filter) {
		Tokenizer tokenizer;

		switch (type) {
		case index:
			if (reader == null) {
				tokenizer = new AnsjTokenizer(new IndexAnalysis(), filter);
			} else {
				tokenizer = new AnsjTokenizer(new IndexAnalysis(reader), filter);
			}
			break;
		case dic:
		case user:
			if (reader == null) 
				tokenizer = new AnsjTokenizer(new DicAnalysis(), filter);
			} else {
				tokenizer = new AnsjTokenizer(new DicAnalysis(reader), filter);
			}
			break;

		case to:
		case query:
		case search:
			if (reader == null) {
				tokenizer = new AnsjTokenizer(new ToAnalysis(), filter);
			} else {
				tokenizer = new AnsjTokenizer(new ToAnalysis(reader), filter);
			}
			break;
		default:
			if (reader == null) {
				tokenizer = new AnsjTokenizer(new ToAnalysis(), filter);
			} else {
				tokenizer = new AnsjTokenizer(new ToAnalysis(reader), filter);
			}
		}

		return tokenizer;
	}

面向索引的分词-IndexAnalysis:
支持:用户自定义分词,数字识别、人名识别功能:
Result  term=  IndexAnalysis.parse("材米油盐是一个主副食品");
	     System.out.println(term.toString());
	     Iterator<Term> it=term.iterator();
	     while(it.hasNext()){
	    	 org.ansj.domain.Term t=it.next();
	    	 if(t.getNatureStr() !=null && !(t.getNatureStr().equalsIgnoreCase("null"))&& t.getNatureStr().startsWith("n")){
	    		 System.out.println(t.getNatureStr());
		    	 System.out.println(t.getName());
	    	 }
	     }

材/ng,米/q,油盐/n,油/n,盐/n,是/v,一个/m,一/m,个/q,主副食品/n,主副食/n,主/ag,副食品/n,副食/n,副/b,食品/n,食/v,品/ng


用户自定义词典优先级升高-DicAnalysis:
如果你有自定义词库用这个很好

精准分词-ToAnalysis。



好吧,最后说下ansj_seg5.X升级的内容:
1、支持自训练CRF模型的加载。目前支持CRF++ 及 Wapiti两种模型。并提供训练语料的生成工具。
2、将默认crfmodel移动到jar包内。并压缩了大小控制在16m。
3、正式发布了DicAnalysis分词策略,使用户自定义词典优先级升高。如果你用户自定义词典足够强建议用这个方式的分词。
4、将分词结果封装为Result对象。这样便于对结果的二次处理。
5、增加Recognition接口,对结果的二次处理。可以通过链式调用的方式增加你的操作。同时6、去掉了FilterModifWord类,用Recognition重新来实现。
7、删除了DownLibrary.java 类的功能。不再提供自动下载模型的方式

原谅我吧。。。jar太大 ,eye不让上传 这里给你们一个百度云的链接地址:
JAR:
http://pan.baidu.com/s/1hspuLM0
分享到:
评论

相关推荐

    ansj_seg-3.7.6-all-in-one.jar

    ansj_seg-3.7.6,由于maven库无法访问下载,只能直接引用jar包了。

    ansj分词ansj_seg-5.1.5.jar

    使用此版本的jar包,可以方便地将ANSJ分词集成到Java项目中,实现快速的分词功能。 接下来,我们讨论如何结合nlp-lang配置使用。nlp-lang是一个用于自然语言处理的Java库,它包含了丰富的语言处理组件,如词性标注...

    ansj_seg-master

    博文链接中,作者分享了使用ansj_seg-master的实际经验,包括如何配置环境、如何使用API进行分词操作以及在实际项目中的应用案例,对于初学者来说是一份很好的参考资料。 总结来说,ansj_seg-master作为一款优秀的...

    ansj_seg-master_java_中文自然语言_

    ansj_seg可能使用了这些技术的某种组合,比如基于HMM(隐马尔可夫模型)或CRF(条件随机场)的模型,也可能包括基于字典的分词和未登录词识别。自定义分词逻辑可能通过提供API接口实现,允许用户添加自己的词汇表、...

    ansj_seg-5.1.3

    《ansj_seg-5.1.3:中文分词与自然语言处理的利器》 在中文文本处理领域,分词是至关重要的第一步,因为它直接影响到后续的语义分析、情感分析、关键词抽取等一系列自然语言处理任务的效果。"ansj_seg-5.1.3"是一个...

    ansj_seg-3.7.6-one.jar

    ansj_seg-3.7.6-on的jar包,有需要的朋友可以自行下载!

    ansj_seg-5.1.2

    ansj_seg-5.1.2.jar分词架包 5.1.2版本,ansj_seg-5.1.2.jar

    ansj_seg-5.1.1.jar

    ansj_seg-5.1.1.jar

    ansj_seg-5.1.6.jar

    ansj_seg-5.1.6.jar

    ansj_seg-5.1.3.jar

    最新的ansj分词工具jar包,用于在ecplise中使用ansj分词。ansj是由孙健开发的一个基于n-Gram+CRF+HMM的中文分词的java实现。分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上。目前实现了...

    ansj_seg-2.0.8-min.jar

    ansj,做中文分词的好东西,非常的不错。希望对大家有用处

    ansj_seg-5.0.0

    ansj_seg-5.0.0

    ansj_seg-3.7.2.jar

    ansj_seg-3.7.2工具类

    ansj_seg.jar nlp-lang-1.7.7.jar

    在给定的压缩包中,包含两个重要的jar包:`ansj_seg-5.1.6.jar`和`nlp-lang-1.7.7.jar`,它们分别是ANSJ分词库和NLP工具包的不同版本。 **ANSJ分词库**是由易开源社区开发的一款高效的中文分词工具,其全称为...

    ( ansj_seg-2.0.8.jar )

    ansj_seg-2.0.8.jar

    ansj_seg-5.1.6-sources.jar

    java运行依赖jar包

    ansj分词工具所需jar包(最新)

    这是目前来说最新的ansj分词jar包,导入即可使用

    ansj_seg-2.0.8.jar

    本jar包是对ansj_seg-master文件中org.ansj.domain中的属性类进行了序列化,以便使属性对象可以在spark中传输。

Global site tag (gtag.js) - Google Analytics