어휘 간 유사도 분석 API 란?
다양한 어휘지식을 통합한 WiseWordNet 어휘 지식베이스에 기반하여 어휘 간 거리 정보를 분석하는 기술로서 입력된 여휘간 유사도 결과를 제공합니다. 어휘 간 유사도 분석 API는 HTTP 기반의 REST API 인터페이스로 JSON 포맷 기반의 입력 및 출력을 지원하며 ETRI에서 제공하는 API Key 인증을 통해 사용할 수 있는 Open API입니다.
API 호출 1일 허용량
| 기술명 | API명 | 1일 허용량 |
|---|---|---|
| 어휘관계 분석 기술 | 어휘간 유사도 분석 API | 5,000건/일 |
어휘 간 유사도 분석 API 사용하기
어휘 간 유사도 분석 API는 REST API이며, 다의어 조회의 대상 어휘 데이터를 HTTP 통신으로 ETRI Open API 서버에 전달하면 됩니다. 서버가 제공하는 REST API의 URI는 다음과 같으며 POST 방식으로 호출해야 합니다.
http://epretx.etri.re.kr:8000/api/WiseWWN_WordRel
[HTTP Request Header]
"Authorization" : "YOUR_ACCESS_KEY"
[HTTP Request Body]
{
"request_id": "reserved field",
"argument": {
“first_word”: “FIRST_YOUR_WORD”,
“first_sense_id”: “FIRST_WORD_SENSE_ID”,
“second_word”: “SECOND_YOUR_WORD”,
“second_sense_id”: “SECOND_WORD_SENSE_ID”
}
위와 같은 HTTP 요청을 e-PreTX 서버로 전달하면 서버는 JSON 형태의
Text 데이터를 HTTP 응답 메시지로 반환합니다. 다음은 HTTP 응답 예제 입니다.
[HTTP Response Header]
Access-Control-Allow-Origin:*
Connection:close
Content-Length:0
Content-Type:application/json; charset=UTF-8
[HTTP Response Body]
{
"request_id": "reserved field",
"result": 0,
"return_type": "com.google.gson.internal.LinkedTreeMap",
"return_object": {어휘 간 유사도 분석 결과 JSON}
}
구현 예제(Python)
python 3.0을 기준으로 작성되었습니다.
HTTP 통신을 위해 urllib3 라이브러리를 사용하여 제공하고 있습니다. Python 3.0 이하의 버전에서
예제를 실행하기 위해서는 별도로 urllib3의 설치가 필요합니다.
설치에 대한 설명은 https://pypi.python.org/pypi/urllib3 를 참고하시기 바랍니다.
설치에 대한 설명은 https://pypi.python.org/pypi/urllib3 를 참고하시기 바랍니다.
urllib3 라이브러리에 대한 자세한 설명은 https://urllib3.readthedocs.io/en/latest/
에서 확인 하실 수 있습니다.
#-*- coding:utf-8 -*-
import urllib3
import json
openApiURL = "http://epretx.etri.re.kr:8000/api/WiseWWN_WordRel"
accessKey = "YOUR_ACCESS_KEY"
firstWord = 'FIRST_WORD'
firstSenseId = 'FIRST_SENSE_ID'
secondWord = 'SECOND_WORD'
secondSenseId = 'SECOND_SENSE_ID'
requestJson = {
"argument": {
'first_word': firstWord,
'first_sense_id': firstSenseId,
'second_word': secondWord,
'second_sense_id': secondSenseId
}
}
http = urllib3.PoolManager()
response = http.request(
"POST",
openApiURL,
headers={"Content-Type": "application/json; charset=UTF-8","Authorization" : accessKey},
body=json.dumps(requestJson)
)
print("[responseCode]" + str(response.status))
print("[responBody]")
print(str(response.data,"utf-8"))
어휘 간 유사도 분석 API 레퍼런스
다음은
파라미터에 대한 설명입니다.
| Field 명 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| access_key | String | ○ | API 사용을 위해 ETRI에서 발급한 사용자 API Key |
| argument | Object | ○ | API 사용 요청 시 분석을 위해 전달할 내용 |
| first_word | String | ○ | 비교 분석할 어휘 Text 로서 UTF-8 인코딩된 텍스트만 지원 |
| first_sense_id | String | 첫
번째 어휘의 의미 코드 2자리 숫자 : 동음이의어 의미코드 4자리 숫자 : 동음이의어 의미코드(2자리)+다의어 의미 코드(2자리) |
|
| second_word | String | ○ | 비교 분석 대상 어휘 Text 로서 UTF-8 인코딩된 텍스트만 지원 |
| second_sense_id | String | 두
번째 어휘의 의미 코드 2자리 숫자 : 동음이의어 의미코드 4자리 숫자 : 동음이의어 의미코드(2자리)+다의어 의미 코드(2자리) |
분석된 결과는 다음과 같은 내용이 포함되어 있습니다.
| 구분 | JSON Key 이름 | 설명 |
|---|---|---|
| MetaInfo | Title | Open APIs의 타이틀 명 |
| Link | 해당 Open APIs를 사용하기 위한 URL 정보 | |
| WWN WordRelInfo | FirstWordInfo | 첫 번째 어휘 정보 |
| Word | 어휘의 원문자열 | |
| HomonymCode | 어휘의 동음이의어 코드 (2자리 숫자) | |
| PolysemyCode | 어휘의 다의어 코드 (2자리 숫자) | |
| Definition | 의미 정보 | |
| POS | 어휘의
품사 명사 : "n" 동사 : "v" |
|
| SecondWordInfo | 두 번째 어휘 정보 | |
| Word | 어휘의 원문자열 | |
| HomonymCode | 어휘의 동음이의어 코드 (2자리 숫자) | |
| PolysemyCode | 어휘의 다의어 코드 (2자리 숫자) | |
| Definition | 의미 정보 | |
| POS | 어휘의
품사 명사 : "n" 동사 : "v" |
|
| WordRelInfo | 어휘 간 유사도 분석 정보 | |
| ShortedPath | 가장 가까운 연결 어휘 경로 정보 | |
| Distance | 어휘 경로 거리 정보 (숫자) | |
| Similarity | 어휘 간 거리 유사도 | |
| Algorithm | 거리 유사도 알고리즘 | |
| SimScore | 거리 유사도 신뢰도 |
어휘 간 유사도 분석 API의 오류 코드 목록은 다음과 같습니다.
| http status code | result | reason | 설명 |
|---|---|---|---|
| 403 | -1 | Empty Auth Header | Authorization 헤더가 없는 경우 |
| 403 | -1 | Invalid Key | KEY
API 키가 없는 경우 |
| 403 |
-1 | Blocked KEY | API
키가 관리자에 의해서 차단된 경우 |
| 403 |
-1 | Daily Limit Exceeded | 일간 호출 제한에 걸린 경우 |
| 403 |
-1 | Monthly
Limit Exceeded |
월간 호출 제한에 걸린 경우 |
| 403 |
-1 | Yearly
Limit Exceeded |
연간 호출 제한에 걸린 경우 |
| 403 |
-1 | Too Many Keys | 같은 IP에서 여러 API 키가 사용된 경우 |
| 403 |
-1 | Too Many IPs | 하나의 API 키를 여러 IP 에서 사용한 경우 |
| 403 |
-1 | Not Allowed IP | API
호출 가능한 IP 가 아닌경우 (API 설정에서 허용된 IP가 아닌경우) |
| 403 |
-1 | Not Allowed Subpath | 하위경로 접근 제한이 되어 있는 경우 |
| 403 | -1 | Invalid
API |
등록되지
않은 API를 요청한 경우 |
| 408 | -1 |
Request
Timeout |
서버의
요청 대기가 시간을 초과한 경우 |
| 413 |
-1 | Body
Size Limit Exceeded |
요청
바디가 설정된 값보다 큰 경우 |
| 429 |
-1 | Concurrent
Limit Exceeded |
연속호출
허용 범위를 넘어서 호출한 경우 |
| 500 | -1 | Internal Server Error | 내부 오류 발생한 경우 |
