Ansj中文分词Java开发自定义和过滤词库
生活随笔
收集整理的這篇文章主要介紹了
Ansj中文分词Java开发自定义和过滤词库
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Ansj中文分詞應(yīng)用時,需要自定義詞庫,比如城中村,分詞成城、中、村,需自定義詞庫,有時,也需要過濾單詞。具體代碼如下,可以結(jié)合執(zhí)行結(jié)果看代碼效果。
1、過濾詞庫
package csc.ansj;import org.ansj.domain.Result; import org.ansj.recognition.impl.FilterRecognition; import org.ansj.splitWord.analysis.ToAnalysis;public class AnsjWordFilter {public static void main(String[] args) {String str = "不三不四,您好!歡迎使用ansj_seg,深圳有沒有城中村這里有寬帶嗎?(ansj中文分詞)在這里如果你遇到什么問題都可以聯(lián)系我.我一定盡我所能.幫助大家.ansj_seg更快,更準(zhǔn),更自由!" ;//過濾詞性和詞匯FilterRecognition fitler = new FilterRecognition();//http://nlpchina.github.io/ansj_seg/content.html?name=詞性說明fitler.insertStopNatures("w"); //過濾標(biāo)點符號詞性fitler.insertStopNatures("null");//過濾null詞性fitler.insertStopNatures("m");//過濾m詞性fitler.insertStopWord("不三不四"); //過濾單詞fitler.insertStopRegex("城.*?"); //支持正則表達(dá)式Result modifResult = ToAnalysis.parse(str).recognition(fitler); //過濾分詞結(jié)果System.out.println(modifResult.toString());} } /** 您好/l,歡迎/v,使用/v,ansj/en,seg/en,深圳/ns,有/v,沒/d,有/v,村/n,這里/r,有/v,寬帶/nz,嗎/y,ansj/en,中文/nz,分詞/n,在/p,這里/r,如果/c,你/r,遇到/v,什么/r,問題/n,都/d,可以/v,聯(lián)系/v,我/r,我/r,一定/d,盡/v,我/r,所/u,能/v,幫助/v,大家/r,ansj/en,seg/en,更/d,快/a,更/d,準(zhǔn)/a,更/d,自由/a*/2、自定義詞庫,可以設(shè)置歧義詞等 package csc.ansj;import org.ansj.app.summary.SummaryComputer; import org.ansj.domain.Result; import org.ansj.domain.Term; import org.ansj.library.UserDefineLibrary; import org.ansj.splitWord.analysis.ToAnalysis; import org.nlpcn.commons.lang.tire.domain.Forest; import org.nlpcn.commons.lang.tire.domain.Value; import org.nlpcn.commons.lang.tire.library.Library;public class AnsjWordDefine {public static void main(String[] args) throws Exception {String str = "不三不四,您好!歡迎使用ansj_seg,深圳有沒有城中村這里有寬帶嗎?(ansj中文分詞)在這里如果你遇到什么問題都可以聯(lián)系我.我一定盡我所能.幫助大家.ansj_seg更快,更準(zhǔn),更自由!" ;// 增加新詞,中間按照'\t'隔開UserDefineLibrary.insertWord("城中村", "userDefine", 1000);//自定義詞匯、自定義詞性UserDefineLibrary.insertWord("ansj中文分詞", "userDefine", 1001);Result terms = ToAnalysis.parse(str);System.out.println("增加自定義詞庫:" + terms.toString());// 刪除詞語,只能刪除.用戶自定義的詞典.UserDefineLibrary.removeWord("ansj中文分詞");UserDefineLibrary.removeWord("城中村");terms = ToAnalysis.parse(str);System.out.println("刪除自定義詞庫:" + terms.toString());// 歧義詞Value value = new Value("濟(jì)南下車", "濟(jì)南", "n", "下車", "v");System.out.println(ToAnalysis.parse("我經(jīng)濟(jì)南下車到廣州.中國經(jīng)濟(jì)南下勢頭迅猛!"));Library.insertWord(UserDefineLibrary.ambiguityForest, value);System.out.println(ToAnalysis.parse("我經(jīng)濟(jì)南下車到廣州.中國經(jīng)濟(jì)南下勢頭迅猛!"));// 多用戶詞典String str1 = "神探夏洛克這部電影作者.是一個dota迷";System.out.println(ToAnalysis.parse(str1));// 兩個詞匯 神探夏洛克 douta迷Forest dic1 = new Forest();Library.insertWord(dic1, new Value("神探夏洛克", "define", "1000"));Forest dic2 = new Forest();Library.insertWord(dic2, new Value("dota迷", "define", "1000"));System.out.println(ToAnalysis.parse(str1, dic1, dic2));} } /*增加自定義詞庫:不三不四/i,,/w,您好/l,!/w,歡迎/v,使用/v,ansj/en,_,seg/en,,,深圳/ns,有/v,沒/d,有/v,城中村/userDefine,這里/r,有/v,寬帶/nz,嗎/y,?,(,ansj中文分詞/userDefine,),在/p,這里/r,如果/c,你/r,遇到/v,什么/r,問題/n,都/d,可以/v,聯(lián)系/v,我/r,./m,我/r,一定/d,盡/v,我/r,所/u,能/v,./m,幫助/v,大家/r,./m,ansj/en,_,seg/en,更/d,快/a,,,更/d,準(zhǔn)/a,,,更/d,自由/a,! 刪除自定義詞庫:不三不四/i,,/w,您好/l,!/w,歡迎/v,使用/v,ansj/en,_,seg/en,,,深圳/ns,有/v,沒/d,有/v,城中/ns,村/n,這里/r,有/v,寬帶/nz,嗎/y,?,(,ansj/en,中文/nz,分詞/n,),在/p,這里/r,如果/c,你/r,遇到/v,什么/r,問題/n,都/d,可以/v,聯(lián)系/v,我/r,./m,我/r,一定/d,盡/v,我/r,所/u,能/v,./m,幫助/v,大家/r,./m,ansj/en,_,seg/en,更/d,快/a,,,更/d,準(zhǔn)/a,,,更/d,自由/a,! 我/r,經(jīng)濟(jì)/n,南/f,下/f,車/n,到/v,廣州/ns,./m,中國/ns,經(jīng)濟(jì)/n,南/f,下/f,勢頭/n,迅猛/a,! 我/r,經(jīng)/p,濟(jì)南/n,下車/v,到/v,廣州/ns,./m,中國/ns,經(jīng)濟(jì)/n,南/f,下/f,勢頭/n,迅猛/a,! 神/n,探/v,夏洛克/nr,這部/r,電影/n,作者/n,./m,是/v,一個/m,dota/en,迷/v 神探夏洛克/define,這部/r,電影/n,作者/n,./m,是/v,一個/m,dota迷/define*/
總結(jié)
以上是生活随笔為你收集整理的Ansj中文分词Java开发自定义和过滤词库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离线轻量级大数据平台Spark之中文字符
- 下一篇: Java实现算法导论中最大公约数欧几里得