Skip to content

3.2 HTTP REST Server

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

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

실행하기

아래와 같이 서버를 정의합니다.

NOTE: Scala만 지원합니다.

1.9.2 버전을 전후하여 출력 형식이 Scala instance에 더 가깝도록 변경되었습니다. 1.9.1 및 그 이전의 형식을 보려면 revision 0b50afcf를 참고하세요.

import kr.bydelta.koala.server._
import kr.bydelta.koala.kkma.{Dictionary, Parser, Tagger}

object KKMAServer extends Server{
  // 접속할 포트 번호
  override val port: Int = 8080
  // 사용할 품사 분석기
  override def getTagger = new Tagger
  // 사용할 의존구문 분석기
  override def getParser = new Parser
  // 사용할 사전
  override val dict = Dictionary
}

KoalaNLP는, 개발자 여러분의 편의를 위해, Server Trait에 미리 main함수를 정의해 두었습니다.

따라서, Server를 상속받은 object는 실행이 가능합니다. SBT를 사용하면 아래와 같이 서비스 실행이 가능합니다.

sbt runMain KKMAServer

통신하기

통신은 다음의 3가지 Path로 이루어집니다.

Path 지원 Method 요청 Body 응답 Body 설명
/tag GET, POST, PUT String Json Object4 요청 본문에 전달된 문단에 품사를 답니다.
/parse GET, POST, PUT String Json Object4 요청 본문에 전달된 문단의 각 문장마다 의존관계를 분석합니다.
/dict POST, PUT Json Array5 Json Object4 주어진 사전을 사용자사전에 추가합니다.

주4 응답의 형태:

{ "success": Boolean,     //성공여부,
  "message": String,      //[실패시] 서버 메시지,
  "data": [{              //[Tag, Parse의 경우만] 문장 Array
    "words":[               //문장 1개의 어절 Array
      {"surface": String,    //어절 표면형
       "morphemes": [            //어절의 형태소 Array
        {"surface": String, //형태소 표면형
         "tag": String,     //통합품사
         "rawTag": String   //품사 원본
        }...],
       "dependents": [      //[Parse의 경우만 non-empty] 의존소 Array
        {"rel": String,     //표준화된 의존관계
         "rawRel": String,  //의존관계 원본
         "childID": Int     //의존소 위치
        }...]
      }...
    ],
    "root": [             //[Parse의 경우만 non-empty] 문장 Root의 의존소 Array
      {"rel": String,       //표준화된 의존관계
       "rawRel": String,    //의존관계 원본
       "childID": Int       //의존소 위치
      }...
    ]
  }...]
}

주5 사전의 형태:

[{"morph": String,   //형태소 표면형
  "tag": String      //통합품사.
 }...]

Clone this wiki locally