본문 바로가기

scraping13

자연어 처리하기: NLTK 자연어 툴킷자연어 툴킷 Natural Language Toolkit(NLTK)은 영어 텍스트의 부분 부분을 식별하고 태깅하도록 설계된 파이썬 라이브러리 모음입니다. NLTK의 설치 가이드는 http://www.nltk.org/install.html 을 참고하시면 됩니다.NLTK를 사용한 통계적 분석NLTK는 텍스트에서 단어 숫자, 단어 빈도, 어휘 다양도 같은 통계적 정보를 생성할 때 아주 유용합니다. 필요한 것이 비교적 단순한 계산, 예를 들어 텍스트 섹션에서 고유한 단어 숫자를 세는 것 같은 것이라면 NLTK는 좀 과할수 있습니다. NLTK 분석은 항상 Text 객체로 시작합니다. 다음과 같은 방법으로 단순한 파이썬 문자열을 Text 객체로 바꿀 수 있습니다.word_tokenize 함수는 파이썬에서.. 2025. 3. 7.
자연어 처리하기: 너비우선탐색 어떤 페이지에서 시작해 목표 페이지에 도달하는 링크 체인을 찾는 문제는 첫 번째 단어와 마지막 단어가 정해진 상태에서 마르코프 체인을 찾는 것과 마찬가지입니다. 이런 종류의 문제를 방향성 그래프 문제라고 부릅니다. 방향성 그래프에서 가장 짧은 경로를 찾을 때 가장 좋고 가장 널리 쓰이는 방법은 너비 우선 탐색입니다.너비 우선 탐색에서는 우선 시작 페이지에서 출발하는 링크를 모두 검색합니다. 검색한 링크에 목표 페이지가 들어 있지 않으면 2단계 링크, 즉 시작 페이지에서 링크된 페이지에서 다시 링크된 페이지를 찾습니다. 링크 단계 제한(여기서는 6)에 걸리거나, 목표 페이지를 찾을 때까지 이를 반복합니다.import pymysqlconn = pymysql.connect(host = '127.0.0.1', .. 2025. 3. 7.
자연어 처리하기: 데이터 요약 만약 텍스트 컨텐츠를 n-그램, 즉 단어 n개로 구성된 구절로 나누어 빈도수가 높은 단어 혹은 문장을 추출해 요약한다고 합시다. 우선 operator 모듈에 들어 있는 파이썬 정렬 함수를 이용하여 n-그램을 찾고 정렬하는 코드를 구성한다고 합시다.from urllib.request import urlopenfrom bs4 import BeautifulSoupimport reimport stringfrom collections import Counterdef cleanSentence(sentence): sentence = sentence.split(' ') sentence = [word.strip(string.punctuation + string.whitespace) for word.. 2025. 2. 20.
지저분한 데이터 정리하기: 사후 정리(오픈리파인, OpenRefine) 데이터를 코드로 정리할 수 있지만, 자신이 만들지 않는 데이터 또는 어떻게 정리해야할지 모를 데이터셋을 다룰 수도 있습니다. 이럴 땐 오픈리파인이라는 프로그램을 사용하여 데이터를 빠르게, 가동성 있게 정리할 수도 있습니다.오픈 리파인(http://openrefine.org/)은 메타웹이라는 회사에서 제작된 오픈소스 프로젝트 입니다.설치오픈리파인의 인터페이스는 브라우저 안에서 동작하지만, 사실은 데스크톱 애플리케이션이므로 반드시 내려받아 설치해야 합니다. http://openrefine.org/download.html에서 내려받을 수 있습니다.오픈리파인을 사용하려면 데이터를 CSV 파일로 바꿔야 합니다. 데이터를 데이터베이스에 저장했다면 CSV 파일로 내보낼 수 있습니다.사용필터링: 필터링에는 필터와 fa.. 2025. 2. 20.
지저분한 데이터 정리하기: 코드에서 정리 웹 스크레이핑에서 데이터를 수집할 곳을 정하거나, 수집할 데이터를 고를 수 없을 때가 많습니다. 잘못된 구두점, 일관성 없는 대문자 사용, 줄바꿈, 오타 등 지저분한 데이터는 웹의 큰 문제입니다. 언어학에서 n-그램은 텍스트나 연설에서 연속으로 나타난 단어 n개를 말합니다. 자연어를 분석할 때는 공통적으로 나타나는 n-그램, 또는 자주 함께 쓰이는 단어 집합으로 나눠서 생각하는 게 편리할 때가 많습니다. 아래의 4개의 함수를 통해 n-그램을 사용한 경우 발생하는 예외상황들에 대해 대처할 수 있습니다.from urllib.request import urlopenfrom bs4 import BeautifulSoupimport reimport stringdef cleanSentence(sentence): .. 2025. 2. 20.
문서읽기: PDF, 워드와 .doxs PDF파이썬에서 PDF를 조작할 때 비교적 사용하기 쉬운 라이브러리 PDFMiner3K가 있습니다. 매우 유연하여 명령줄에서도 사용할 수 있고, 기존 코드에 통합할 수도 있습니다.다음은 임의의 PDF를 로컬 파일 객체로 바꿔서 문자열로 읽는 기본적인 프로그램입니다.from urllib.request import urlopenfrom pdfminer.pdfinterp import PDFResourceManager, process_pdffrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom io import StringIOfrom io import opendef readPDF(pdfFile): rsrcmgr.. 2025. 2. 18.
문서 읽기: 텍스트, CSV 문서 인코딩문서 인코딩은 애플리케이션(컴퓨터의 운영체제이든, 직접 만든 파이썬 코드이든)이 그 문서를 읽는 방법을 지정합니다. 인코딩은 보통 파일 확장자에서 추론할 수 있지만, 파일 확장자가 꼭 인코딩에 따라 정해지는 것은 아닙니다.모든 문서는 근본적으로 0과 1로 인코드 되어있습니다. 인코딩 알고리즘은 그 위에서 글자 하나에 몇 비트인지, 이미지 파일이라면 각 픽셀에 몇 비트를 써서 색깔을 나타내는지 정의합니다. 그 위에 다시 PNG 파일 처럼 압축이나 기타 공간을 절약하는 알고리즘이 있을 수 있습니다.텍스트, CSV, PDF, 워드 문서는 모두 기본적으로 텍스트 파일을 저장하는 파일 형식입니다.텍스트대부분의 기본적인 텍스트 문서, http://www.pythonscraping.com/pages/war.. 2025. 2. 18.
웹 크롤러 모델: 여러 페이지 유형 크롤러 그리고 좋은 웹크로러 미리 정의된 페이지 집합을 크롤링하는 것과 달리, 웹 사이트 내부 링크를 모두 크롤링하면 무엇을 얻게 될지 정확히 알 수 없다는 문제가 있습니다. 다행히 페이지 유형을 식별하는 몇 가지 기본적인 방법이 있습니다.URL에 따라블로그 게시물이라면 특정 URL 패턴, 예를 들어 http://example.com/blog/title-of-post 같은 패턴을 포함할 수 있습니다.특정 필드가 존재하는지 여부에 따라페이지에 날짜는 있지만 작성자 이름이 없다면 보도 자료로 분류할 법합니다. 제목, 주 이미지, 가격은 있지만 주요 콘텐츠가 없다면 제품 페이지일 수 있습니다.페이지를 식별할 수 있는 특정 태그 여부에 따라태그 내에서 데이터를 수집하지 않아도 태그를 활용할 수 있습니다. 예를 들어 크롤러에서 관련 제품 정.. 2025. 2. 16.
웹 크롤링 모델: 링크를 통한 사이트 크롤링 링크를 통한 사이트 크롤링은 특정 URL 패턴과 일치하는 링크를 모두 따라갈 수 있는 크롤러입니다. 특정 검색 결과나 페이지 목록에 국한되지 않고 사이트 전체에서 데이터를 수집해야 하는 프로젝트에 활용할 수 있으며, 사이트의 페이지가 적절히 구조화되지 않았거나 광범위하게 분산된 경우에 효과적입니다. 링크 위치를 확인하는 구조화된 필요하지 않으므로, Website 객체에 검색 페에지에 관한 속성을 둘 필요가 없습니다. 그러나 크롤러가 찾아야 할 링크의 위치에 대한 구체적인 지침이 없으므로 어떤 종류의 페이지를 선택할지 지정하는 규칙이 필요합니다. 여기서는 대상 URL에 대한 정규 표현식인 targetPattern과 불리언 변수 absoluteUrl을 사용할 것입니다.class Content: def .. 2025. 2. 16.