본문 바로가기
데이터 분석

웹 크롤링 with Python 4장

by ChocoPeanut 2017. 7. 13.

웹 크롤링 with Python 4

 

웹 크롤링을 통해 자연어를 읽고 쓰는 기능을 수행할 수 있다. 이는 웹 크롤링 파트에서 데이터를 분석하는 부분에 속한다고 볼 수 있다. 웹에서 자연어로 구성된 데이터를 가지고 와서 이를 우리가 원하는 결과물로 바꾸어주는 과정을 의미한다. 또한 일반적으로 구글이나 네이버와 같은 검색 엔진을 통해 우리가 원하는 정보를 찾는데 이런 과정이 어떻게 진행하는지에 대해서도 알 수 있게 된다. 검색창에 자연어를 입력하였는데 어떻게 해서 우리가 원하는 결과물로 잘 도달할 수 있는지가 바로 웹 크롤링의 과정에 속하게 된다.


우선 웹 상에 있는 자연어 데이터에는 불필요한 정보들이 매우 많다. 우리는 이러한 정보를 정리하고 필요한 정보만을 추출할 필요가 있다. 그래서 n-그램의 방법과 re 라이브러리를 이용하여 \n 나 기타 필요 없는 어구들, 유니코드로의 변환 등등을 통해 어느 정도 언어를 걸러 낼 수 있다. 그런데 이뿐만 아니라 우리가 자연어를 볼 때 thea 와 같은 관사나 of, in, to와 같은 전치사에 대한 정보보다는 다른 명사의 형태를 내용적 측면에서 중요시 여기는 경우가 많다. 이런 어휘들도 걸러주는 것이 필요할 때에는 미국 용어 중 가장 많이 사용되는 언어를 모아놓은 리스트를 통해 걸러줄 수 있다.


마르코프 모델은 어떤 특정 사건이 다른 특정 사건에 뒤이어, 일정 확률로 일어나는 대규모 무작위 분포를 분석할 때 자주 쓰인다. 이는 자연어를 처리할 때 매우 도움이 된다. 이를 사용하게 되면 특정 어휘 뒤에 따라 나오는 어휘가 어떤 것이 많은 지를 알 수 있게 되고 완벽하진 않지만 이를 통해 문장을 새로 완성시키는 과정도 가능하게 된다.


너비 우선 탐색은 방향성 그래프에서 가장 짧은 경로를 찾을 때 가장 좋은 방법이다. 방향성 그래프는 마르코프 모델과 같이 하나의 방향으로 체인을 연결하듯이 연결되는 형태를 말한다. 이러한 예시로는 웹 페이지의 링크를 따라가서 최종적으로 원하는 링크에 도달하는 방법이 있다. 너비 우선 탐색은 우선 시작 페이지에서 출발하는 링크를 모두 검색하고 검색한 링크에 목표 페이지가 들어 잇지 않으면 링크된 페이지에서 다시 또 다른 링크된 페이지를 찾는다. 링크 단계 제한에 걸리거나, 목표 페이지를 찾을 때까지 반복하여 진행하게 된다.


NLTK는 자연어 툴킷으로 영어 텍스트의 부분마다 식별하고 태킹하도록 설계된 파이썬 라이브러리 모음이다. NLTK는 텍스트에서 단어 숫자, 단어 빈도, 어휘 다양도 같은 통계적 정보를 생성할 때 아주 유용하다. 특히 비교적 광범위한 텍스트 분석이 필요하다면 이 모듈에서 제공하는 많은 함수를 통해 원하는 거의 모든 작업을 수행할 수 있다.