package kr.org.kisti.morph.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
/**
*
* @author admin
*/
public class Comparer {
private String inputFileName1;
private String inputFileName2;
private String outputFileName;
private String sourceString;
private static final String NEWLINE = "\r\n";
public Comparer(String iFileName1, String iFileName2, String rFileName) {
inputFileName1 = iFileName1;
inputFileName2 = iFileName2;
outputFileName = rFileName;
}
// 키워드 추출 시작
public void Do() {
BufferedReader dResult = readResult(inputFileName1);
BufferedReader tResult = readResult(inputFileName2);
BufferedWriter writer = writeResult(outputFileName);
List<String> dListResult = null;
List<String> tListResult = null;
while(true) {
dListResult = processD(dResult);
tListResult = processT(tResult);
if(dListResult == null || tListResult == null) {
break;
}
boolean isFirst = true;
StringBuffer sb = new StringBuffer();
sb.append("Resource : " + sourceString + NEWLINE);
sb.append("D_Result : ");
for(String s : dListResult) {
if(isFirst) {
isFirst = false;
} else {
sb.append(", ");
}
sb.append(s);
}
sb.append(NEWLINE);
isFirst = true;
sb.append("T_Result : ");
for(String s : tListResult) {
if(isFirst) {
isFirst = false;
} else {
sb.append(", ");
}
sb.append(s);
}
sb.append(NEWLINE + NEWLINE);
try {
writer.write(sb.toString());
} catch(IOException e) {
}
sb = null;
}
try {
dResult.close();
tResult.close();
writer.close();
} catch(IOException e) { }
}
// 다이퀘스트 결과 분석 후 키워드 리스트 반환
public List<String> processD(BufferedReader dResult) {
List<String> keyword = new ArrayList<String>();
boolean isContinue = true;
try {
sourceString = dResult.readLine();
while(isContinue) {
String s = dResult.readLine();
if(s == null) {
//System.out.println("end file");
return null;
}
if(!s.startsWith("=")) {
keyword.add(s.trim());
} else {
break;
}
}
} catch(IOException e) { }
return keyword;
}
// 탑쿼드란드 결과 분석 후 키워드 리스트 반환
public List<String> processT(BufferedReader tResult) {
List<String> keyword = new ArrayList<String>();
try {
sourceString = tResult.readLine();
boolean isContinue = true;
while(isContinue) {
String s = tResult.readLine();
if(s == null) {
//System.out.println("end file");
return null;
}
if(!s.startsWith("=")) {
if(s.startsWith("[")) {
s = s.substring(1, s.length()-1);
StringTokenizer stok = new StringTokenizer(s, ",");
while(stok.hasMoreTokens()) {
keyword.add(stok.nextToken().trim());
}
}
} else {
break;
}
}
} catch(IOException e) { }
return keyword;
}
// 한글 인코딩 고려하여 파일에서 읽어들이기 위한 인스턴스 생성
public BufferedReader readResult(String fileName) {
BufferedReader in = null;
try {
in = new BufferedReader(
new InputStreamReader(
new FileInputStream(fileName), "MS949")
//new FileInputStream(fileName), "UTF-8")
);
} catch (IOException e) {
System.out.println("file error!");
}
return in;
}
// 분석결과 파일에 쓰기위한 인스턴스 생성
public BufferedWriter writeResult(String outFileName) {
BufferedWriter out = null;
try {
out = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(outFileName), "UTF-8")
);
} catch(IOException e) {
System.out.println("Can't write file..");
}
return out;
}
}
'백엔드기술 > 개발언어' 카테고리의 다른 글
임시 참조 - 루씬 한글형태소분석기 사용하기(main) (0) | 2010.05.25 |
---|---|
뮤텍스 (Mutex) (0) | 2009.12.09 |
프로세스와 스레드 (0) | 2009.12.09 |