Skip to content

2.5 여러 패키지의 교차 사용 (Mixed usage of packages)

Bugeun Kim edited this page Nov 27, 2018 · 6 revisions

여기에 수록된 사용법(1~3절)은 모두 1.x 버전의 사용법입니다. 최신 버전의 사용법은 Usage를 참고하십시오.

통합 인터페이스는 여러 패키지간의 호환이 가능하게 설계되어 있습니다. 이론적으로는 타 패키지의 품사 분석 결과를 토대로 구문 분석이 가능합니다.

Note:

  • 본 분석의 결과는 검증되지 않았습니다.
  • 신조어 등으로 인해 한나눔이나 꼬꼬마에서 품사 분석이 제대로 수행되지 않을 경우를 위한 기능입니다.
  • 사용자 정의 사전은 TaggerParser의 대상이 되는 패키지에 모두에 추가하여야 합니다.

Scala

/* 패키지 명: 한나눔(hnn), 코모란(kmr), 꼬꼬마(kkma), 은전한닢(eunjeon), 트위터(twt), 아리랑(arirang) */
// 예시에서는 트위터 문장분석기, 은전한닢 품사 분석, 꼬꼬마 구문 분석을 진행함.
import kr.bydelta.koala.twt.SentenceSplitter
import kr.bydelta.koala.eunjeon.Tagger
import kr.bydelta.koala.kkma.Parser

// 문장분석기는 트위터의 것을 초기화합니다.
val splitter = new SentenceSplitter
// 품사 분석기는 은전한닢을 초기화합니다.
val tagger = new Tagger
// 의존구문분석은 꼬꼬마를 초기화합니다.
val parser = new Parser

// 분석할 문장
val paragraph = "안녕하세요. 눈이 오는 설날 아침입니다. KoalaNLP는 여러 분석기를 교차할 수 있어 편리합니다."
// 먼저 문장으로 나눕니다.
val sentences = splitter.sentences(paragraph)
// 나눈 문장 각각을 품사분석합니다. (tagSentence는 강제로 한 문장으로 인식하게 합니다)
val tagged = sentences.map(tagger.tagSentence)
// 품사분석된 문장 각각을 의존구문분석합니다.
val parsed = tagged.map(parser.parse)
  • 참고: parser.parse(Sentence)는 입력받은 문장 객체를 반환을 위해 재활용할 수도 있습니다.

Java

Java는 아래와 같습니다.

import kr.bydelta.koala.twt.SentenceSplitter;
import kr.bydelta.koala.eunjeon.Tagger;
import kr.bydelta.koala.kkma.Parser;
import kr.bydelta.koala.Sentence;

// 문장분석기는 트위터의 것을 초기화합니다.
SentenceSplitter splitter = new SentenceSplitter();
// 품사 분석기는 은전한닢을 초기화합니다.
Tagger tagger = new Tagger();
// 의존구문분석은 꼬꼬마를 초기화합니다.
Tagger parser = new Parser();

// 분석할 문장
String paragraph = "안녕하세요. 눈이 오는 설날 아침입니다. KoalaNLP는 여러 분석기를 교차할 수 있어 편리합니다.";
// 먼저 문장으로 나눕니다.
List<String> sentences = splitter.jSentences(paragraph);
// 나눈 문장 각각
for(String line : sentences){
  // 품사분석을 진행합니다 (tagSentence는 강제로 한 문장으로 인식하게 합니다)
  Sentence tagged = tagger.tagSentence(line);
  // 의존구문분석을 진행합니다.
  Sentence parsed = parser.parse(tagged);
}
  • 참고: parser.parse(Sentence)는 입력받은 문장 객체를 반환을 위해 재활용할 수도 있습니다.