위키피디아 데이터 활용에 대한 포스팅 #2

디비피디아는 위키피디아로부터 추출된 데이터입니다. 따라서 디비피디아를 사용하지 않고 위키피디아 만으로 처리 할 수있는 일이 많이 있습니다.  이 포스트는 과연 위키피디아 데이터를 어떻게 구하고 사용할까? 라는 주제로 포스팅을 시작해 보겠습니다. (이 글은 주관적인 생각이 첨부 되어 있으니 양해 바랍니다. :) )

위키피디아 데이터 어디에서 구할까?

 

위키피디아 데이터의 접근방법은 크게 3 종류로 나눌 수 있습니다.

  •   홈페이지 HTML문서를 프로그램으로 읽기
  •   위키피디아 API를 이용하기 http://www.mediawiki.org/wiki/API
  •   Dump 파일을 이용하기

위 3가지 방법에는 각각 장단점이 있습니다.

1.  홈페이지HTML 문서 읽기

장점은 정해진 틀 없이 Java나 PHP등 프로그래밍 언어를 이용해 HTML문서를 크로울링 하는 방식으로 이용 가능하며 실시간으로 업데이트 되는 위키피디아 문서를 이용 및 가공 가능합니다. 단점으로는 각 문서마다 http커넥션이 연결되므로 시간이 오래걸리고 작업에 리소스가 많이 소모됩니다.

사용 예) 자바 HttpURLConnection과 같은 프로그램을 이용해 HTML문서 자체를 가져와 필요한 부분 추출.

2. 위키피디아 API를 이용하기

위키피디아에서는 위키피디아 문서 검색, 위키피디아 wiki 아티클 웹페이지(http://ko.wikipedia.org/wiki/안철수) 등과 같은 데이터를 API로 제공합니다. 해당 정보는 URL을 이용해 매우 쉽게 접근 가능하게 만들었는데요, 간단한 예제를 들어보겠습니다.

http://ko.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&rvsection=0&titles=%EC%95%88%EC%B2%A0%EC%88%98

%EC%95%88%EC%B2%A0%EC%88%98 (<- 이 부분은 안철수를 URL 엔코딩 한 부분)

참 쉽지용? 위의 URL의 맨 뒷부분 “%EC~” 부분에 다른 단어를 넣으면 해당 단어의 위키피디아 데이터를 가져올 수 있습니다. 따라서 위의 예제처럼 “안철수”씨의 직업, 사진, 주소, 출생지 등의 정보를 가져올 수 있겠죠? 우리가 지난시간에 이야기했던 것과 비슷한 “안철수의 직업은?”이란 지식을 컴퓨터에게 주입할 수 있습니다. 하!지!만! 이렇게 하나씩 사람이 직접 지식을 찾아 컴퓨터에게 알려주면 의미가 없겠죠?

3. 위키피디아 Dump 이용하기

위키피디아에선 주기적으로 위키피디아의 모든 데이터를 하나의 파일에 저장하여 배포합니다. 예를 들면, 위의 안철수 데이터와 같은 데이터를 안철수 뿐만 아니라 한국, 세종대왕 등 모든 article을 말이죠. 이 파일을 읽어서 컴퓨터에게 지식을 주입하면 매우 유용하겠죠? 예를 들면, “안철수의 생일은?”, “한국의 홈페이지는?”과 같은 간단한 질문에 대한 대답이 가능해 집니다. 그러면 Dump파일을 어디에서 구하고 어떻게 사용하는지 살펴보겠습니다.

http://dumps.wikimedia.org/kowiki/

위 그림에서 보시는 것처럼 각 날짜마다 위키피디아 덤프를 다운로드 받을 수 있습니다. 특정 날짜에 들어가 덤프 파일을 살펴보면, article 제목을 모아둔 것부터 article 전체를 모아둔 것, article 개요만 모아둔 것 등 여러 종류의 덤프를 받을 수 있습니다. 덤프는 구조화된 데이터인 XML형식이라 컴퓨터 프로그래밍을 할 줄 안다면 어렵지 않게 사용할 수 있습니다.

어플리케이션

 

자, 그렇다면 이처럼 위키피디아 데이터를 활용해 만든 어플리케이션을 살펴볼까요?

출처 : http://blog.naver.com/frisbeeblog?Redirect=Log&logNo=186632810

위키피디아를 이용해 APP을 만들었군요. 왼쪽 그림은 검색어를 “조지 부시”로 했을 경우 관련된 link들을 연결해 보여주는 화면입니다. 뿐만 아니라 검색 노드들을 여러 개로 설정하고 link를 볼 수있으며 클릭 시 article을 세부 정보 확인도 가능합니다. 그리고 오른쪽 화면은 “2001년” article 관련된 유투브 영상을 링크했군요.

이처럼 위키피디아는 매우 중요한 지식 정보 베이스로 자리잡았습니다. 하지만 위키피디아를 그냥 이용하기엔 위처럼 덤프를 활용하던지 프로그래밍을 만들어 크로울링을 하는 등 추가 가공 작업을 해야 합니다. 이리하여 더 손쉽고 구조화되고 확장이 가능한 강력한 DBpedia가 탄생하게 되었습니다.

다음 시간에는 DBpedia에 관해 포스팅을 하겠습니다. DBpedia를 이용하면 정말 굉장한 어플리케이션들을 만들 수 있습니다. 다음 포스트에 이와 관련된 내용을 올리도록 하지요.

Leave a Comment

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.