Divide and Conquer

Java로 Kkma 형태소 분석기 사용해서 자연어 처리하기 본문

성장캐/안드로이드 스튜디오

Java로 Kkma 형태소 분석기 사용해서 자연어 처리하기

10살 2021. 5. 7. 23:17
728x90

출처

 

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

● 형태소 분석기 한국어 처리에 있어 형태소 분석기는 매우 중요합니다. 영어의 경우 공백 기준으로 단어를 나누는 tokenize기능을 사용해도 큰 무리가 없지만, 한국어 문장에서 키워드를 추출하

ebbnflow.tistory.com

1. app/libs으로 kkam-2.1.jar 파일 이동

2. app 수준의 build.gradle에 implementation files 경로 추가

implementation files('libs/kkma-2.1.jar')

3. KkmaTest 이름으로 class 생성

package com.example.wc;

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 = "명사만추출하는코드입니다람쥐";
        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());
        }
    }
}

 

반응형
Comments