SW 개발
[Android + NLP] Kkma형태소 분석기 안드로이드 스튜디오에서 사용하기
minkyung
2020. 5. 12. 11:47
● 형태소 분석기
한국어 처리에 있어 형태소 분석기는 매우 중요합니다. 영어의 경우 공백 기준으로 단어를 나누는 tokenize기능을 사용해도 큰 무리가 없지만, 한국어 문장에서 키워드를 추출하려면 각 단어들을 형태소 분석에 의하여 가치가 있는 명사, 동사, 조사 등을 추출해야 합니다.
○ 형태소 분석(Pos Tagging)이란?
원시말뭉치를 형태소 단위로 쪼개고 각 형태소에 품사 정보를 부착하는 작업을 가리킵니다. 많은 개발자, 데이터 분석가들이 한국어에 특화된 형태소 분석기를 만들어주었고 오픈소스로 이용할 수 있게 되었습니다. 특히 파이썬 패키지로 유명한 'KoNLPy'는 꼬꼬마, 꼬모란, 한나눔, 메캅 등의 유명한 형태소 분석기를 묶어 편리하게 사용할 수 있도록 되어있습니다.
○ 어떤 형태소 분석기를 사용해야 하는지
- 빠른 분석이 중요할 때 : Okt(구 Twitter)
- 정확한 품사 정보가 필요할 때 : 꼬꼬마(Kkma)
- 정확성, 시간 모두 중요할 때 : 코모란(Komoran)
● 안드로이드 스튜디오에서 Kkma 형태소 분석기 사용하기
1. 먼저 Kkma 형태소 분석기의 .jar 파일을 다운로드 받습니다.
(.jar 파일은 자바 플랫폼에 기능들을 실행 가능한 파일로 만든 것)
2. 다운로드 받은 kkam-2.1.jar 파일 libs 디렉토리로 이동
3. build.gradle(app)에 dependencies의 implementation files 경로 추가
implementation files('libs/kkma-2.1.jar') 추가 후 Sync Now
4. 테스트 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package com.example.test;
import org.snu.ids.kkma.index.Keyword;
import org.snu.ids.kkma.index.KeywordExtractor;
import org.snu.ids.kkma.index.KeywordList;
import org.snu.ids.kkma.ma.MExpression;
import org.snu.ids.kkma.ma.MorphemeAnalyzer;
import org.snu.ids.kkma.ma.Sentence;
import java.util.List;
public class KkmaTest {
public static void main(String[] args){
// maTest();
extractTest();
}
public static void maTest()
{
String string = "꼬꼬마형태소분석기를테스트할것입니다.";
try {
MorphemeAnalyzer ma = new MorphemeAnalyzer();
ma.createLogger(null);
List<MExpression> ret = ma.analyze(string);
ret = ma.postProcess(ret);
ret = ma.leaveJustBest(ret);
List<Sentence> stl = ma.divideToSentences(ret);
for( int i = 0; i < stl.size(); i++ ) {
Sentence st = stl.get(i);
System.out.println("============================================= " + st.getSentence());
for( int j = 0; j < st.size(); j++ ) {
System.out.println(st.get(j));
}
}
ma.closeLogger();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void extractTest(){
String string = "이부분은명사만추출할것이고오늘은오월12일입니다.";
KeywordExtractor ke = new KeywordExtractor();
KeywordList kl = ke.extractKeyword(string, true);
for( int i = 0; i < kl.size(); i++ ){
Keyword kwrd = kl.get(i);
System.out.println(kwrd.getString() + "\t" + kwrd.getCnt());
}
}
}
|
cs |
결과
References
자바 텍스트마이닝을 위한 형태소분석-꼬꼬마분석기(Kkma) 설치와 사용