구문분석과 문자코드 처리
구문 분석이란 페이지의 문의를 고려해 프로그램 처리를 가능하게 하기 위해서 문법을 기초로 문장을 분석하는 것입니다. 또한 구문 분석 전에 그 웹페이지의 기술에 사용된 문자 코드를 확정시키는 작업도 이루어집니다.
HTML문법에 근거한 문장구조 이해
구문 분석이란 문법에 근거하여 문장을 분석하는 것입니다. 구문 해석에 따라서 각각의 단어가 어떤 의미를 갖고 어떤 연결을 가지고 있는지에 대해 지표화할 수 있기 때문에 컴퓨터에서는 알기 어려운 문장의 “문의”를 프로그램 처리에 쉬운 상태로 만들 수 있습니다. 웹페이지에 대한 구문 분석에서는 HTML Parser가 HTML문법에 근거한 페이지의 문장 구조를 분석합니다. HTML은 텍스트에 의미를 붙이는 Markup 언어로 기술한 HTML 소스의 각 요소가 가지고 있는 의미를 분석하는 것으로 페이지에서 각각의 텍스트가 가진 의미 정보를 파악할 수 있습니다. 예를 들면 h요소로 기술된 텍스트는 제목, p요소로 기술된 텍스트는 단락(문장)이라는 형태로 해석해 페이지 전체의 텍스트에 부여된 의미를 이해할 수 있습니다.
구문 해석에는 정확한 HTML코딩이 필요하다
HTML Parser는 시각적인 웹브라우저의 표시와는 달리 HTML의 문법만을 근거로 문서의 내용을 분석합니다. 때문에 인덱서가 바른 정보를 수집하게 하기 위해서는 시각적인 웹브라우저의 정상 표시 뿐아니라 각 요소가 가지는 역할에 적합한 요소를 이용했는지 틀림없는 코딩이 중요합니다. 예를 들어, 특정 요소에 둘러쌓인 문자를 스타일시트로 크게 보이거나 색을 바꾸거나 해도 HTML Parser는 거기에 링크 된 정보가 특별한 의미를 가지는 것으로 해석하지 않습니다. 또한 HTML 요소를 잘못 사용하거나 문법 상 오류가 있는 경우, HTML Parser는 제대로 내용을 해석할 수 없습니다. 오류의 심각성에 따라 인덱서의 처리에 문제가 발생할 수 있으므로 주의가 필요합니다.
메타 데이터로부터 정보 얻기
메타 데이터는 원시 데이터에 부여하는 데이터의 요소를 정의하는 정보입니다. body 요소 내에 기술된 비주얼 브라우저에서 시각적으로 표현할 수 있는 정보 이외에도 구문 분석에서 사용하는 정보가 포함되어 있습니다. 예를 들어, 종이 주소록의 상단에 [주소] [이름] [전화 번호]라는 정보는 그 아래에 쓰게되는 개인 데이터에 대한 메타 데이터입니다. 사람은 주소록을 보면 한눈에 [주소] [이름] [전화 번호]임을 유추할 수 있지만, 그러한 처리 능력이 없는 컴퓨터에게 메타 데이터는 데이터를 분류 처리하는 데 있어 중요합니다.
메타 데이터를 근거로 웹페이지를 분석하여 페이지의 내용을 보다 정확하게 반영한 데이터베이스를 만드는 것이 가능하게 됩니다. HTML 문법에서도 내용에 맞는 적절한 메타 데이터를 사용해 웹페이지를 작성하도록 권고하고 있으며, 그를 위한 방법도 준비되어 있습니다.
HTML 문서의 메타 데이터
HTML의 각 요소에 부여되는 속성 값은 요소에 대한 메타 데이터 기능을 하는 것입니다. HTML은 자연어 문장의 문서를 웹페이지로 취급하기 쉽도록 마크를 붙여서 정의한 언어 (Markup Language)입니다. 때문에 어떤 의미에서 HTML 자체가 문서의 문자 정보에 대한 메타 데이터라고 할 수 있을지도 모릅니다.
head 요소에 기술되는 메타 데이터의 예
문서의 저자를 나타내는 메타 정보
<meta name = “author”content = “USERNAME”/>
문서의 키워드를 나타내는 메타 정보
<meta name = “keywords”content = “키워드”/>
문서의 설명문을 나타내는 메타 정보
<meta name = “description”content = “설명문”/>
문서의 문자 코드와 파일 타입을 나타내는 메타 정보
<meta http-equiv = “Content-Type”content = “text / html; charset = Shift_JIS”/>
body 요소에 기술되는 메타 데이터의 예
title 속성
요소에 보조적인 설명을 추가합니다.
cite 속성
인용 요소 (blockquote, q) 및 ins / del 요소에서 출신과 변경 이유를 나타내는 문서의 URL를 기술합니다.
lang 속성
그 요소를 기술하고 있는 자연 언어의 종류를 나타냅니다.
문자정보 취급 이전 처리로써 문자코드 처리
프로그램이 문자 정보를 다루기 위해서는 전자 파일에서 다룰 수 있는 다양한 문자 코드 중에서 그 페이지의 설명에 사용되고 있는 것을 확정해 둘 필요가 있습니다. 문자 코드는 언어마다 다르고 하나의 언어라도 다양한 규격이 있습니다. 예를 들어 일본어를 취급 할 수 있는 문자 코드로는 JIS (Shift_JIS), EUC (extensive unix code) UTF-8 (유니코드)의 4 종류의 규격이 있습니다. 그 문자 코드들을 확정하는 처리를 페이지 분석 전에 해두는 것으로 그 다음의 일본어 처리 작업을 확실하게 진행할 수 있습니다.
meta 요소에 의한 문자 코드 지정
HTML에서 head 요소내의 meta 요소에서 문자 코드를 지정할 수 있습니다. 인덱서는 이 정보를 단서로 이후 기술되는 문서의 문자 코드를 식별합니다. JIS (Shift_JIS), EUC_JP (extensive unix code) UTF-8 (유니코드)의 지정 방법은 각각 다음과 같이 됩니다.
JIS의 지정
<meta http-equiv = “Content-Type”content = “text / html; charset = ISO-2022-JP”/>
Shift_JIS 지정
<meta http-equiv = “Content-Type”content = “text / html; charset = Shift_JIS”/>
EUC_JP 지정
<meta http-equiv = “Content-Type”content = “text / html; charset = EUC-JP”/>
UTF-8 지정
<meta http-equiv = “Content-Type”content = “text / html; charset = UTF-8″/>
문자 코드 자동인식 처리
인덱서에 따라서는 meta 요소에 의해 문자 코드가 지정되어 있지 않더라도 문자 코드를 자동으로 인식하는 경우가 있습니다. 예를 들어, 일본어에서는 각각의 각 문자코드 계 (JIS (Shift_JIS), EUC_JP)에서 사용하는 부호의 영역에 중복되지 않는 부분이 있는 것을 이용하여 문자 코드의 자동인식을 하는 것이 가능합니다. 또한 .htaccess 및 httpd.conf에 AddType 지시자를 설정하고 서버 사이드에서 출력하는 http 헤더 정보에 미리 규정 값을 부여하여 크롤러와 인덱서를 포함한 UA 문자 코드를 전할 수 있습니다. 예로는 다음 한 줄을 .htaccess 및 httpd.conf에 추가합니다. 아래는 확장자 .html 파일에 대한 요청에는 문자 코드 Shift_JIS로 응답하는 기술입니다.
AddType “text / html; charset = Shift_JIS”.html
그러나 문자 코드 자동 인식은 문서의 상태에 따라 제대로 안되는 경우도 있습니다. 역시 meta 요소에 의한 문자 코드 지정을 확실하게 하는 것이 중요합니다.