상세 컨텐츠

본문 제목

[JAVA] 기계 독해API 사용

Spring/JAVA

by Chan.94 2021. 9. 30. 10:24

본문

반응형


진행 중인 프로젝트에 기계 독해 API를 적용할지 여부를 판단하기 위해 테스트해본 후기이다.
사이트에서도 테스트를 할 수 있기에 확인후 샘플 코드를 받아 진행해보길 바란다.

 

공공 인공지능 오픈 API·DATA 서비스 포털

과학기술정보통신부의 R&D 과제를 통해 개발한 다양한 인공지능 기술 및 데이터를 누구나 사용할 수 있도록 제공

aiopen.etri.re.kr

오픈 API이기에 사용을 위해서는 우선 KEY를 발급받아야 한다.
KEY신청은 사용목적, 회사 등의 정보를 입력하고 신청하면 된다. (자체적으로 발급 기준이 있는 듯)
발급까지 반나절 정도 소요되었던 것 같다.


사용후기
필자는 문장에서 질문에 해당하는 내용을 부분 부분 합쳐서 보여주기를 원했으나 해당 API는 부분 부분이 아닌 특정 시작 지점부터 종료 시점이 존재하게 결과를 주었다. 따라서 사용하지는 않기로 하였으나 재미있는 경험이었다.
단락 내 시작 위치, 종료 위치, 신뢰도를 돌려주기에 사용하면서 별도의 프로그래밍을 통해 후속조치도 가능해 보인다.
기회가 되면 다른 API도 제공되기에 사용해보아야겠다.
(다음에 다른 API를 사용해보기 위해 포스팅을 하기로 결심)



샘플 소스도 제공되기에 사용하는 것에는 큰 어려움이 없다.
제공되는 샘플 JAVA소스

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/MRCServlet";
        String accessKey = "YOUR_ACCESS_KEY";
        // 발급받은 API Key String passage = "YOUR_PASSAGE"; 
        // 분석할 문단 데이터 String question = "YOUR_QUESTION"; 
        // 질문 데이터 
        Gson gson = new Gson(); 
        Map<String, Object> request = new HashMap<>(); 
        Map<String, String> argument = new HashMap<>(); 
        argument.put("question", question); 
        argument.put("passage", passage); 
        request.put("access_key", accessKey); 
        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); 
            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(); 
       } 
   } }
responBody = new String(buffer); responBody = new String(buffer, "UTF-8");

혹시 테스트하다 한글이 깨지는 현상이 발생된다면 인코딩 문제이다. 위와 같이 수정하면 된다.
byte를 String으로 변경할 때 발생할 수 있다.

사용하다 아래와 같은 오류가 발생할 수 있다.

출처 : https://aiopen.etri.re.kr/guide_mrc.php [오류코드]

필자는 413 코드를 보았으며 홈페이지에서 오류코드에 대해 설명을 해주니 크게 당황하지 않아도 된다.

반응형

관련글 더보기

댓글 영역

>