웹크롤러
웹크롤러(web crawler)는 조직적, 자동화된 방법으로 웹(web)을 탐색하는 컴퓨터 프로그램이다.[1]
목차
개요[편집]
웹크롤러는 인터넷 사이트들을 돌아다니며 필요한 정보를 자동 또는 반자동으로 획득하는 것을 말한다.[2] 구글(Google) 검색, 야후!(Yahoo) 검색 등 최상위 검색 결과를 섞어넣는 메타검색 엔진이다. 또한 웹크롤러는 사용자에게 그림, 소리, 동영상, 뉴스, 옐로 페이지, 화이트 페이지의 검색 옵션을 제공한다. 웹크롤러는 인포스페이스의 등록 상표이다. 1994년 4월 20일에 가동에 들어갔으며 워싱턴 대학교의 브라이언 핑커튼(Brian Pinkerton)에 의해 개발되었다. 웹크롤러가 하는 작업을 웹크롤링 혹은 스파이더링이라 부른다. 검색 엔진과 같은 여러 사이트에서는 데이터의 최신 상태 유지를 위해 웹크롤링한다. 웹크롤러는 대체로 방문한 사이트의 모든 페이지의 복사본을 생성하는 데 사용되며, 검색 엔진은 이렇게 생성된 페이지를 보다 빠른 검색을 위해 인덱싱한다. 또한 크롤러는 링크 체크나 HTML 코드 검증과 같은 웹사이트의 자동 유지 관리 작업을 위해 사용되기도 하며, 자동 이메일 수집과 같은 웹 페이지의 특정 형태의 정보를 수집하는 데도 사용된다. 웹크롤러는 봇이나 소프트웨어 에이전트의 한 형태이다. 웹크롤러는 대개 시드(seeds)라고 불리는 URL 리스트에서부터 시작하는데, 페이지의 모든 하이퍼링크를 인식하여 URL 리스트를 갱신한다. 갱신된 URL 리스트는 재귀적으로 다시 방문한다. 웹크롤러는 웹스파이더, 앤트, 오토매틱 인덱서, 웹스커터로도 부를 수 있다. 그 외에 봇(bots), 웜(worms), 웹 로봇(web robot) 등으로도 부른다.[1]
구조[편집]
웹크롤러의 수집기는 다운로더, 저장소, 스케줄러 등 세 모듈로 이루어져 있고 결정적인 모듈은 스케줄러이다. 스케쥴러는 프론티어(frontier)로도 알려져 있는 방문할 URL의 큐를 유지하고, 하나 또는 그 이상의 다운로더를 특정 순서로 큐에서 순서대로 나오는 그 URL에 보내게 된다. 다운로더는 각 URL에 해당하는 내용을 검색해서 구문 분석 후 저장소 모듈에 보내며 나중에 색인화되고 검색하게 된다. 또 저장소 모듈은 해당 페이지에서 검색된 메타데이터를 스케줄러에 제공하게 되는데 메타데이터는 스케줄링 정책을 구동시키는 데 중요한 정보가 된다. 웹크롤러는 마스터(Master)와 슬레이브(Slave) 모델을 따르며 마스터(프론티어), 슬레이브(에이전트), 모니터(Monitor) 세 가지의 컴포넌트로 이루어져 있다. 마스터(프론티어)는 서버 역할을 하며 에이전트가 수집한 URL을 전송받아 관리하고 필터링된 URL을 다시 에이전트로 분배한다. 슬레이브(에이전트)는 프론티어로부터 URL을 전송받아 해당 URL의 HTML를 처리한다. 웹페이지 처리 결과로 다른 웹페이지에 대한 URL 링크와 이미지 등의 리소스 URL 링크를 추출한다. 추출된 모든 URL 링크는 프론티어로 전송한다. 모니터는 프론티어와 에이전트의 동작 상태를 모니터링 하고 제어 기능을 포함한다.
스케줄링은 장기 스케줄링(Long-term Scheduler)과 단기 스케줄링(Short-term Scheduler)로 구분할 수 있다. 장기 스케줄링은 품질과 신선도 평가에 따라 다음 방문할 페이지를 결정한다. 시간 간격은 몇 시간 혹은 며칠이 걸린다. 단기 스케줄링은 공손도 정책 혹은 네트워크 사용 최적화에 따라 페이지를 재배정한다. 시간 간격은 몇 초나 몇 분으로 짧은 편이다. 시간 간격은 수집기에 설정된 대기 시간에 의존한다. 저장소는 세 부분으로 나눠서 리치 텍스트, 링크, 메타데이터로 구분할 수 있다. 중점 수집기는 페이지 분류를 위한 텍스트를 사용하고 내려받기를 위해 URL을 서열화한다. 일반 수집기는 메타데이터와 링크를 사용하여 어떤 페이지를 다음에 내려받을지 결정한다.[3]
작동 방식[편집]
인터넷은 끊임없이 변화하며 확대하고 있다. 인터넷에 얼마나 많은 웹페이지가 있는지 알 수 없으므로, 웹크롤러 봇은 종자, 즉 알려진 URL 목록에서 시작한다. 먼저 해당 URL에서 웹페이지를 크롤링한다. 이 과정에서 다른 URL에 대한 하이퍼 링크를 찾게 되면, 다음으로 크롤링할 페이지 목록에 추가한다. 검색을 위해 색인화해야 할 인터넷 웹페이지의 수는 막대하므로, 이러한 과정은 거의 무한히 이어질 수 있다. 하지만, 웹크롤러는 크롤링할 페이지, 크롤링 순서, 콘텐츠 업데이트를 확인하기 위해 다시 크롤링하는 빈도에 대해 보다 선택적인 정책을 따른다. 대부분의 웹크롤러는 공개된 인터넷 전체를 크롤링하지 않으며, 그렇게 하려고 하지도 않는다. 그 대신, 해당 페이지에 중요한 정보가 포함될 가능성을 나타내는 요소인 해당 페이지를 링크하고 있는 다른 페이지 수, 페이지 방문자 수 등의 요소를 기준으로 먼저 크롤링할 페이지를 결정한다.다른 웹페이지에서 많이 언급하며 방문객이 많은 웹페이지에는 권위 있는 고품질의 정보가 있을 가능성이 크므로, 검색 엔진이 색인을 작성하는 것이 특히 중요하다. 대출이 많은 도서는 다수를 보유하는 도서관과 마찬가지이다. 웹 콘텐츠는 지속적으로 변경되거나 삭제되고 새로운 위치로 이동한다. 웹크롤러는 정기적으로 페이지를 다시 방문하여 최신 버전의 콘텐츠를 색인화해야 한다.[4]
구현의 쟁점[편집]
대역폭과 저장 용량과는 별도로 웹크롤러 수집기의 구현은 많은 쟁점이 있다. 수집기가 여러 다른 시스템과 상호작용을 해야 하고 그 시스템들은 다양한 수준의 표준 준수와 서비스 품질을 가지고 있기 때문이다. 웹 수집에서 가장 큰 쟁점은 다중 자원으로부터 어떻게 페이지를 내려받느냐는 것이다. DNS와 웹 서버의 반응 시간이 매우 다르기 때문에 복잡하고 웹 서버 가동 시간도 보장받기가 어렵다. 며칠이나 몇 주 동안 멈추었다가 재가동하는 웹 서버가 많기 때문이다.
- DNS 해석(DNS Resolution) : DNS는 일시적 DNS 고장과 기형 또는 DNS 기록 오류 등의 DNS 해석의 효율성 문제가 있다. 수집기가 로컬 DNS를 포화시킬 수 있으므로 대부분의 수집기는 DNS 캐싱을 하는데, 더 자주 해석되는 도메인 이름의 아이피(IP) 주소를 저장한다. 이런 종류의 캐싱은 포화가 되지 않아도 캐시에서 도메인 이름 해석하는 것은 표준 DNS 해석을 사용하는 것보다 빠르기 때문에 중요하다.
- URL 정규화(URL Canonization) : 웹은 기본적으로 동일한 내용을 가리키는 많은 양의 URL을 지니고 있다. 내려받은 이후에 중복이거나 근접 중복으로 인식될 수 있지만 싱글링(shingling)을 통해 간단한 문법 규칙의 집합을 URL에 적용함으로써 중복 내려받기를 피할 수 있다. 하지만 비슷한 텍스트를 포함하는 URL을 인식하는 대부분의 규칙이 특정 서버 구현의 부산물이기 때문에 기본 파일 이름을 제거하거나 전형적인 세션 아이디 매개변수, 쿠기기반 세션의 선호 정보 제거하는 방법을 사용하여 중복을 피한다.
- 구문 분석(Parsing) : 많은 웹페이지들이 HTML 언어의 사양을 충실히 지키지 않고 부실한 코드로 작성되있다. 이런 원인 중 하나는 웹 브라우저는 잘못 코딩이 되어 있더라도 HTML이 보이게 하도록 설계되어 있기 때문이다. 엄격한 HTML 구문 분석은 가능하지 않기 때문에 수집기의 구문 분석기 모듈은 HTML 코딩의 오류를 허용해야만 하며 불명확한 경우에도 처리해야 한다. 같은 이유로 웹 페이지를 통한 DOM(Document Object Model) 트리 구축은 대부분의 경우 코딩 오류를 바로잡는 사전 과정이 요구된다. 구문 분석 중 정보 추출은 매우 중요하다. 이 과정은 제목과 머릿글(heading) 같은 간단한 HTML 태그 추출로부터 복잡한 자연어 과정까지 있는데 자연어 과정에서 주요한 부분 중 하나로 엔티티(entity) 추출이 있다. 엔티티는 이름이 될 수도 있고 날짜와 다른 임시 엔티티, 지리적 위치 등이 될 수도 있다.
- 소프트 404 페이지(Soft 404 page) : 웹상에서 웹 수집기에 가장 손해를 주는 쟁점은 URL이 존재하지 않는지를 알기 어렵다는 것이다. 많은 웹사이트에서 수집기가 존재하지 않는 페이지를 내려받으려 하면 서버는 미리 제작한 오류 페이지로 재전송하여 되돌려 주는데 오류 조건이라는 신호를 응답 헤더에 실어 주지 않는다는 것이 문제다. 404는 페이지가 존재하지 않는 오류의 번호이다. 소프트 404 페이지는 검색 엔진의 수집기에 손해를 입히는데, 그 이유는 별 내용이 없는 곳에 색인을 만들기 때문이다. 이 문제를 완화시키기 위해 몇몇 웹 수집기는 거의 확실히 존재하지 않을 만한 임의 형태의 URL을 요청하고 제대로 된 응답 코드를 받게되면 그때 검증한다. 또한 소프트 404 페이지는 텍스트 분류기를 통해 이런 페이지가 표현하는 메시지와 연관된 특정 구나 키워드를 학습하여 자동으로 인지할 수 있다.
- 중복(Duplicates) : 웹상에 복제된 내용이 많이 쓰이고 있다. 이들 중복 중 몇몇은 고의적이고 페이지 복제에 상응하는데 다른 중복은 고의적은 아니고 웹 사이트가 구축된 방식의 부산물이다. 비고의적 중복의 주 원인은 URL에 내재된 식별자가 사용자의 행동을 추적하기 때문이다. 이들 식별자는 논리적 세션을 탐지하기 위해 사용된다. 웹 수집기의 관점에서 보면 이들 세션 아이디는 중복의 중요한 원인인데 수집기는 두 페이지가 의미적으로 같은 내용이라고 정확하게 알 수 없기 때문이다. 이러한 정보가 사전 지식으로 수집기에 주어지지 않으면 한 사이트에서만 여러 사람의 세션값이 존재할 수 있기 때문에 무한한 수의 URL을 발견할 수 있다. 수집기는 네트워크 자원 낭비를 피하기 위해 내려받기를 중단해야 한다.
- 병렬 수집(Parallel Crawling) : 웹 수집은 더 나은 확장성과 고장에 대한 내성을 갖기 위해서 다중 스레드를 통해 이루어져야 하며 매우 큰 문서모음에 대해서 분산 처리를 해 주어야 한다. 수집 시 다중 스레드 사용하는 이유는 수집기가 사용 가능한 대역폭이 일반적으로 개별 웹사이트의 대역폭보다 훨씬 크기 때문이다. 이는 수집기가 각 개별 내려받기 스레드가 끝나기를 기다리기 전에 다음 페이지를 요청해야 함을 의미한다. 분산 환경에서 수집기를 실행할 때 가장 중요한 것은 동일 페이지를 두 번 이상 내려받는 것을 피해 웹 서버에 과부하를 주지 말아야 한다는 것이다. 통신 오버헤드를 최소화해야 한다는 것을 목표로 한다. 이상적으로는 매 페이지가 단일 프로세스에 의해 내려받기를 하는 것이다. 완전 분산 수집 시스템은 새로운 URL 발견에 대해 어떤 정책을 요구한다. 새로운 URL을 발견한 프로세스가 그것을 내려받아야 하는지 결정해야 하는 것은 할당 함수인데 처음부터 모든 프로세스에게 알려져 있다. 한 웹사이트 대부분의 링크가 동일 사이트의 페이지라는 사실을 활용하기 위해서 할당 함수가 동일 호스트 페이지를 한 프로세스에 할당해야 한다.[3]
종류[편집]
빙봇[편집]
빙봇(Bingbot)은 2010년 10월 마이크로 소프트(Microsoft)에서 빙을 제공하기 위해 배포한 웹크롤링 로봇 또는 인터넷 봇 유형이다. 웹에서 문서를 수집하여 빙 즉, 검색 엔진에 대한 검색 가능한 색인을 구축한다 . 구글의 구글 봇과 동일한 기능을 수행한다. 빙봇의 일반적인 사용자 에이전트 문자열은 "Mozilla/5.0(compatible; bingbot /2.0; +http://www.bing.com/bingbot.htm)" 이다. 이것은 웹 마스터에게 누가 파일을 요청하는지 알려주기 위해 웹 서버 로그에 나타난다 . 각 웹 마스터는 포함된 에이전트 식별자인 빙봇을 사용하여 사이트에 대한 액세스를 허용하거나 허용할 수 있으며, 기본적 액세스는 허용된다. 액세스 권한을 부여하지 않으려면 로봇 제외 표준을 사용하여 차단하거나 다른 서버 특정 수단을 사용할 수 있고, 차단을 수행하기 위해 웹 서버에 의존한다.[5]
구글 봇[편집]
구글 봇(Googlebot)은 구글이 사용하는 검색 봇 소프트웨어이며 웹으로부터 문서를 수집하여 구글 검색 엔진을 위한 검색 가능한 색인을 만든다. 이 이름은 실제로 각기 다른 두 종류의 웹크롤러를 가리키기 위해 사용된다. 웹 사이트는 구글봇 데스크톱과 구글봇 모바일에 의해 크롤링될 가능성이 있다. 요청 중 사용자 에이전트 문자열을 살펴봄으로써 구글 봇의 서브 타입을 식별할 수 있다. 그러나 두 종류의 크롤러 모두 로봇 배제 표준(robots.txt)의 동일한 제품 토큰 즉, useent 토큰을 준수하므로 로봇 배제 표준을 사용하여 구글봇 모바일 또는 구글봇 데스크 톱을 선별적으로 지정할 수 없다. 웹 마스터가 구글봇이나 다른 스파이더에 이용할 수 있는 사이트의 정보를 제한하고 싶다면 로봇 배제 표준 파일에 적절한 디렉티브를 지정하여 해당 작업을 수행할 수 있으며, 메타 태그 <meta name="Googlebot" content="nofollow" />를 웹 페이지에 추가하여 진행할 수도 있다. 웹 서버 대한 구글봇의 요청은 구글 봇을 포함하는 사용자 에이전트 문자열, "googlebot.com"을 포함하는 호스트 주소로 식별이 가능하다. 현재 구글봇은 하이퍼 링크(HREF)와 이미지 링크를 따른다. 구글 봇이 자바 스크립트를 실행하고 에이잭스(Ajax) 호출에 의해 생성된 콘텐츠의 구문을 분석할 수 있다는 정황이 있다. 진보된 구글 봇의 기능을 설명하는 여러 이론들을 뒷받침하는 것은 자바스크립트를 처리하는 것이다. 현재 구글 봇은 크롬 M41 기반의 웹 렌더링 서비스(WRS)를 사용한다. 구글 봇은 모든 문서의 모든 링크를 찾아 들어가면서 페이지를 발견한다. 그 다음 다른 웹 페이지의 이 링크들을 따라간다. 새 웹 페이지들은 웹 상에 알려진 다른 문서들과 연결되어 있어야 웹 마스터가 크롤링, 색인, 수동 제출을 할 수 있게 된다.[6]
오픈 소스 크롤러[편집]
- 프론테라
- GNU Wget
- 그럽
- 헤리트릭스
- HT트랙
- mnoGoSearch
- 뉴스-플리즈
- 아파치 너치
- 오픈 서치 서버
- PHP-크롤러
- 스크래피
- Seeks
- 스핑크스
- 스톰크롤러
- tkWWW 로봇
- Xapian
- YaCy
- 옥토파스[1]
크롤링[편집]
크롤링(crawling) 또는 스크레이핑(scraping) 은 웹 페이지를 가져와서 데이터를 추출해 내는 방법 또는, 인터넷에서 존재하는 데이터를 컴퓨터 프로그램을 통하여 자동화된 방법으로 웹에서 데이터를 수집하는 모든 작업을 말한다. 크롤링은 많은 사람들이 스크랩핑과 혼용하여 사용하고 있지만, 사실은 그 의미가 상이한 용어다. 크롤링은 데이터를 수집하고 분류하는 것을 의미하며, 주로 인터넷 상의 html, 문서 등의 웹페이지를 수집해서 분류하고 저장하는 것을 뜻한다. 엄밀히 말해, 크롤링은 데이터의 수집 보다는 여러 웹페이지를 돌아다닌다는 뜻이 강하며, 데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업이 크롤링의 주요 목적이라 할 수 있다.[7] 이렇게 크롤링하는 소프트웨어를 크롤러라고 한다.세상에는 많은 양, 다양한 데이터가 존재한다. 그렇기 때문에 크롤링도 다양한 분야에서 활용할 수 있다. 어떠한 기업에서는 크롤링 담당 분서가 따로 존재한다고 한다. 예를 들면 마케팅과 관련하여 개선점을 파악하고 싶을때 웹상에 존재하는 상품들의 후기, 평점등을 크롤링하여 문제점을 파악하고 개선점을 찾을 수 있다.[8] 파싱은 프로그램 언어를 문법에 맞게 분석해 내는 것인데, 어떤 웹페이지의 데이터를 사용자가 원하는 형식, 즉 일정한 패턴으로 추출해 어떠한 정보를 만들어 내는 것을 의미한다. 어느 위치에 저장된 데이터에 접근을 했다면, 이 데이터를 원하는 형태로 가공하는 작업이 주요 목적이라고 생각하면 된다. 종합하여, 언급한 각각의 작업을 수행하는 프로그램을 크롤러, 파서(parser), 스크래퍼(scraper) 등으로 부른다. 여러 자료를 보면 크롤링, 스크랩핑 그리고 파싱은 인터넷에서 프로그램을 이용해 자료를 추출하는 작업을 의미하며, 종종 혼용해서 쓰는 경우가 많다. 전문 개발자가 아니라면 정확하게 구분할 필요는 없지만, 기본적으로 다소 상이한 개념에 대한 이해 정도는 필요하다.[7]
정적 크롤링은 정적인 데이터를 수집하는 방법이다. 정적인 데이터란 변하지 않는 데이터를 의미한다. 즉 한 페이지 안에서 원하는 정보가 모두 드러날 때 정적 데이터라고 할 수 있다. 예를 들면, 로또 번호 7개를 크롤링하고 싶다고 한다면 보이는 화면에서 그 값이 모두 나타나 있다. 그렇기 때문에 한 페이지 안에 원하는 정보가 모두 드러난 경우 인 정적 크롤링에 해당된다. 정적 크롤링은 한 페이지 내에서 모든 작업이 이루어지기 때문에 속도가 매우 빠르다는 장점을 가진다.[8] 동적 크롤링은 동적인 데이터를 수집하는 방법이다. 동적인 데이터란 입력, 클릭, 로그인 등과 같이 페이지 이동이 있어야 보이는 데이터를 말한다. 정적 크롤링은 수집하는 속도가 느리다는 단점이 있지만 더 많은 정보를 수집할 수 있다는 장점이 있다. 예를 들어, 메일함에 있는 메일 제목 데이터를 수집하고 싶다고 생각해 봤을 때, 그렇기 위해서는 로그인 과정을 거친 후 메일함에 들어가야 하는 동적인 과정이 필요하다. 이러한 경우가 바로 동적 크롤링이다.[8]
대상[편집]
크롤링의 주요 대상은 다양한 형태로 존재하는 데이터이다. 데이터는 앞서 언급한 바와 같이, 데이터 생성 스타일에 따라, 정형, 반정형 그리고 비정형 데이터로 구분되기도 하지만, 데이터를 생산하는 주체에 따라 기업 혹은 기관/조직과 사용자가 생성하는 데이터로 분류할 수 있다. 조직이 생성하는 데이터는 언론이 제공하는 뉴스와 방송영상, 민간기업이 제공하는 제품관련 정보, 영화·음악·게임 등의 미디어 산업체가 생산하는 콘텐츠 형 데이터 등이 있다. 사용자에 의해 생성되는 데이터는 서비스와 제품 소비에 의해 자동적으로 만들어진 뉴스 기사를 읽은 횟수, 온라인 쇼핑 웹사이트 방문자 수 등의 데이터와 뉴스 댓글, 상품평, 메신저·블로그·온라인 카페·유튜브·SNS 내 활동에 의해 생산된 데이터를 포함한다. 이러한 데이터는 사용자 단말을 통하여 읽을 수 있는 데이터이므로, 크롤링이나 스크랩핑 방법을 사용하여 수집할 필요가 있다.[7]
비교[편집]
- 연속성: 정적 크롤링은 주소를 통해 단발적으로 접근하지만, 동적 크롤링은 브라우저를 사용하여 연속적으로 접근한다.
- 수집 능력: 정적 크롤링은 수집 데이터의 한계가 존재하지만, 동적 크롤링은 수집 데이터의 한계가 없다.
- 속도: 정적 크롤링의 속도는 빠르며, 동적 크롤링은 속도가 느리다.
- 라이브러리: 정적 크롤링은 리퀘스트, 뷰티풀 숲을 사용하며, 동적 크롤링은 셀레니움, 크롬 드라이버를 사용한다.[8]
방법[편집]
크롤링을 하는 방법에는 크게 연구자가 직접 코드를 작성하는 경우와 데이터를 수집하고자 하는 사이트 혹은 회사에서 제공하는 API(application programming interface)를 사용하는 방법이 있다. API라 함은 다양한 의미를 갖고 있지만, 크롤링의 경우에는 사용자에게 데이터를 쉽게 제공하기 위한 툴이라 할 수 있다. API를 사용하다 보면, 빠른 시간에 정제된 형태의 데이터를 수집할 수 있고, 데이터를 소유하고 있는 기업에서 제공하는 툴이기 때문에 데이터 사용에 따른 법적·윤리적 문제가 거의 없지만 최소한의 프로그래밍은 필요하다.직접 크롤링 명령어를 작성해서 데이터를 수집하는 경우는 크게, 데이터를 수집하려는 사이트에서 API를 제공하지 않는 경우, API를 제공하더라도 API를 통하여 원하는 데이터를 수집 할 수 없는 경우도 발생한다. 또한, 크롤링을 하고자 하는 정보가 웹페이지의 소스 코드에 담겨 있지 않는 경우에는 요소 검사(network inspection)이나 셀레니움과 같은 헤드리스 브라우저(headless browser)를 사용할 수도 있다.[7]
분석 방법[편집]
크롤링한 대용량 데이터를 엑셀에 저장하고, 아래에 기술할 다양한 툴들을 이용하여 수집한 기사와 댓글 데이터를 분석하여, 궁극적으로 데이터 내 담겨 있는 함의를 도출할 수 있다.
- 키워드 빈도 분석 : 크롤링에 의해 수집 및 텍스트 자료에 포함된 특정 단어들의 빈도에 따라 주요 단어를 추출할 수 있다. 즉, 주제어 빈도 분석은 특정 문서 집단 내 에서 자주 언급되는 주제어를 추출하고 이들이 언급되는 빈도에 따라 중요도를 분석하는 방법이며, 특정 단어가 수집된 총 문서에서 얼마나 자주 등장하는지를 나타내는 단어 빈도(Term Frequency)로 단순하게 결정할 수 있다.
- 키워드 중요도 분석 : 단순하게는, 단어 빈도 값이 큰 단어일수록 중요도가 높다고 판단할 수 있지만, 사실 단어 빈도 값이 큰 단어는 모든 문서에서 자주 등장하는, 즉 그 단어가 흔하게 등장한다는 것을 의미하는 문서 빈도(Document Frequency) 값이 큰 단어일 수 있다. 이에, 중요도 높은 키워드 도출을 위해 TF-IDF(가중치)라는 값을 사용한다. 가중치는 문서 빈도 값의 역수인 IDF(역문서 빈도, inverse document frequency)에 단순 단어 빈도 값을 곱한 것으로, 이처럼 모든 문서에서 자주 출현하는 상투어를 걸러내기 위함이며, 이는 단순한 단어의 빈도 처리가 아닌 단어의 출현 확률을 기준으로 출현 빈도를 재가공 한 것이다. 즉, 가중치는 특정 문서에서의 단어 중요도를 나타내는 단어 빈도에 전체 문서와 관계된 단어의 중요도인 역문서 빈도를 곱한 값으로, 특정 문서 내에서 단어 빈도가 높을수록, 그리고 전체 문서들 중 그 단어를 포함한 문서가 적을수록 그 값이 커짐을 알 수 있다. 이러한 가중치를 통해 언론 기사나 댓글 텍스트 데이터 전체에서 공통적으로 혹은 무의미하게 반복적으로 출현하는 특정 단어를 제거할 수 있다.
- 텍스트 마이닝 : 단어 빈도와 가중치 분석을 발전시킨 것으로, 텍스트 형태로 이루어진 비정형 데이터들을 자연어 처리 방식을 이용하여 정보를 추출하거나 연계성을 파악하는 기법이다. 웹 문서에서 특정 주제어와 매칭되는 단어를 찾아 수를 부여하는 인덱싱(indexing) 검색 기법에서 발전되어 왔으며, 점차 특정 주제어나 문맥을 기반으로 데이터의 숨은 의미를 탐색하는 데 활용되고 있다. 텍스트 마이닝이 두드러지는 분야는 뉴스 기사 분석으로, 이를 활용하면 텍스트의 문맥에 따라 쟁점을 파악하고 텍스트 간 연계를 분석할 수 있다는 장점이 있다.연관어 분석(association keyword analysis) 혹은 의미망 분석(semantic network analysis)은 텍스트 마이닝의 한 종류이다. 관심 주제어를 포함한 대상 문서에서 함께 언급된 주제어를 추출하여 관심 주제어와 어떠한 토픽들이 연결되는 지 분석할 때 사용한다. 예컨대, 하나의 뉴스 기사에서 동시 출현한 용어의 쌍을 추출하고 전체 문서집합에서 주제어의 쌍별 발생 빈도와 연결 관계를 분석하면, 언론 기사 상의 주요 관심 토픽과 그 연계성의 변화를 추적 할 수 있다. 또한 주제어를 특정 토픽 별로 분류한 후 연관어 분석을 실시하면 주요 쟁점 간의 관련성을 구조적으로 파악하기에 용이하다. 단어 빈도와 T가중치 분석을 통하여 언론이 자주 언급하는 의제 혹은 주요 이슈를 간단하게 추출할 수 있으며, 추출된 단어가 내재하는 감성적인 긍·부정 의미를 파악하여, 특정 아젠다(agenda)에 대한 언론이 바라보는 시각 및 관점, 즉 프레임을 이해하는 데 도움이 된다.[1]
웹크롤링과 웹스크래핑의 차이점[편집]
웹스크래핑, 데이터 스크래핑, 콘텐츠 스크래핑은 봇이 허가 없이 웹사이트의 콘텐츠를 다운로드하는 경우를 말하는데, 해당 콘텐츠를 악의적인 목적으로 이용하려는 의도가 있는 경우가 많다. 웹 스크래핑은 대개 웹크롤링보다 대상이 명확하다. 웹크롤러는 계속 링크를 따라가며 크롤링하지만, 웹 스크래퍼는 특정 페이지 또는 특정 웹 사이트만을 추적하기도 한다. 또한, 웹크롤러, 특히 주요 검색 엔진의 웹크롤러는, robots.txt 파일을 준수하고 웹 서버에 부담이 되지 않도록 요청을 제한하는 데 비해, 웹 스크래퍼 봇은 웹 서버에 대한 영향을 무시하기도 한다.[4]
정책[편집]
- 선택 정책: 페이지의 다운로드를 언급
- 재방문 정책: 언제 문서의 변경사항을 검사할지를 언급
- 공손성 정책: 웹사이트의 과부하를 막기 위한 언급
- 병렬화 정책: 분산 웹크롤러를 어떻게 조율할지를 언급[1]
각주[편집]
- ↑ 1.0 1.1 1.2 1.3 1.4 〈웹 크롤러〉, 《위키백과》
- ↑ 뎃집사, 〈크롤링 초급 강좌 1) 웹 크롤링이란?〉, 《네이버 블로그》, 2019-10-21
- ↑ 3.0 3.1 이농이능, 〈웹 크롤러의 구조와 구현〉, 《티스토리》, 2018-01-19
- ↑ 4.0 4.1 CLOUDFLARE 공식 홈페이지 - https://www.cloudflare.com/ko-kr/learning/bots/what-is-a-web-crawler/
- ↑ 〈빙봇〉, 《위키백과》
- ↑ 〈구글 봇〉, 《위키백과》
- ↑ 7.0 7.1 7.2 7.3 〈원하는 정보만 수집한다! 크롤링과 빅데이터 분석 활용〉, 《삼성디스플레이 뉴스룸》, 2020-04-22
- ↑ 8.0 8.1 8.2 8.3 Jaaaa_mj, 〈크롤링 종류(정적 VS 동적)〉, 《티스토리》, 2021-01-17
참고자료[편집]
- CLOUDFLARE 공식 홈페이지 - https://www.cloudflare.com/ko-kr/learning/bots/what-is-a-web-crawler/
- 〈웹 크롤러〉, 《위키백과》
- Jaaaa_mj, 〈크롤링 종류(정적 VS 동적)〉, 《티스토리》, 2021-01-17
- 〈원하는 정보만 수집한다! 크롤링과 빅데이터 분석 활용〉, 《삼성디스플레이 뉴스룸》, 2020-04-22
- 〈빙봇〉, 《위키백과》
- 〈구글 봇〉, 《위키백과》
- 뎃집사, 〈크롤링 초급 강좌 1) 웹 크롤링이란?〉, 《네이버 블로그》, 2019-10-21
- 이농이능, 〈웹 크롤러의 구조와 구현〉, 《티스토리》, 2018-01-19
같이 보기[편집]