訓練集管理器

package NaviveBayesClassify;java


import java.io.BufferedReader;app

import java.io.File;ui

import java.io.FileInputStream;this

import java.io.FileNotFoundException;.net

import java.io.IOException;get

import java.io.InputStreamReader;io

//import java.util.Properties;class

import java.util.logging.Level;import

import java.util.logging.Logger;file

/**

* 訓練集管理器

*/

public class TrainingDataManager 

{

private String[] traningFileClassifications;//訓練語料分類集合

private File traningTextDir;//訓練語料存放目錄

private static String defaultPath = "D:\\TrainningSet";


public TrainingDataManager() 

{

traningTextDir = new File(defaultPath);

if (!traningTextDir.isDirectory()) 

{

throw new IllegalArgumentException("訓練語料庫搜索失敗! [" +defaultPath + "]");

}

this.traningFileClassifications = traningTextDir.list();

}

/**

* 返回訓練文本類別,這個類別就是目錄名

* @return 訓練文本類別

*/

public String[] getTraningClassifications() 

{

return this.traningFileClassifications;

}

/**

* 根據訓練文本類別返回這個類別下的全部訓練文本路徑(full path)

* @param classification 給定的分類

* @return 給定分類下全部文件的路徑(full path)

*/

public String[] getFilesPath(String classification) 

{

File classDir = new File(traningTextDir.getPath() +File.separator +classification);

String[] ret = classDir.list();

for (int i = 0; i < ret.length; i++) 

{

ret[i] = traningTextDir.getPath() +File.separator +classification +File.separator +ret[i];

}

return ret;

}

/**

* 返回給定路徑的文本文件內容

* @param filePath 給定的文本文件路徑

* @return 文本內容

* @throws java.io.FileNotFoundException

* @throws java.io.IOException

*/

public static String getText(String filePath) throws FileNotFoundException,IOException 

{

InputStreamReader isReader =new InputStreamReader(new FileInputStream(filePath),"GBK");

BufferedReader reader = new BufferedReader(isReader);

String aline;

StringBuilder sb = new StringBuilder();

while ((aline = reader.readLine()) != null)

{

sb.append(aline + " ");

}

isReader.close();

reader.close();

return sb.toString();

}

/**

* 返回訓練文本集中全部的文本數目

* @return 訓練文本集中全部的文本數目

*/

public int getTrainingFileCount()

{

int ret = 0;

for (int i = 0; i < traningFileClassifications.length; i++)

{

ret +=getTrainingFileCountOfClassification(traningFileClassifications[i]);

}

return ret;

}

/**

* 返回訓練文本集中在給定分類下的訓練文本數目

* @param classification 給定的分類

* @return 訓練文本集中在給定分類下的訓練文本數目

*/

public int getTrainingFileCountOfClassification(String classification)

{

File classDir = new File(traningTextDir.getPath() +File.separator +classification);

return classDir.list().length;

}

/**

* 返回給定分類中包含關鍵字/詞的訓練文本的數目

* @param classification 給定的分類

* @param key 給定的關鍵字/詞

* @return 給定分類中包含關鍵字/詞的訓練文本的數目

*/

public int getCountContainKeyOfClassification(String classification,String key) 

{

int ret = 0;

try 

{

String[] filePath = getFilesPath(classification);

for (int j = 0; j < filePath.length; j++) 

{

String text = getText(filePath[j]);

if (text.contains(key)) 

{

ret++;

}

}

}

catch (FileNotFoundException ex) 

{

Logger.getLogger(TrainingDataManager.class.getName()).log(Level.SEVERE, null,ex);


catch (IOException ex)

{

Logger.getLogger(TrainingDataManager.class.getName()).log(Level.SEVERE, null,ex);

}

return ret;

}

}

相關文章
相關標籤/搜索