改進的中科院分詞系統NLPIR程式碼(加入使用者詞典,去停用詞,檔案讀寫)+情感分析字典包+工具包+論文包
阿新 • • 發佈:2018-11-19
NLPIR分詞,加入使用者詞典,去停用詞,檔案讀寫等
原始碼下載地址
優化的分詞系統程式碼
以下是核心程式碼
完整程式碼可以直接執行分詞,點我跳轉
public class NLPIRTest {
private List<String> files = new ArrayList<>(); //建立陣列files
//getAllFiles函式來獲得檔案的絕對路徑
private void getAllFiles(File filePath) {
File[] fsFiles = filePath.listFiles();//獲得filepath的絕對路徑
assert fsFiles != null;
for (File f : fsFiles) {
if (f.isFile() && !f.getName().equals(".DS_Store")) files.add(f.getPath());//獲得檔案的路徑
if (f.isDirectory()) this.getAllFiles(f);//遞迴呼叫,將檔案的絕對路徑存入陣列files中
}
}
//segLines方法用來規範讀寫檔案
private List<String> segLines(File file) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK"));
List<String> temp = new ArrayList<>();
String str;
while ((str = bf.readLine()) != null) {
//String str2 = str + "\r\n";
temp.add(str);
}
bf.close();
return temp;
}
//excludeStopWord來去除停用詞
private void excludeStopWord(File file) throws Exception {
//省去了變數和陣列的定義
for (String merBer:splitWordArray){
String[] splitString = merBer.split("\t");
conString.setLength(0);
for (int i=0;i<splitString.length;i++){
if (stopWord.contains(splitString[i])){
splitString[i] = null;
}
if (splitString[i]!=null) conString.append(splitString[i]).append(" ");
}
bw.write(conString.toString());
bw.newLine();
}
bw.close();
}
public static void main(String[] args) throws Exception {
NLPIR.init("lib");
NLPIR.importUserDict("F:\\split_word\\dict_comment1.txt");
//呼叫使用者詞典
//分詞呼叫見完整程式碼
}