위키백과 단답형 질문분석 API 란?
자연어 질문을 분석하여 의미를 이해하고 구조화하는 기술로서 분석 결과는 일반적인 질문 및 위키백과 사전에서 단답형 정답을 찾기 위해서 활용이 가능합니다. 위키백과 대상 단답형 질문 분석 API는 HTTP 기반의 REST API 인터페이스로 JSON 포맷 기반의 입력 및 출력을 지원하며 ETRI에서 제공하는 API Key 인증을 통해 사용할 수 있는 Open API 입니다.
자연어 질문을 분석하여 의미를 이해하고 구조화하는 기술로서 분석 결과는 일반적인 질문 및 위키백과 사전에서 단답형 정답을 찾기 위해서 활용이 가능합니다. 위키백과 대상 단답형 질문 분석 API는 HTTP 기반의 REST API 인터페이스로 JSON 포맷 기반의 입력 및 출력을 지원하며 ETRI에서 제공하는 API Key 인증을 통해 사용할 수 있는 Open API 입니다.
기술명 | API명 | 1일 허용량 |
---|---|---|
질의응답 기술 | 질문분석 API | 5,000건/일 |
위키백과 대상 단답형 질문 분석 API는 REST API이며, 위키백과 대상 단답형 질문 분석을 수행할 텍스트 데이터를 HTTP 통신으로 ETRI Open API 서버에 전달하면 됩니다. 서버가 제공하는 REST API의 URI는 다음과 같으며 POST 방식으로 호출해야 합니다.
http://aiopen.etri.re.kr:8000/WiseQAnal
HTTP 요청으로 위키백과 대상 단답형 질문분석을 요청할 때 사전 준비 사항에서 발급받은 Access key정보를 요청 본문에 포함시켜야 합니다. 다음은 HTTP 요청 메시지 예입니다.
[HTTP Request Header]
"Authorization" : "YOUR_ACCESS_KEY"
[HTTP Request Body]
{
"request_id": "reserved field",
"argument": {
"text": "YOUR_QUESTION"
}
}
위와 같은 HTTP 요청을 ETRI Open API 서버로 전달하면 ETRI Open API 서버는 JSON 형태의 Text 데이터를 HTTP 응답 메시지로 반환합니다. 다음은 HTTP 응답 예제 입니다.
[HTTP Respone Header]
Access-Control-Allow-Origin:*
Connection:close
Content-Length:0
Content-Type:application/json; charset=UTF-8
[HTTP Respone Body]
{
"request_id": "reserved field",
"result": 0,
"return_type": "com.google.gson.internal.LinkedTreeMap",
"return_object": {위키백과 대상 단답형 질문 분석 결과 JSON}
}
JSON parsing을 위해 Gson 라이브러리를 사용하여 제공하고 있습니다. Gson 라이브러리에 대한 자세한 설명은 https://github.com/google/gson 에서 확인 하실 수 있습니다.
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
public class Example {
static public void main ( String[] args ) {
String openApiURL = "http://aiopen.etri.re.kr:8000/WiseQAnal";
String accessKey = "YOUR_ACCESS_KEY"; // 발급받은 API Key
String text = "YOUR_QUESTION"; // 분석할 질문의 텍스트 데이터
Gson gson = new Gson();
Map<String, Object> request = new HashMap<>();
Map<String, String> argument = new HashMap<>();
argument.put("text", text);
request.put("argument", argument);
URL url;
Integer responseCode = null;
String responBody = null;
try {
url = new URL(openApiURL);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
con.setRequestProperty("Authorization", accessKey);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.write(gson.toJson(request).getBytes("UTF-8"));
wr.flush();
wr.close();
responseCode = con.getResponseCode();
InputStream is = con.getInputStream();
byte[] buffer = new byte[is.available()];
int byteRead = is.read(buffer);
responBody = new String(buffer);
System.out.println("[responseCode] " + responseCode);
System.out.println("[responBody]");
System.out.println(responBody);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
<?php
$openApiURL = "http://aiopen.etri.re.kr:8000/WiseQAnal";
$accessKey = "YOUR_ACCESS_KEY";
$text = "YOUR_QUESTION";
$request = array( "
"argument" => array (
"text" => $text
)
);
try {
$server_output = "";
$ch = curl_init();
$header = array(
"Content-Type:application/json; charset=UTF-8",
"Authorization":{$accessKey}
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_URL, $openApiURL);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode ( $request) );
$server_output = curl_exec ($ch);
if($server_output === false) {
echo "Error Number:".curl_errno($ch)."\n";
echo "Error String:".curl_error($ch)."\n";
}
curl_close ($ch);
} catch ( Exception $e ) {
echo $e->getMessage ();
}
echo "result = " . var_dump($server_output);
?>
JSON parsing을 위해 jsoncpp 라이브러리를 사용하여 제공하고 있습니다. jsoncpp 라이브러리에 대한 자세한 설명은 https://github.com/open-source-parsers/jsoncpp 에서 확인 하실 수 있습니다.
HTTP 통신을 위해 curl 라이브러리를 사용하여 제공하고 있습니다. curl 라이브러리에 대한 자세한 설명은 https://curl.haxx.se/libcurl 에서 확인 하실 수 있습니다.
컴파일을 위해서는 아래와 같이 추가된 LIB에 대한 옵션을 추가해야 합니다.
g++ (c++파일명) (JSONCPP)/json/json.h (JSONCPP)/json/json-forwards.h (JSONCPP)/jsoncpp.cpp -I(CURL)/include -lcurl
#include <curl/curl.h>
#include <json/json.h>
#include <iostream>
#include <string>
using namespace std;
size_t writeDataFunc(void *ptr, size_t size, size_t nmemb, std::string stream);
int main() {
char* openApiURL = (char*)"http://aiopen.etri.re.kr:8000/WiseQAnal";
string accessKey = "YOUR_ACCESS_KEY";
string text = "YOUR_QUESTION";
Json::Value request;
Json::Value argument;
argument["text"] = text;
request["argument"] = argument;
CURL *curl;
curl_slist* responseHeaders = NULL;
curl = curl_easy_init();
if( curl == NULL ) {
cout << "Unable to initialize cURL interface" << endl ;
} else {
responseHeaders = curl_slist_append( responseHeaders , "Content-Type: application/json; charset=UTF-8" ) ;
responseHeaders = curl_slist_append( responseHeaders , ("Authorization: " + accessKey).c_str() ) ;
string requestJson = request.toStyledString();
long statusCode;
string response;
curl_easy_setopt(curl, CURLOPT_URL, openApiURL);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, responseHeaders ) ;
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 5);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, requestJson.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeDataFunc);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_perform(curl);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &statusCode);
curl_easy_cleanup(curl);
cout << "[responseCode] " << statusCode << endl;
cout << "[responBody]" << endl;
cout << response << endl;
}
return 0;
}
size_t writeDataFunc(void *ptr, size_t size, size_t nmemb, std::string stream) {
size_t realsize = size * nmemb;
std::string temp(static_cast<const char*>(ptr), realsize);
stream.append(temp);
return realsize;
}
python 3.0을 기준으로 작성되었습니다.
HTTP 통신을 위해 urllib3 라이브러리를 사용하여 제공하고 있습니다. Python 3.0 이하의 버전에서 예제를 실행하기 위해서는 별도로 urllib3의 설치가 필요합니다. 설치에 대한 설명은 https://pypi.python.org/pypi/urllib3 를 참고하시기 바랍니다. urllib3 라이브러리에 대한 자세한 설명은 https://urllib3.readthedocs.io/en/latest/ 에서 확인 하실 수 있습니다.
#-*- coding:utf-8 -*-
import urllib3
import json
openApiURL = "http://aiopen.etri.re.kr:8000/WiseQAnal"
accessKey = "YOUR_ACCESS_KEY"
text = "YOUR_QUESTION"
requestJson = {
"argument": {
"text": text
}
}
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"))
var openApiURL = 'http://aiopen.etri.re.kr:8000/WiseQAnal';
var access_key = 'YOUR_ACCESS_KEY';
var text = 'YOUR_QUESTION';
var requestJson = {
'argument': {
'text': text
}
};
var request = require('request');
var options = {
url: openApiURL,
body: JSON.stringify(requestJson),
headers: {'Content-Type':'application/json','Authorization':access_key}
};
request.post(options, function (error, response, body) {
console.log('responseCode = ' + response.statusCode);
console.log('responseBody = ' + body);
});
위키백과 대상 단답형 질문 분석 API에 필요한 요청 본문에 다음과 같은 파라미터를 작성해야 합니다.
[HTTP Request Header]
"Authorization" : "YOUR_ACCESS_KEY"
[HTTP Request Body]
{
"access_key": "YOUR_ACCESS_KEY",
"argument": {
"text": "YOUR_QUESTION"
}
}
다음은 파라미터에 대한 설명입니다.
Field 명 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
access_key | String | ○ | API 사용을 위해 ETRI에서 발급한 사용자 API Key |
argument | Object | ○ | API 사용 요청 시 분석을 위해 전달할 내용 |
text | String | ○ | 분석할 질문 Text 로서 UTF-8 인코딩된 텍스트만 지원 |
위키백과 대상 단답형 질문 분석 API는 요청된 질문의 분석된 결과를 JSON 형태의 Text 데이터로 반환합니다.
다음은 정상적인 요청 처리에 대한 HTTP 응답 예입니다.
[HTTP Respone Header]
Access-Control-Allow-Origin:*
Connection:close
Content-Length:50783
Content-Type:application/json; charset=UTF-8
[HTTP Respone Body]
{
"request_id": "reserved field",
"result": 0,
"return_type": "com.google.gson.internal.LinkedTreeMap",
"return_object": {위키백과 대상 단답형 질문 분석 결과 JSON}
}
다음은 오류가 발생한 요청 처리에 대한 HTTP 응답 예입니다.
[HTTP Respone Header]
Access-Control-Allow-Origin:*
Connection:close
Content-Length:0
Content-Type:application/json; charset=UTF-8
[HTTP Respone Body]
{
"request_id": "reserved field",
"result": -1,
"reason": {오류 메시지}
}
분석된 결과는 다음과 같은 내용이 포함되어 있습니다.
구분 | JSON Key 이름 | 설명 |
---|---|---|
질문분석 기본정보 (orgQInfo) |
strOrgQuestion | 질문 스트링 |
orgUnit | 원질문 정보 객체 | |
strQuestion | 원질문 스트링 | |
strTaggedQ | 질문 태깅결과 스트링(lexico-semantic pattern 매칭을 위한 언어분석 결과 출력 | |
ndoc | 질문의 언어분석 결과 객체 | |
의문사
기반 질문 유형 |
vQTs | 의문사기반 질문유형 |
qt | 질문유형 코드(숫자) | |
strQTClue | 의문사 스트링 | |
uiSentID | 의문사가 추출된 문장 번호 | |
normQTClue | 의문사 형태소 정보 | |
질문 초점 | vQFs | 질문초점 객체 배열 |
strQF | 질문초점 스트링 | |
uiSentID | 질문초점이 추출된 문장 번호 | |
dWeightQF | 질문초점 신뢰도 | |
vQF_Morp | 질문초점 형태소 정보 객체 | |
vRuleIDs | 매칭규칙 정보들 | |
어휘정답유형 (LAT) |
vLATs | 어휘정답유형 객체 배열 |
strLAT | 어휘정답유형 | |
bNotUseStopword | 불용어 사전이 적용되지 않는 어휘정답유형 여부 | |
vCompoundLATs | 어휘정답유형의 복합명사 형태 스트링 목록 | |
uiSentID | 어휘정답유형이 추출된 문장 번호 | |
strID | 어휘의 코드(의미 또는 개념망 ID) | |
dWeightLAT | 인식 순위 가중치 | |
dConfidenceLAT | 인식의 신뢰도 | |
vLAT_Morp | LAT의 형태소 정보 객체 | |
vRuleIDs | 매칭규칙 정보들 | |
의미정답유형 (SAT) |
vSATs | 세분류 의미정답유형 객체 배열 |
atSAT | 의미정답유형 코드 | |
strSAT | 의미정답유형 스트링 | |
expanse_SAT | 확장 의미정답유형 배열 | |
dWeightSAT | 인식 순위 가중치 | |
dConfidenceSAT | 인식 신뢰도 | |
vRuleIDs | 매칭규칙 정보들 | |
vSATRoots | 대분류 의미정답유형 객체 배열 | |
atSAT | 의미정답유형 코드 | |
strSAT | 의미정답유형 스트링 | |
expanse_SAT | 확장 의미정답유형 배열 | |
dWeightSAT | 인식 순위 가중치 | |
dConfidenceSAT | 인식 신뢰도 | |
vRuleIDs | 매칭규칙 정보들 | |
위키백과 타이틀 |
vTitles | 주요한 개체 정보 배열 |
strEntity | 개체 스트링 | |
uiSentID | 개체가 추출된 문장 번호 | |
atEntityType | 개체의 NE 코드 | |
strEntityType | 개체의 NE 스트링 | |
dWeightTitle | 개체 중요도 | |
vEntity_Morp | 개체 형태소 정보 객체 | |
vEntityInfo | 개체의 위키백과 정보 | |
strNormEntity | 위키백과 타이틀로 정규화된 개체 스트링 | |
strID | 위키백과 타이틀 ID | |
strExplain | 타이틀의 정의문 | |
dWeightEn | 모호성 해소 가중치 | |
질문토픽 | vQTopic | 위키백과 타이틀 중 가장 중요한 타이틀 |
정답유형 통합신뢰도 |
dIntegrativeConf | LAT와 SAT의 통합 신뢰도 정보 |
정답제약 | answerConstraint | |
sentence_id | 문장번호 (>=1) | |
alias | 별칭제약 | |
id | 문장 내 id번째 별칭제약 (>=0) | |
ac | 별칭제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 별칭제약 하위태그의 이름 | |
value | 별칭제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
citation | 인용제약 | |
id | 문장 내 id번째 인용제약 (>=0) | |
ac | 인용제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 인용제약 하위태그의 이름 | |
value | 인용제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
definition | 정의제약 | |
id | 문장 내 id번째 정의제약 (>=0) | |
ac | 정의제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 정의제약 하위태그의 이름 | |
value | 정의제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
differ | 차이제약 | |
id | 문장 내 id번째 차이제약 (>=0) | |
ac | 차이제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 차이제약 하위태그의 이름 | |
value | 차이제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
lang | 언어제약 | |
id | 문장 내 id번째 언어제약 (>=0) | |
ac | 언어제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 언어제약 하위태그의 이름 | |
value | 언어제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
loc | 공간제약 | |
id | 문장 내 id번째 공간제약 (>=0) | |
ac | 공간제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 공간제약 하위태그의 이름 | |
value | 공간제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
memberOf | 소속제약 | |
id | 문장 내 id번째 소속제약 (>=0) | |
ac | 소속제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 소속제약 하위태그의 이름 | |
value | 소속제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
neg | 부정제약 | |
id | 문장 내 id번째 부정제약 (>=0) | |
ac | 부정제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 부정제약 하위태그의 이름 | |
value | 부정제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
official | 공칭제약 | |
id | 문장 내 id번째 공칭제약 (>=0) | |
ac | 공칭제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 공칭제약 하위태그의 이름 | |
value | 공칭제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
ordinal | 순서제약 | |
id | 문장 내 id번째 순서제약 (>=0) | |
ac | 순서제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 순서제약 하위태그의 이름 | |
value | 순서제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
time | 시간제약 | |
id | 문장 내 id번째 시간제약 (>=0) | |
ac | 시간제약 pair정보 | |
id | id번째 pair (>=0) | |
name | 시간제약 하위태그의 이름 | |
value | 시간제약 하위태그의 추출값 | |
value_pos | 추출값의 형태소 및 품사정보 | |
begin_w_id | 추출값의 시작 어절 번호(>=0) | |
end_w_id | 추출값의 마지막 어절 번호 (>=0) | |
begin_m_id | 추출값의 시작 형태소 번호 (>=0) | |
end_m_id | 추출값의 마지막 어절 번호 (>=0) | |
질문분류 | QClassification | 질문분류 정보 객체 |
vQDomain | 질문도메인 객체 배열 | |
qType4Chg | 질문유형 코드 | |
strQType4Chg | 질문유형 스트링 | |
dWeightCQT | 인식 신뢰도 | |
vRuleIDs | 인식 블록 구분 | |
ansQType | 정답형태에 따른 질문유형 객체 | |
vSynQType | 구문적 질문유형 객체 배열 | |
vSemQType | 의미적 질문유형 객체 |
위키백과 대상 단답형 질문 분석 API 가이드를 참고해 주시기 바랍니다.
자연어 질문에서 분석된 의문사에 기반하여 질문의 유형을 분류합니다.
의문사(strQTClue) | 의문사 코드(qt) | 의문사(strQTClue) | 의문사 코드(qt) |
---|---|---|---|
왜 | 0 | 몇 | 6 |
무슨 | 1 | 얼마 | 7 |
누구 | 2 | 언제 | 8 |
무엇 | 3 | 어찌하 | 9 |
어디 | 4 | 어떠하 | 10 |
어느 | 5 | 기타 | 11 |
의문사의 선정은 김광해의 “국어의 의문사에 대한 연구”, 국어학 13, 1983 참고.
질문초점은 “질문에서 찾고자 하는 정답을 지칭하고 있는 질문 내의 특정 부분”을 의미합니다. 질문초점 인식을 위한 기본 패턴은 다음과 같습니다.
어휘정답유형은 정답과 의미적인 연관성을 가지는 질문 내의 어휘를 의미합니다. 의미적인 연관성은 일반적으로 instance-of, isa, part-of 등이 있습니다. 따라서, 어휘정답유형은 정답을 제약하는 중요한 자질로 활용될 수 있습니다. 질문초점의 중심어에 해당하는 명사는 일반적으로 어휘정답유형이 됩니다.
의미정답유형은 질문에서 요구하는 정답의 의미범주를 의미합니다. 의미범주는 언어분석 API 가이드의 개체명 태그셋을 차용합니다. 따라서, 개체명 태그셋을 참고하시면 됩니다. 개체명 태그셋과 별도로 추가된 의미정답유형은 아래와 같습니다.
추가된 의미정답유형 | 의미 |
---|---|
DS_DEFINITION | 특정 어휘나 개념에 대한 정의문을 요청하는 경우의 의미정답유형 |
ETC | 의미정답유형을 특정하지 못하는 경우 |
한국어 위키백과의 타이틀을 인식하여 제공합니다. 질문토픽은 위키백과 타이틀들 중, 질문에서 핵심이 되는 타이틀을 의미합니다. 타이틀의 NE 스트링은 언어분석 API 가이드의 개체명 태그셋을 참고 바랍니다.
한국어 위키백과 질의응답을 위해 자연어 질문 문장에서 추출한, 정답을 제약하는 표현입니다. 위키백과 영역에서 고빈도로 출현하는 총 11개의 정답제약 표현을 대상으로 추출합니다. 질문 문장 안의 정답제약의 위치정보와 함께 제공됩니다.
분류 | 설명 |
---|---|
단답형 | 정답을 명사(구) 또는 어휘로 제시해야 하는 질문 |
나열형 | 정답을 2개 이상 순서와 관계없이 제시해야 하는 질문 |
서술형 | 문장이나 개조식으로 정답을 제시해야 하는 질문 |
검색형 | 특정한 정보(non-factoid)에 대한 검색을 요청하는 질문 |
대분류 | 소분류 | 설명 |
---|---|---|
정의형 | 용어요청형 | 정의문이 제시되고 용어를 찾는 질문 |
의미요청형 | 용어가 제시되고 의미를 묻는 질문 | |
속성값요청형 | 개체나 이벤트와 함께 속성단서가 제공되고, 그에 해당하는 속성값을 요청하는 질문 | |
추론형 | 속성비교형 | 정답후보들 간의 비교 연산이 요구되는 질문 |
시간비교형 | 속성비교형과 동일한 형태로 단지 시간정보 연산만을 요구하는 질문 | |
계산형 | 분할되는 두 질문의 정답에 대해 사칙연산(arithmetic operation) 을 요구하는 질문 | |
계산형 | 특정한 정보(non-factoid)에 대한 검색을 요청하는 질문 | |
OOD형 (Out-Of-Domain) |
텍스트 질문만으로는 처리하기 힘든 질문. 일반적으로 멀티미디어 정보가 함께 제시되는 질문 |
위키피디아 대상 단답형 질문 분석 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 | 내부 오류 발생한 경우 |