国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
開源中文分詞框架分詞效果對比smartcn與IKanalyzer

一、引言:

  中文分詞一直是自然語言處理的一個痛處,早在08年的時候,就曾經(jīng)有項目涉及到相關(guān)的應(yīng)用(Lunce構(gòu)建全文搜索引擎),那時的痛,沒想到5年后的今天依然存在,切分效果、擴展支持、業(yè)務(wù)應(yīng)用等方面依然不甚理想。收費的版本不提了,原因自不必言表,開源版本中,發(fā)現(xiàn)之前曾經(jīng)活躍的版本,大多已經(jīng)沒落(好幾年沒更新了),存活下來的寥寥無幾。我是一個守舊的人,評估版本的選擇有些保守,至少目前為止,只看1.0正式版本之后的版本,0.XX的不在考慮范圍之內(nèi),用了一個周末的時間,對比了十多款的樣子,個人感覺源于中科院ICTCLAS的smartcn和IKAnanlyzer效果還是不錯的。

二、結(jié)果對比

2.1 原始文本

"lucene\分析器\使用\分詞器\和\過濾器\構(gòu)成\一個\“管道”,文本\在\流經(jīng)\這個\管道\后\成為\可以\進入\索引\的\最小單位,因此,一個\標(biāo)準\的分析器有兩個部分組成,一個是分詞器tokenizer,它用于將文本按照規(guī)則切分為一個個可以進入索引的最小單位。另外一個是TokenFilter,它主要作用是對切出來的詞進行進一步的處理(如去掉敏感詞、英文大小寫轉(zhuǎn)換、單復(fù)數(shù)處理)等。lucene中的Tokenstram方法首先創(chuàng)建一個tokenizer對象處理Reader對象中的流式文本,然后利用TokenFilter對輸出流進行過濾處理";
2.2 smartcn

lucen\分析器\使用\分詞\器\和\過濾器\構(gòu)成\一個\管道\文本\流經(jīng)\這個\管道\后\成為\可以\進入\索引\最\小\單位\因此\一個\標(biāo)準\分析器\有\(zhòng)兩\個\部分\組成\一個\分詞\器\token\它\用于\將\文本\按照\規(guī)則\切分\為\一個\個\可以\進入\索引\最\小\單位\另外\一個\tokenfilt\它\主要\作用\對\切\(zhòng)出來\詞\進行\(zhòng)進一步\處理\如\去掉\敏感\(zhòng)詞\英文\大小寫\轉(zhuǎn)換\單\復(fù)數(shù)\處理\等\lucen\中\(zhòng)tokenstram\方法\首先\創(chuàng)建\一\個\token\對象\處理\reader\對象\中\(zhòng)式\文本\然后\利用\tokenfilt\對\輸出\進行\(zhòng)過濾\處理\

2.3 IKanalyzer

lucene\分析器\分析\器使\使用\分詞器\分詞\器\和\過濾器\過濾\濾器\構(gòu)成\一個\一\個\管道\文本\在\流經(jīng)\這個\管道\后\成為\可以\進入\索引\的\最小\單位\因此\一個\一\個\標(biāo)準\的\分析器\分析\器\有\(zhòng)兩個\兩\個\部分\分組\組成\一個是\一個\一\個\是\分詞器\分詞\器\tokenizer\它用\用于\將\文本\按照\規(guī)則\切分\切\(zhòng)分為\一個個\一個\一\個個\個\個\可以\進入\索引\的\最小\單位\另外\一個是\一個\一\個\是\tokenfilter\它\主要\作用\用是\對\切出來\切出\切\(zhòng)出來\的\詞\進行\(zhòng)行進\進一步\進一\一步\一\步\的\處理\如\去掉\敏感\(zhòng)詞\英文\大小寫\大小\小寫\轉(zhuǎn)換\單\復(fù)數(shù)\處理\等\lucene\中\(zhòng)的\tokenstram\方法\首先\創(chuàng)建\一個\一\個\tokenizer\對象\處理\reader\對象\中\(zhòng)的\流式\文本\然后\利用\tokenfilter\對\輸出\流進\進行\(zhòng)過濾\處理\

