목차로 이동


목차

품사 분석하기

문장 또는 문단을 분석해서 품사를 부착할 수 있습니다. 모든 분석기 API가 품사 분석을 지원합니다.

결과물은 Sentence 객체가 됩니다.

아래 분석 예시는 ‘문단’ 을 기준으로 분석한 결과들입니다. 문장 1개를 분석하고 싶은 경우 tag 대신에 tagSentence를 사용하면 됩니다.

참고

형태소는 의미를 가지는 요소로서는 더 이상 분석할 수 없는 가장 작은 말의 단위로 정의됩니다.

형태소 분석은 문장을 형태소의 단위로 나누는 작업을 의미합니다.

예) ‘문장을 형태소로 나눠봅시다’의 경우, 아래와 같이 대략적으로 형태소를 나눌 수 있습니다.

Kotlin

Reference: CanTag 및 이를 상속한 class들.

import kr.bydelta.koala.eunjeon.Tagger
// 또는 eunjeon 대신 다른 분석기 가능: arirang, daon, etri, eunjeon, hnn, kkma, kmr, okt, rhino 

val tagger = Tagger()
// (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: Tagger(useLightTagger = true)
// (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: Tagger(API_KEY)
// (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: Tagger(resourcePath)
// (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다.
// import kr.bydelta.koala.utagger.UTagger
// UTagger.setPath(libraryPath, configPath)  // (라이브러리 파일 위치와 설정파일 위치 지정)

val taggedParagraph = tagger.tag("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다.")
// 또는 tagger(...), tagger.invoke(...)

// 분석 결과는 Sentence 클래스의 List입니다.
println(taggedParagraph[0].singleLineString()) // "문단을 분석합니다."의 품사분석 결과 출력

Scala

Reference: CanTag 및 이를 상속한 클래스들.

import kr.bydelta.koala.eunjeon.Tagger
import kr.bydelta.koala.Implicits._
// 또는 eunjeon 대신 다른 분석기 가능: arirang, daon, etri, eunjeon, hnn, kkma, kmr, okt, rhino 

val tagger = new Tagger()
// (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: new Tagger(useLightTagger = true)
// (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: new Tagger(API_KEY)
// (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: new Tagger(resourcePath)
// (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다.
// import kr.bydelta.koala.utagger.UTagger
// UTagger.setPath(libraryPath, configPath)  // (라이브러리 파일 위치와 설정파일 위치 지정)

val taggedParagraph = tagger("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다.")
// 또는 tagger(...), tagger.invoke(...)

// 분석 결과는 Sentence 클래스의 List입니다.
println(taggedParagraph(0).singleLineString()) // "문단을 분석합니다."의 품사분석 결과 출력

Java

Reference: CanTag 및 이를 상속한 class들.

import kr.bydelta.koala.eunjeon.Tagger;
import kr.bydelta.koala.data.Sentence;
// 또는 eunjeon 대신 다른 분석기 가능: arirang, daon, etri, eunjeon, hnn, kkma, kmr, okt, rhino 

Tagger tagger = new Tagger();
// (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: new Tagger(useLightTagger = true);
// (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: new Tagger(API_KEY);
// (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: new Tagger(resourcePath);
// (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다.
// import kr.bydelta.koala.utagger.UTagger;
// UTagger.setPath(libraryPath, configPath);  // (라이브러리 파일 위치와 설정파일 위치 지정)

// 문단을 분석해서 문장들로 얻기 (각 API가 문단 분리를 지원하지 않아도, KoalaNLP가 자동으로 구분합니다)
List<Sentence> taggedParagraph = tagger.tag("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다.");
// 또는 tagger.invoke(...)

// 분석 결과는 Sentence 클래스의 List입니다.
println(taggedParagraph.get(0).singleLineString()) // "문단을 분석합니다."의 품사분석 결과 출력

JavaScript

Reference: Tagger

Async/Await
const {Tagger} = require('koalanlp/proc');
const {EUNJEON} = require('koalanlp/API');

async function someAsyncFunction(){
    // ....
    
    let tagger = new Tagger(EUNJEON);
    // (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: new Tagger(KMR, {kmrLight:true});
    // (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: new Tagger(ETRI, {etriKey: API_KEY});
    // (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: new Tagger(KHAIII, {khaResource: resourcePath});
    // (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다.
    // const {utagger} = require('koalanlp/proc');
    // UTagger.setPath(libraryPath, configPath);  // (라이브러리 파일 위치와 설정파일 위치 지정)

    let result = await tagger("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다.");
    // 또는 tagger.tag(...) 

    /* Result는 string[] 타입입니다. */
    console.log(result[0].singleLineString()); // "문단을 분석합니다."의 품사분석 결과 출력
        
    // ...
}

someAsyncFunction().then(
    () => console.log('After function finished'),
    (error) => console.error('Error occurred!', error)
);
Promise
const {Tagger} = require('koalanlp/proc');
const {EUNJEON} = require('koalanlp/API');

let tagger = new Tagger(EUNJEON);
// (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: new Tagger(KMR, {kmrLight:true});
// (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: new Tagger(ETRI, {etriKey: API_KEY});
// (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: new Tagger(KHAIII, {khaResource: resourcePath});
// (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다.
// const {utagger} = require('koalanlp/proc');
// UTagger.setPath(libraryPath, configPath);  // (라이브러리 파일 위치와 설정파일 위치 지정)

tagger("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다.")  // 또는 tagger.tag(...)
    .then((result) => {
        /* Result는 string[] 타입입니다. */
        console.log(result[0].singleLineString()); // "문단을 분석합니다."의 품사분석 결과 출력
    }, (error) => console.error('Error occurred!', error));
Synchronous Call
const {Tagger} = require('koalanlp/proc');
const {EUNJEON} = require('koalanlp/API');

// ....

let tagger = new Tagger(EUNJEON);
// (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: new Tagger(KMR, {kmrLight:true});
// (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: new Tagger(ETRI, {etriKey: API_KEY});
// (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: new Tagger(KHAIII, {khaResource: resourcePath});
// (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다.
// const {utagger} = require('koalanlp/proc');
// UTagger.setPath(libraryPath, configPath);  // (라이브러리 파일 위치와 설정파일 위치 지정)

let result = await tagger.tagSync("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다."); 

/* Result는 string[] 타입입니다. */
console.log(result[0].singleLineString()); // "문단을 분석합니다."의 품사분석 결과 출력
    
// ...

Python 3

Reference: Tagger

from koalanlp import API
from koalanlp.proc import Tagger

tagger = Tagger(API.EUNJEON)
# (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: Tagger(kmr_light=True)
# (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: Tagger(etri_key=API_KEY)
# (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: Tagger(khaiii_resource=some_path)
# (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다.
# from koalanlp.proc import UTagger
# UTagger.setPath(library_path, config_path)  // (라이브러리 파일 위치와 설정파일 위치 지정)

# 문단을 분석해서 문장들로 얻기 (각 API가 문단 분리를 지원하지 않아도, KoalaNLP가 자동으로 구분합니다)
taggedParagraph = tagger("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다.")
# 또는 tagger.tag(...), tagger.invoke(...)

print(taggedParagraph[0].singleLineString()) # "문단을 분석합니다."의 품사분석 결과 출력

목차로 이동