목차로 이동


목차

구문 구조 분석하기

문장 또는 문단을 분석해서 각 문장의 구문구조를 묶어낼 수 있습니다. 한나눔 분석기만 구문구조 분석을 지원합니다.

결과물은 Sentence 객체에 포함된 SyntaxTree가 됩니다.

아래 분석 예시는 ‘텍스트 문단’ 을 기준으로 분석한 결과들입니다. 이미 타 분석기에서 분석된 Sentence 객체나, Sentence의 List인 경우에도 같은 방식으로 호출이 가능합니다.

참고

구문구조 분석은 문장의 구성요소들(어절, 구, 절)이 이루는 문법적 구조를 분석하는 방법입니다.

예) ‘나는 밥을 먹었고, 영희는 짐을 쌌다’라는 문장에는 2개의 절이 있습니다

각 절은 3개의 구를 포함합니다

Kotlin

Reference: CanParseSyntax, Parser

import kr.bydelta.koala.hnn.Parser

val parser = Parser()

val parsed = parser.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") 
// 또는 parser(...), parser.invoke(...)

println(parsed[0].getSyntaxTree().getTreeString()) // 첫번째 문장의 구문구조 트리를 출력합니다.

Scala

Reference: CanParseSyntax, Parser

import kr.bydelta.koala.hnn.Parser
import kr.bydelta.koala.Implicits._

val parser = new Parser()

val parsed = parser.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.")
// 또는 parser(...), parser.invoke(...)

println(parsed(0).getSyntaxTree().getTreeString()) // 첫번째 문장의 구문구조 트리를 출력합니다.

Java

Reference: CanParseSyntax, Parser

import kr.bydelta.koala.hnn.Parser;
import kr.bydelta.koala.data.Sentence;

Parser parser = new Parser();

List<Sentence> parsed = parser.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.");
// 또는 parser.invoke(...)

System.out.println(parsed.get(0).getSyntaxTree().getTreeString()); // 첫번째 문장의 구문구조 트리를 출력합니다.

JavaScript

Reference: Parser

Async/Await
const {Parser} = require('koalanlp/proc');
const {HNN} = require('koalanlp/API');

async function someAsyncFunction(){
    // ....
    
    let parser = new Parser(HNN);
    let result = await parser("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.");
    // 또는 parser.analyze(...)

    /* Result는 Sentence[] 타입입니다. */
    console.log(result[0].getSyntaxTree().getTreeString());  // 첫번째 문장의 구문구조 트리를 출력합니다.
    
    // ...
}

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

let parser = new Parser(HNN);
parser("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.")  // 또는 parser.analyze(...)
    .then((result) => {
        /* Result는 Sentence[] 타입입니다. */
        console.log(result[0].getSyntaxTree().getTreeString());  // 첫번째 문장의 구문구조 트리를 출력합니다.
    }, (error) => console.error('Error occurred!', error));
Synchronous Call (준비중)
const {Parser} = require('koalanlp/proc');
const {HNN} = require('koalanlp/API');

// ....

let parser = new Parser(HNN);
let result = parser.analyzeSync("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.");

/* Result는 Sentence[] 타입입니다. */
console.log(result[0].getSyntaxTree().getTreeString());  // 첫번째 문장의 구문구조 트리를 출력합니다.

// ...

Python 3

Reference: Parser

from koalanlp import API
from koalanlp.proc import Parser

parser = Parser(API.HNN)
parsed = parser("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.")
# 또는 parser.analyze(...), parser.invoke(...)

print(parsed[0].getSyntaxTree().getTreeString())  # 첫번째 문장의 구문구조 트리를 출력합니다.

목차로 이동