새소식

SW 개발

[Android + NLP] Kkma형태소 분석기 안드로이드 스튜디오에서 사용하기

  • -

● 형태소 분석기

 

 

한국어 처리에 있어 형태소 분석기는 매우 중요합니다. 영어의 경우 공백 기준으로 단어를 나누는 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);
            forint i = 0; i < stl.size(); i++ ) {
                Sentence st = stl.get(i);
                System.out.println("=============================================  " + st.getSentence());
                forint 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);
        forint i = 0; i < kl.size(); i++ ){
            Keyword kwrd = kl.get(i);
            System.out.println(kwrd.getString() + "\t" + kwrd.getCnt());
        }
    }
}
 
cs

 

 


 

결과

 

 

 

 


 

 

References

 

자바 텍스트마이닝을 위한 형태소분석-꼬꼬마분석기(Kkma) 설치와 사용

Kkma Document

한국어 형태소 분석기 성능 비교

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.