?? trainingdatamanager.java
字號(hào):
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* 訓(xùn)練集管理器
*/
public class TrainingDataManager
{
private String[] traningFileClassifications;//訓(xùn)練語(yǔ)料分類集合
private File traningTextDir;//訓(xùn)練語(yǔ)料存放目錄
private static String defaultPath = "D:\\TrainningSet";
public TrainingDataManager()
{
traningTextDir = new File(defaultPath);
if (!traningTextDir.isDirectory())
{
throw new IllegalArgumentException("訓(xùn)練語(yǔ)料庫(kù)搜索失敗! [" +defaultPath + "]");
}
this.traningFileClassifications = traningTextDir.list();
}
/**
* 返回訓(xùn)練文本類別,這個(gè)類別就是目錄名
* @return 訓(xùn)練文本類別
*/
public String[] getTraningClassifications()
{
return this.traningFileClassifications;
}
/**
* 根據(jù)訓(xùn)練文本類別返回這個(gè)類別下的所有訓(xùn)練文本路徑(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;
}
/**
* 返回給定路徑的文本文件內(nèi)容
* @param filePath 給定的文本文件路徑
* @return 文本內(nèi)容
* @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();
}
/**
* 返回訓(xùn)練文本集中所有的文本數(shù)目
* @return 訓(xùn)練文本集中所有的文本數(shù)目
*/
public int getTrainingFileCount()
{
int ret = 0;
for (int i = 0; i < traningFileClassifications.length; i++)
{
ret +=getTrainingFileCountOfClassification(traningFileClassifications[i]);
}
return ret;
}
/**
* 返回訓(xùn)練文本集中在給定分類下的訓(xùn)練文本數(shù)目
* @param classification 給定的分類
* @return 訓(xùn)練文本集中在給定分類下的訓(xùn)練文本數(shù)目
*/
public int getTrainingFileCountOfClassification(String classification)
{
File classDir = new File(traningTextDir.getPath() +File.separator +classification);
return classDir.list().length;
}
/**
* 返回給定分類中包含關(guān)鍵字/詞的訓(xùn)練文本的數(shù)目
* @param classification 給定的分類
* @param key 給定的關(guān)鍵字/詞
* @return 給定分類中包含關(guān)鍵字/詞的訓(xùn)練文本的數(shù)目
*/
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;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -