[공개용 SW 개발] 네x버 맞춤법검사기 파싱 테스트

류명운

·

2016. 8. 30. 23:29

반응형

[공개용 SW 개발] 네x버 맞춤법검사기 파싱 테스트



 

 



블로그를 관리하다보면 맞춤법검사를 해야할 경우 많아서... 자바 기반 파싱 공부를 하면서 한번 만들어본 네x버 맞춤법검사기 파싱 페이지입니다.


* 저작권은 네이버(http://www.naver.com)에 있습니다. 공개되지 않은 API이므로 개인의 불법사용에 따른 어떠한 제재도 본 블로그에서 책임지지 않습니다. 파싱 공부용으로만 참고하시기 바랍니다. 불법적으로 사용하시면 아마 네x버 서비스 모니터링 시스템 측에서 요청 IP에 따른 비정상 요청(정상적인 요청의 경우보다 특정 시간 안에 높은 요청 횟수를 보이는 등의 현상)으로 걸리실 겁니다(?). 


아래 개발환경 및 패키지구조 그리고 소스코드를 첨부합니다. 참고하시기 바랍니다.



개발환경

  • 개발언어 : JSP, JAVA
  • 서버 : Tomcat (7)
  • 개발도구 : 이클립스 (mars), JDK (1.6)


패키지구조



java source code(NaverWorkCheckParsing.java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class NaverWorkCheckParsing {
	
	public String parsing(String txt) {
		String result = null;
		try {
			String param = encodeURIComponent(txt); //GET 방식으로 전달된 값(encodeURIComponent함수 안에서 인코딩 진행)
			String line;
			URL url = new URL(
					"https://m.search.naver.com/p/csearch/dcontent/spellchecker.nhn?_callback=window.__jindo2_callback._spellingCheck_0&q="+param);
			BufferedReader bin = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
			//네이버 맞춤법검사기에 request하여 얻은 response값 line에 저장
			while ((line = bin.readLine()) != null) result += line;
			bin.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		//필요한 부분만 파싱
		result = result.substring(result.indexOf("\"html\":")+8, result.length()-6);
		return result;
	}
	
	//url parameter 객체 인코딩을 위한 함수
	public static String encodeURIComponent(String s) {
		String result = null;
		try {
			result = URLEncoder.encode(s, "UTF-8").replaceAll("\\+", "%20").replaceAll("\\%21", "!")
					.replaceAll("\\%27", "'").replaceAll("\\%28", "(").replaceAll("\\%29", ")")
					.replaceAll("\\%7E", "~");
		}
		catch (UnsupportedEncodingException e) {
			result = s;
		}
		return result;
	}
	
}



jsp source code(parsingTest.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" import="Parsing.NaverWorkCheckParsing"%>
	
<style>
	.re_green{ color:green;}
	.re_red{ color:red;}
	.re_purple{	color:purple;}
	
	#result{
		width:400px;
		height:300px;
		border:1px solid gray;
		overflow:auto; 
	}
</style>

<h3>네이버 맞춤법검사기 파싱 테스트 </h3>
<form action="parsingTest.jsp" method="get">
	<textarea id="txt" placeholder="맞춤법 검사를 원하는 단어나 문장을 직접 입력 또는 붙여 넣기 해주세요." name="text"
		rows="4" cols="54"></textarea>
	<br> <br> <input type="submit" value="검사하기">
</form>	<br>
<div id="result"></div>
<span class="re_red">맞춤법</span>
<span class="re_green">띄어쓰기</span>
<span class="re_purple">표준어 의심단어</span>
<h4>* 참고 : 저작권은 네이버(http://www.naver.com)에 있습니다. </h4>
<h4>*      불법사용이 아닌 파싱 공부용으로 참고하시기 바랍니다.</h4>
<%
	String result;
	request.setCharacterEncoding("utf-8");
	if (request.getParameter("text") != null) {

		NaverWorkCheckParsing parsing = new NaverWorkCheckParsing();
		result = parsing.parsing(request.getParameter("text"));
		%>
		<script>
		document.getElementById('txt').value = "<%=request.getParameter("text")%>";
		document.getElementById('result').innerHTML = "<%=result%>";
		</script>
		<%
	} else {
		result = null;
		System.out.println("없음");
	}
%>




+ 공개용 맞춤법 검사기를 찾았습니다. ko-spellchecker는 부산대학교 정보컴퓨터공학부 인공지능연구실과 (주)나라인포테크가 공동으로 만들고 있는 웹 한국어 맞춤법/문법 검사기의 Node.js web binding 입니다. 검사기에 입력한 결과를 분석하여 JSON 형태로 결과를 제공합니다. 아래 URL을 참고하시어 사용하시기 바랍니다.


ko-spellchecker - https://www.npmjs.com/package/ko-spellchecker

반응형