2015년 9월 2일 수요일

한국어 ngram 생성기..

단어가 아닌 글자수로 ngram을 생성하기 위한 java 코드.
한국어라고해서 딱히 달라질건 없으나, 함수 입력값으로 gram생성을 위한 size를 받아서 해당 size의 ngram만 생성해준다. 물론 1~10크기의 ngram을 생성하기 위해서는 10번을 호출해야한다.
한국어 특성상 ngram을 생성하면 garbage가 꽤나 많아지므로 글자의 size별로 grabage 날리기 위한 처리를 하기에는 편한 코드.

public ArrayList<String> nGramAnalyzer(String sentence, int gram) {
ArrayList<String> termList = new ArrayList<String>();
for(int i = 0; i < sentence.length() - (gram - 1); i++)
        {
String term = "";
for (int j = 0; j < gram; j++) {
if (j == (gram - 1)) {
term += String.valueOf(sentence.charAt(i + j));
} else {
term += sentence.charAt(i + j) + "";
}
}
termList.add(term);
}
return termList;
}

** 대상 text는 UTF-8로 가정하고 테스트를 해본 코드
** 사전은 가능하면 Map으로 memory에 로딩해서 비교해야 처리속도를 보장할 수 있음

댓글 없음:

댓글 쓰기