前幾天我修改了ictclas4j中文分詞系統,將其在JSP中調用,在載入詞庫時出現路徑問題,調用方法是在JSP中執行個體化JAVA類,然後調用JAVA類的方法,完成中文分詞,JSP代碼如下::
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="bean.*,org.ictclas4j.segment.*,org.ictclas4j.bean.*,java.io.*,java.util.*,org.ictclas4j.utility.*"%>
<%
String prm = new String();
request.setCharacterEncoding("gb2312");
prm = request.getParameter("txt1").toString();
out.println("分詞前::<br/>");
out.println(prm+"<br/>");
SegTag segTag = new SegTag(1);
SegResult seg_res = segTag.split(prm);
String result = new String(seg_res.getFinalResult());
out.println("分此後::<br/>");
out.println(result);
%>
注意紅色的代碼,就在執行個體化SegResult對象的時候,載入詞庫代碼如下:
public SegTag(int segPathCount) {
this.segPathCount = segPathCount;
coreDict = new Dictionary("e:\\nextspace\\Data\\coreDict.dct");
bigramDict = new Dictionary("e:\\nextspace\\Data\\bigramDict.dct");
personTagger = new PosTagger(Utility.TAG_TYPE.TT_PERSON, "e:\\nextspace\\Data\\nr", coreDict);
transPersonTagger = new PosTagger(Utility.TAG_TYPE.TT_TRANS_PERSON, "e:\\nextspace\\Data\\tr", coreDict);
placeTagger = new PosTagger(Utility.TAG_TYPE.TT_TRANS_PERSON, "e:\\nextspace\\Data\\ns", coreDict);
lexTagger = new PosTagger(Utility.TAG_TYPE.TT_NORMAL, "e:\\nextspace\\Data\\lexical", coreDict);
}
大家注意那些紅色的代碼,是載入詞庫的絕對路徑,這樣的話可以實現中文分詞,但是轉移到別的機器上後就會出現問題,因為這個絕對路徑是相對於我的電腦而言的,如果轉移到別的電腦後他的詞庫不在E盤,或者不再e:\nextspace\data目錄下,就會出現詞庫找不到異常,如果用相對路徑也會報異常,這個問題困擾我兩天了,還望各位前輩高手幫忙。