WWW 브라우저용 영한 사전 기능 개발

김용수
데이콤종합연구소 전자지불 프로토콜 연구팀
yongsoo@madang.dacom.co.kr

Abstract:
최근 WWW의 활용으로 인터넷을 통해 접할 수 있는 정보의 양과 종류는 급증하였으나, 대부분의 데이터가 영어로 만들어져 있어 정보의 신속한 활용과 대중화에 걸림돌이 되고 있다. 이 논문은 이러한 문제점을 조금이나마 해결하기 위하여 WWW 브라우저용 영한 사전 기능의 구현에 대하여 다루고 있다.

Keywords:
WWW, Browser, Dictionary, CCL, W3C Reference Library

목차

1. 서론
2. 전체 시스템 동작 구조
3. 브라우저 구조
4. 단어 추출 및 EL(Element List) 포맷
5. 향후 발전 방향

1. 서론

최근 인터넷 사용량의 급증은 물리적, 사회적인 국경을 허물고 전세계를 하나의 사회로 만 들어 가고 있다. 이러한 조류는 한국에서 기타 선진국과 동일한 입장에서 다양한 종류의, 풍부한 정보를, 신속하게 찾아 볼 수 있다는 점에서 국제화된 정보사회의 한 단면이라 할 수 있다. 하지만 우리가 인터넷으로 접할 수 있는 많은 정보가 영어로 만들어져 있어 정보 활용에 걸림돌이 되고 있다. 특히 과거에는 인터넷이 연구소나 대학교 중심이었으나 최근 이러한 연령과 직업의 구분이 차차 없어지고 있고, 앞으로 이러한 경향이 더욱 가속될 것 을 고려할 때 '언어의 문제'는 더욱 심각해질 것이다.

이러한 문제의 해결책은 여러 가지 있을 수 있으나, 본 논문은 이 중에서 WWW 브라우저 용 영한 사전 기능의 구현에 대하여 기술한다. 기술한 순서는 먼저 2장에서는 전체 시스템 의 동작 구조를 다루며, 이중 브라우저에 추가될 기능에 대해 정리한다. 3장에서는 영한사 전 기능 구현과 관련된 모듈을 중심으로 브라우저의 개략적인 구조에 대해 설명한다. 4장 에서는 HTML을 저장하기 위한 자료구조 및 이 자료구조에서의 단어추출에 대하여, 5장에 서 향후 발전 방향에 대해 기술한다.

2. 전체 시스템 동작 구조

전체 시스템은 한글 윈도우 95 또는 한글 윈도우 3.1에서 동작되어지며, WWW 브라우 저와 영한 사전 프로그램으로 구성된다. 브라우저와 영한 사전은 각각 별개의 프로그램이 며, 두 구성 요소 간의 정보 교환은 윈도우 시스템의 클립보드나 메시지 전달에 의해 이루 어진다. 브라우저는 기본적인 기능 이외에 영한사전을 위한 사용자와의 통로가 되어, 영한 사전의 실행 및 기타 제어를 담당한다. 영한사전은 사용자가 아닌 브라우저의 제어를 받아 변환된 단어를 화면에 출력한다. 따라서 이 두 개의 프로그램은 사용자에게 마치 하나의 프로그램으로 여겨진다.

영한 단어 변환은 사용자가 단어를 선택함으로써 시작되어진다 (A). 단어가 선택되어지 면 브라우저는 선택된 단어를 클립보드에 복사한다 (B). 그리고 영한사전 프로그램에게 단 어가 선택되었음을 제어메시지를 통해 알린다 (C). 영한사전 프로그램은 클립보드로부터 단 어를 복사해 와서 (D), 영어 단어에 해당하는 한글 설명을 자체 DB를 검색하여 화면에 출 력한다 (E). [그림 1]에 전체 시스템의 동작 구조도가 표시되어 있다.


[그림 1] 전체 시스템 동작 구조도

