-
Notifications
You must be signed in to change notification settings - Fork 44
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 //통합품사. }...]