ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 표준국어대사전 사전 데이터 만들기 작업후기
    카테고리 없음 2015. 3. 18. 17:09

    안드로이드용 사전 앱, 컬러딕트에 사용할 사전 데이터를 만들었다.

    참고한 사이트는...

     

    차가운 겨울님, 표준국어대사전 클리핑하다.

    http://pleiades237.tistory.com/205

     

    도아 :: iPod Touch 강좌 52. 사전 만들기 2. 클리핑

    http://offree.net/2738

     

    PHP 소스코드는 도아님을 참고했고, 전체적인 절차는 차가운 겨울님의 포스트에 있는 매뉴얼을 참고했다. 프로그래머가 아니라면 굉장히 어려운 작업일 수 있겠고, 프로그래머라면 손이 많이 가는 귀찮은 작업이라 할 수 있겠다... 일단 도아님과 차가운 겨울님의 매뉴얼을 정독하는 것을 추천. 본인은 거의 그대로 따랐으나 텍스트 에디터는 Notepad++ 을 사용하였다. 사용한 글꼴은 '새굴림'

     

    도아님의 소스를 참고하여, 소스코드를 거의 새롭게 작성했다. 작동하는 방식을 이해하고, 나만의 지식으로 만들기 위해서는 직접 손으로 짜 봐야할 필요가 있었다.

    일단, 커맨드 라인에서 실행하도록 했다. 함수/공식을 설명하는 글 내부에는 그림 파일을 이용해서 함수를 표시하는데, 그것도 저장하여 표시할 수 있도록 했다.

     

    예)

    델타결선 http://stdweb2.korean.go.kr/search/View.jsp?idx=85162

     

    방법)

    src='/formula.jsp?latex=XXXX' 인 부분을 각 idx 번호와 연번을 이용한 파일이름 (src="123456_0.png") 으로 바꾸고 원본 주소는 png 형식으로 저장해 두면 된다.

     

    도아님 소스에서 추가/변경점

    • 함수 그림을 표시할 수 있게 (위 설명...)
    • 필요없는 태그를 없애는 과정에서 (strip_tags) <b>태그는 남겨두었다.
    • 그림 파일의 크기가 클 경우 폭을 줄여서 표시하고 폭이 좁은 그림은 그냥 그대로 표시할 수 있도록 스타일을 추가했다. (max-width:100%;height:auto)
    • class 속성을 style 속성으로 문자열 치환할 때, 'class="' => 'style="' 으로 쌍따옴표를 추가하여 다른 관계없는 문자열이 치환되는 것을 방지했다.
    • 스타일시트의 내용을 치환할 때도 'list'를 '"list"'로 쌍따옴표로 묶어서 확실히 하였다.
    • 글꼴 크기와 행간을 모두 없애서 사전 앱에서 설정되는 기본 크기로 표시할 수 있도록 했다. (line-height:1.5;font-size:13px 를 삭제) 활용정보만은 글꼴 크기 0.9em로 약간 작게 표시.
    • 태그 사이에 공백이 있는 경우, '> <', 공백을 지웠다. '><' 적지만 용량 확보...
    • 스타일시트의 마지막 세미콜론은 지웠다. 역시 적지만 용량 확보.
    • 스타일시트의 컬러 지정하는 코드를 6자에서 3자로 줄였다. (#549606 #591 가장 비슷한 색으로...)
    • 공백문자를 나타내는 &nbsp; 을, ' ' 으로 치환하여 용량 확보.
    • 연속된 공백은 공백 한 칸으로 줄여서 용량 확보......

     

    ...... 어떻게든 용량을 줄여보려고 손을 좀 썼다.

     

    클리핑하고 나면 텍스트 파일은 약 316메가, 그림파일은 173메가 정도...

    설명문 내 삽화 수는 8830.

     

    작업 시작하기전 매뉴얼 읽고, 소스코드를 작성하고 테스트 해보는데 3일,

    하루에 표제어 15만개씩 5일이 걸렸다.

    후처리 작업으로 텍스트 파일을 수정하고 테스트 해보는데 2일 정도 걸렸다.

     

    중간에 날린 표제어 수가 약 50만건 정도로... 표준국어대사전 전체를 거의 2번은 긁어댄 것 같다... 오후 3시~6시는 인터넷 회선이 느릴 시간대여서 자주 끊기고 데이터도 많이 날려 먹었다. 밤에 안정적으로 긁어오는 것이 좋겠다.

     

    사전 데이터는 다른 사이트와 마찬가지로 저작권 문제로 공개는 하지 않는다.

    제작에 관한 소스코드 및 매뉴얼을 공개해 주신,

    도아님과 차가운 겨울님께 감사드린다.

     

    012345

     

    #

    2015년 3월 17일을 기준, 표제어 수는 511207.

    한 1/4은 북한어같은 느낌으로 북한어에 대한 설명이 굉장히 많았다. 표준조선어대사전이라고 해도 손색이 없을 정도다. 그리고 중복되는 설명이 많은데, 예로, '계산'이라는 표제어와 '계산하다'라는 표제어가 따로 있다. '계산되다'도 따로 설명이 있다. 물론 '하다', '되다' 설명도 따로 있다. 표제어 수에 거품이 많은 것 같았다.

     

    #

    거의 백과사전에 가까운 표제어 수와 삽화가 곁들여진 설명으로, 일본의 고지엔을 생각나게 한다. 교양있는 한국인이 일생을 살면서 한 번은 들어볼 만한 단어들로 꽉 차있다. 반대로, 대개는 처음들어보는 말이 많았다. 각종 인명, 방언, 학술용어, 전문용어 등...

     

    #

    구글 플레이 스토어에서 판매되고 있는 표준국어대사전은, 삽화가 없는 것 같다...

    https://play.google.com/store/apps/details?id=com.diotek.diodict3.phone.btoc.adddict.nat.korean

    스샷에 '호랑이'가 예제로 실려 있는데, 사진이 없다.

     

    #

    골든딕트에서는 그림을 표시할 때, 절대경로를 사용하는 탓에 그림이 표시되지 않는다. 폴리나리(폴리딕트)에서는 스타일 시트가 먹지 않아서, 덜 예쁘게 표시된다. 특히 관용구/속담 아이콘이 표시되지 않는다. 자체 스타일시트가 있고 다른 스타일 시트는 무시하는 듯...

    이 사전 데이터는 컬러딕트용으로만 사용할 수 있다.

     

    #

    Simple HTML DOM Parser의 거동이 약간 불안정하고, 복잡한 태그의 경우 정확히 해석하지 못하는 점이 있어서, PHP용 DOM 파서를 더 찾아보니 많이 나오던데, 요즘은 Goutte (구뜨, 프랑스어, 물방울) https://github.com/FriendsOfPHP/Goutte 를 많이 쓰는 듯 싶다. 실행속도도 빠르고, 메모리도 적게 먹고, 태그 분석도 정확하게 하는가 보다... 사용법이 좀 까다로운듯. 사전 데이터를 다 만들고 나서야 알았다. 다음 버전에서는 Goutte를 사용해 볼까 한다.

     

    #

    웹사이트를 긁어오는 방법을 외국에서는 스크레이핑 scpraping 크롤링 crawling 이라고 하는데, 클리핑 clipping 이라는 단어는 한국에서 처음 들었다. 일본에서 일할 때는 스크레이핑이라고 했었다...

     

Designed by Tistory.