각 단계의 동작을 자세히 알아보면 다음과 같다.

단계 A 단어선택
단계 A에서 사용자는 마우스를 이용하여 단어를 선택한다. 단어의 선택은 팝업메뉴 또는 더블클릭을 이용한다. '팝업메뉴를 이용하는 방법'은 영한사전에서 찾고자 하는 단어 위에 커서를 위치시키고 마우스의 우측 버튼을 누르면 생성되는 팝업메뉴의 '단어찾기 메 뉴'를 선택하는 방법이다. 기존의 대부분의 브라우저는 이미 팝업메뉴를 사용하고 있으므로 사용자의 혼란을 줄일 수 있다. 또 다른 방법으로 '더블클릭을 이용하는 방법'이 있다. 이 방법은 찾으려는 단어를 더블클릭하는 방법인데, 일반적인 워드프로세서에서 단어의 선택 을 위해 이 방법을 많이 사용하므로 사용자에게 좀 더 편리한 방법일 수 있으나 하이퍼링 크가 연결된 단어에서는 사용할 수 없는 단점이 있다.

단계 B 단어복사 (클립보드로)
사용자가 단어를 선택하면 브라우저는 HTML 문서에서 선택된 단어를 추출한다. 그리고 클 립보드로 단어를 텍스트 포맷으로 복사한다.

단어 C 제어메시지 전달
브라우저는 단어를 클립보드로 복사한 다음 한영사전이 이미 윈도우에 실행 중인지 아닌지 를 확인한다. 이미 실행되어 있으면 제어메시지를 한영사전에게 전달한다. 제어메시지의 종 류는 클립보드의 단어를 영한 변환하라는 한가지이면 충분하다. 그러나 한영사전이 실행되 어 있지 않으면 브라우저는 한영사전을 실행시킨다. 이때는 제어메시지를 사용하지 않고 한영사전이 자동으로 클립보드를 단어를 가져와서 변환한다.

단계 D 단어복사 (클립보드에서)
브라우저의 제어메시지를 받은 한영사전은 클립보드로부터 단어를 가져온다.

단계 E 화면출력
가져온 단어에 해당하는 사전의 내용을 자신의 DB를 검색하여 찾아낸 후 이를 대화상자의 형태로 화면에 출력하거나 대화상자의 내용을 갱신한다. 이것으로 영한단어 변환의 한 사 이클이 종료된다.
만약 클립보드에서 가져온 단어가 한글 단어이고 영한사전 프로그램이 한영사전 기능을 가 지고 있는 경우, 동일한 구조에서 한글 단어를 영어 단어로 변환하는 한영사전 기능 또한 사용할 수 있다.

전술한 5단계 중 단계 A, B, C는 브라우저에 관련된 부분인데, 이를 구현하기 위해서는 소 스 수준의 수정이 필요하다. 단계 A, B, C의 동작을 흐름도의 형태로 표시하면 [그림 2]와 같다. 결국 [그림 2]는 사용자가 발생시킨 단어선택 이벤트에 대한 처리 모듈(Event Handler) 이다. 단어선택 이벤트 처리에 대해 알아보기 전에, 이벤트 처리에 관련된 모듈을 중심으로 브라우저의 개략적인 구조에 대해 알아본다.


[그림 2] 브라우저의 단어선택 이벤트 처리 흐름도

3. 브라우저 구조