三、smartcn示例程序

 1 package dictTest; 2  3 import java.util.Iterator; 4  5 import org.apache.lucene.analysis.TokenStream; 6 import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer; 7 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; 8 import org.apache.lucene.analysis.util.CharArraySet; 9 import org.apache.lucene.util.Version;10 11 public class SmartChineseAnalyzerTest {12 13     public static void main(String[] args) {14         try {15             // 要處理的文本16             String text = "lucene分析器使用分詞器和過濾器構(gòu)成一個“管道”,文本在流經(jīng)這個管道后成為可以進入索引的最小單位,因此,一個標(biāo)準的分析器有兩個部分組成,一個是分詞器tokenizer,它用于將文本按照規(guī)則切分為一個個可以進入索引的最小單位。另外一個是TokenFilter,它主要作用是對切出來的詞進行進一步的處理(如去掉敏感詞、英文大小寫轉(zhuǎn)換、單復(fù)數(shù)處理)等。lucene中的Tokenstram方法首先創(chuàng)建一個tokenizer對象處理Reader對象中的流式文本,然后利用TokenFilter對輸出流進行過濾處理";17             //String text = "目前我已經(jīng)用了lucene4.0,雖然是alpha版,但是也是未來的第一步。但是IKAnalyzer不支持lucene4,如果作者在,是否有計劃對4支持?何時支持?";18             // 自定義停用詞19             String[] self_stop_words = { "的", "在","了", "呢", ",", "0", ":", ",", "是", "流" };20             CharArraySet cas = new CharArraySet(Version.LUCENE_46, 0, true);21             for (int i = 0; i < self_stop_words.length; i++) {22                 cas.add(self_stop_words[i]);23             }24 25             // 加入系統(tǒng)默認停用詞26             Iterator<Object> itor = SmartChineseAnalyzer.getDefaultStopSet().iterator();27             while (itor.hasNext()) {28                 cas.add(itor.next());29             }30             31 32             // 中英文混合分詞器(其他幾個分詞器對中文的分析都不行)33             SmartChineseAnalyzer sca = new SmartChineseAnalyzer(Version.LUCENE_46, cas);34 35             TokenStream ts = sca.tokenStream("field", text);36             CharTermAttribute ch = ts.addAttribute(CharTermAttribute.class);37 38             ts.reset();39             while (ts.incrementToken()) {40                 System.out.print(ch.toString()+"\\");41             }42             ts.end();43             ts.close();44         } catch (Exception ex) {45             ex.printStackTrace();46         }47     }48 49 }

四、IKanalyzer示例程序

 1 package dictTest; 2  3 import org.wltea.analyzer.*; 4 import org.apache.lucene.analysis.Analyzer; 5 import org.apache.lucene.analysis.TokenStream; 6 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; 7 import org.wltea.analyzer.lucene.*; 8  9 public class IKAnalyzerTest {10 11     public static void main(String[] args) {12         // TODO Auto-generated method stub13         Analyzer ik  = new IKAnalyzer();14         try{15             String text = "lucene分析器使用分詞器和過濾器構(gòu)成一個“管道”,文本在流經(jīng)這個管道后成為可以進入索引的最小單位,因此,一個標(biāo)準的分析器有兩個部分組成,一個是分詞器tokenizer,它用于將文本按照規(guī)則切分為一個個可以進入索引的最小單位。另外一個是TokenFilter,它主要作用是對切出來的詞進行進一步的處理(如去掉敏感詞、英文大小寫轉(zhuǎn)換、單復(fù)數(shù)處理)等。lucene中的Tokenstram方法首先創(chuàng)建一個tokenizer對象處理Reader對象中的流式文本,然后利用TokenFilter對輸出流進行過濾處理";16             TokenStream ts = ik.tokenStream("field", text);17             18             CharTermAttribute ch = ts.addAttribute(CharTermAttribute.class);19 20             ts.reset();21             while (ts.incrementToken()) {22                 //System.out.println(ch.toString());23                 System.out.print(ch.toString() + "\\");24             }25             ts.end();26             ts.close();27             28         } catch (Exception ex) {29             ex.printStackTrace();30         }    31         32     }33 }

五、結(jié)論

1.二者分詞效果,相比其他已經(jīng)不錯,都值得肯定;

2.smartcn為Lucene4.6版本自帶(之前版本也有),中文分詞不錯,英文分詞有問題,Lucene分詞后變成了Luncn;

3.IKAnalyzer分詞后的碎片太多,可以和人工分析效果做對比;

4.從自定義詞庫的角度考慮,因為smartcn在Lucene4.6中的版本,目前不支持自定義詞庫,成為致命缺陷,只能放棄。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Solr:文本分析
IKAnalyzer中文分詞器介紹
發(fā)布IK Analyzer 3.0 中文分詞器
構(gòu)建基于詞典的Lucene分析器
Analysis分析器(三)
測試lucene的所有分詞接口
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服