레이블이 ngram인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ngram인 게시물을 표시합니다. 모든 게시물 표시

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에 로딩해서 비교해야 처리속도를 보장할 수 있음