인터넷상에는 수많은 종류의 WWW 브라우저가 존재하지만 대부분의 브라우저가 CERN에 서 제작되어 1992년에 버전 1.0이 발표된 CCL(Common Code Library)에 그 뿌리를 두고 있 다고 할 수 있다. CCL은 W3 컨소시엄(http://www.w3.org/)에 의해 W3C Reference Library(http://www.w3.org/hypertext/WWW/Library/)라는 이름으로 계속 발전되고 있으며, 최신 버전은 1995년 12월에 발표된 4.0이다. 이 라이브러리는 WWW프로토콜을 수용하는 응용 프로그램(브라우저, 서버, 로봇 등)을 작성하기 위해 필요한 대부분의 기능들을 가지고 있고, 그 외에도 Ftp, Gopher 등의 프로토콜을 위한 기능도 가지고 있다. W3C에서는 이 라이브러 리를 이용하여 간단하게 라인모드 브라우저(http://www.w3.org/pub/WWW/LineMode/)를 구현하 여 라이브러리의 기능을 검증하였다. 본 장에서는 이 W3C Reference Library를 모델로 하여 브라우저의 기본 구조[1]를 설명하고 어느 모듈이 한영사전 기능 구현과 관련되는지 알아본 다.

라이브러리의 중심 개념은 응용프로그램(이 라이브러리를 사용하는)이 URI(URL)를 요청 (Request)하고 라이브러리는 해당 내용이 서버/프록시/게이트웨이/로칼디스크/케쉬등에 있든 지에 상관없이 해당 요구를 충족시키는 가장 효율적인 요청/응답 구조를 만드는 것이다. 이 를 위해 브라우저는 Access Manager, Protocol Manager, Format Manager, File Cache Manager, Error Manager, Event Manager 등의 모듈로 구성되어 있다[그림 3]. [그림 3]에서 가는 선(적색)은 제 어흐름을, 굵은 선(청색)은 자료흐름을, 번개화살표는 라이브러리로부터 처리되는 이벤트의 결과 제어흐름이다. 응용프로그램(Application)은 브라우저, 서버 등이 될 수 있는데 여기서 는 브라우저로 생각하기로 한다. 각 모듈에 대해 간략히 설명하면 다음과 같다.


[그림 3] W3C Reference Library의 블럭도

Access Manager : Access Managers는 응용프로그램이 자료를 요청하기 위한 관문역할을 하는 모듈이다. Access Manager는 응용프로그램이 요청하는 각종 서비스를 처리하는 방 법(method)들로 구성되어 있다. 예를 들면 URI를 가져오고(Get), URI를 포스팅하고 (Post), URI를 검색(Search)한다. 또한 Access Manager는 지정된 URI를 캐쉬에 있는 것 을 사용할 것인지, 네트웍을 통해 가져올 것인지를 결정한다.

Protocol Manager : Protocol Manager는 요청된 자료가 메모리와 로칼파일에 없을 경우 Access Manager에 의해 호출된다. Protocol Manager는 HTTP, NNTP, FTP, Gopher, WAIS, Telnet 그리고 로칼파일 등의 여러 가지 프로토콜을 처리하는 모듈로 구성되어 있다. 자료가 도착하면 그 자료를 Format Manager에게 넘겨준다.

Format Manager : Format Manager는 네트웍으로부터 응용프로그램으로 혹은 그 반대 방 향으로 자료스트림의 흐름을 전달하는 역할을 한다. 이 관리자는 지정된 포맷변환 법 칙들로 요청된 자료포맷변환 혹은 파싱의 일을 하고, 이런 변환이 효율적으로 이루어 지도록 간단한 알고리즘을 사용한다.

File Cache Manager : File Cache Manager는 자료를 네트웍에서 가져오면 이 자료를 로칼에 저장하는 일을 한다. 캐쉬는 URL을 근거로 자료를 구분 저장한다.

Error Manager : 이 모듈은 현재 상태와 상대 서버와의 통신 동안 일어나는 모든 에러에 대한 정보를 관리한다.

Event Manager : 라이브러리는 플랫폼에 대해 독립적인 쓰레드를 제공하고 있는데, Event Manager는 어느 쓰레드가 현재 활성 상태로 동작할지를 관리한다. 이 모듈에 의해 DECthread나 POSIX 쓰레드를 제공하지 않는 시스템에서도 쓰레드의 장점(전송 도중의 키보드 처리 등)을 활용할 수 있다.

Application Event Handler : 이 모듈은 각각의 이벤트에 대한 처리 루틴의 집합이다. 이벤 트는 사용자의 키보드 조작, 마우스 조작 등이 있을 수 있는데, 영한번역을 위해서는 이 모듈에 더블클릭이나 팝업메뉴 선택 이벤트에 대한 처리 루틴이 추가 되어야 한다.

Request Termination Handler : 이 모듈은 URI 요구의 마지막 단계로 히스토리 등을 관리 한다.

이상으로 W3C Reference Library 각 모듈의 간략한 개요에 대하여 알아보았다. 영한사전 기 능을 위해서는 Application Event Handler에 기능이 추가되는데, 이 처리 루틴은 단어를 찾아 내기 위해서 브라우저 내부의 자료구조를 검색하게 된다. W3C Reference Library 사용되는 주 요 자료 구조는 [그림 4]에 정사각형의 형태로 표시되어 있다.


[그림 4] W3C Reference Library의 주요 자료구조

각 자료구조가 담고 있는 내용은 다음과 같다.

R (HTRequest) : 응용프로그램에서 발생하는 URI 요청을 처리하는데 필요한 정보

A (HTAnchor) : 하이퍼링크에 관한 정보

N (HTNetInfo) : 소켓 fd, I/O를 위한 버퍼 등 네트웍에서 읽거나 쓰는데 필요한 모든 정보

C (HTCacheInfo) : 캐쉬와 관련된 정보. 즉 캐쉬에서 몇 번이나 불려졌나, 내용의 타입, 크기.

H (HyperDoc) : 응용프로그램이 자료를 화면에 출력하기 위해 필요한 정보. 응용 프로그 램은 화면 출력시 이 자료구조만을 이용하고, 따라서 마우스로 지정된 위치를 기준으 로 단어를 찾아내기 위해서는 이 자료구조를 검색해야 한다. HyperDoc자료구조는 다른 것들과는 다르게 라이브러리에서는 선언(declared)만 되고 응용프로그램에서 정의된다.

E (HTErrorInfo) : 프로토콜 처리 중에 발생하는 에러에 대한 정보

S (HTStream) : 네트웍에서 데이터를 받아들이거나, 네트웍으로 자료를 보낼 때 사용하 는 자료구조.

이 중에서 영한단어변환 이벤트 핸들러가 사용하는 자료구조는 응용프로그램이 관리하는 H(HyperDoc)이다. HyperDoc은 각 단어의 출력 위치 등에 대한 정보를 가지고 있으므로 마 우스의 위치로부터 지정된 단어를 찾아낼 수 있다. HyperDoc 자료구조는 다른 자료구조와는 다르게 응용프로그램의 종류에 따라 달라지는데 W3C 라인모드 브라우저는 텍스트 중심의 브라우저이므로 HyperDoc의 구조가 단순하다. 예를 들면 <B>, <EM>과 같은 대부분의 문자 속성 태그는 무시되고, <HR> 태그는 "=================" 문자열로 치환되다. 그러나 모 자익이나 넷스케입같은 GUI 브라우저는 이 HyperDoc의 구조가 상대적으로 복잡해진다.

4. 단어 추출 및 EL(Element List) 포맷

이 장에서는 GUI 브라우저에서 사용되는 HyperDoc 자료구조의 일종인 EL(Element List) 포 맷과 EL포맷에서의 단어추출에 대하여 알아본다. 단어 선택 시 사용자에 의해 마우스로 지적되는 것은 실제로는 단어가 아니고 단어에 포함된 문자 중 임의의 문자이다. 그러므로 브라우저는 선택된 단어를 추출하려면, 선택된 문자를 기준으로 HTML문서에서 단어의 시 작 위치와 단어의 마지막 위치를 검색하여야 한다[그림 5].


[그림 5] 선택된 단어 추출

그러나 브라우저는 WWW 서버로부터 전달받은 HTML 문서를 메모리에 그대로 저장하는 것이 아니고, 화면출력 등을 효율적으로 처리할 수 있는 자료 구조로 Format Manager에서 변환하여 HyperDoc의 형태로 저장한다. 그러므로 브라우저는 단어를 추출하기 위해 이 HyperDoc 자료구조를 검색하여야 한다. HyperDoc 자료구조는 브라우저에 따라 여러 가지 형태가 가능한데 여기서는 GUI 브라우저에 적합한 EL(Element List) 포맷에 대해 알아 본다. EL 포맷은 한 개의 HTML 문서를 여러 개의 Element의 집합으로 표현한다. 각각의 Element 는 종류, 속성, 화면 출력에 출력될 문자열, 화면에 출력된 문자열의 위치, 문자열, 이전 Element의 위치, 다음 Element의 위치 등의 데이터를 가지고 있다. Element의 종류에는 TEXT, IMAGE, VERTICALTAB, HR, NEWLINE, TAB 등이 있으며, Element 속성은 글자 크기, 색상 등을 말한다.


[그림 6] 포맷 변환

[그림 6]와 같이 변환기(Format Manager)를 통하면서 HTML문서는 여러 개의 Element로 분 리되는데 이때 적용되는 분리 규칙은 다음과 같다.

O 종류가 다르면 다른 Element로 분리한다.
O 동일 종류의 Element라도 속성이 틀리면 다른 Element로 분리한다.
O 동일 종류, 동일 속성을 가진 Element라도 화면 출력 시 다른 줄에 출력되면 다른 Element로 분리한다.

이 분리 규칙에 의하면 한 단어라도 속성이 틀리면 서로 다른 속성을 가지면 다른 Element 가 된다. 즉 다음과 같은 HTML은

<FONT SIZE=+3>A</FONT>NNOUNCED

'A'와 'NNOUNCED'두 개의 Element로 분리된다. 즉 사용자가 'O'를 선택하였다면 단어의 시작 위치 'A' 를 찾기 위해서 이전 Element를 계속 추적하여야 한다[그림 7]. [그림 7]와 같은 흐름도는 단어의 끝 위치를 찾을 때도 동일하게 적용된다. 단어의 시작 위치와 마지 막 위치를 찾아 내면 EL 포맷에서 전체 단어를 추출할 수 있다.


[그림 7] 단어의 시작 위치 검색 흐름도

5. 향후 발전 방향

지금까지 브라우저에 한영사전을 인터페이스하기 위한 전체 구조와 이를 위해 브라우저가 수정되어야 할 부분 등에 관한 내용 등을 기술하였다. 전술한 내용은 모두 Spyglass Mosaic 2.1(http://www.spyglass.com/)을 이용하여 구현되었으며, 구현된 영한사전 기능을 가진 한글 브라우저가 곧 상품화될 예정이다. 서론에 기술하였던 것과 같이 한국적 상황에 적합한 브 라우저가 만들어지려면 앞으로도 많은 노력이 필요할 것이다. 영한사전 프로그램만 보더라 도 사전의 내용이 아직 부실한 면이 있다. 단어에 대한 설명이 부족하여 실제 사전을 다시 찾아보지 않도록, 각 단어의 설명이 풍부한 사전이 나올 수 있을 것이다. 또한 영한, 한영 사전뿐 아니라 일한, 한일, 중한 사전 등도 개발이 가능할 것이다.

또한 일정 수준 이상의 영한번역 프로그램이 있다면 본 논문에서 기술한 구조를 조금만 더 확장하여 영한번역 프로그램과의 인터페이스도 고려할 수 있을 것이다. 즉 기초적인 수준 의 영한번역 시스템으로 선택된 한 개의 문장을 번역하는 시스템, 또는 좀 더 발전된 형태 의 시스템으로 전송받은 HTML 문서 전체를 번역하여 브라우저에 출력하는 시스템 또한 개발 가능할 것이다.

Reference

[1] Henrik Frystyk, "Libwww Architecture", W3C, July 1995