* 국민대학교 빅데이터 분석학회 D&A Session에서 진행한 자료입니다. 웹 크롤링에 대한 기본적인 개념과 파이썬과 관련된 소스 코드를 담았습니다.
* 아래는 PPT에 포함된 크롤링 예제 코드입니다. https://drive.google.com/file/d/1ty7JLz8ccicPTrpry4dpkqCGuTclA68M/view?usp=sharing
2018년 6월 24일 "백수들의 Conference"에서 발표한 개발자를 위한 (블로그) 글쓰기 intro입니다
좋은 글을 많이 보는 노하우 + 꾸준히 글을 작성하는 노하우에 대해 주로 이야기했습니다! (어떻게 글을 작성하는가는 없어요!)
피드백은 언제나 환영합니다 :)
오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편Seongyun Byeon
The document contains log data from user activities on a platform. There are three columns - user_id, event, and event_date. It logs the activities of 5 users over several days, including events like logins, posts, comments, views. It also includes some aggregated data on unique events and totals by user.
2018년 6월 24일 "백수들의 Conference"에서 발표한 개발자를 위한 (블로그) 글쓰기 intro입니다
좋은 글을 많이 보는 노하우 + 꾸준히 글을 작성하는 노하우에 대해 주로 이야기했습니다! (어떻게 글을 작성하는가는 없어요!)
피드백은 언제나 환영합니다 :)
오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편Seongyun Byeon
The document contains log data from user activities on a platform. There are three columns - user_id, event, and event_date. It logs the activities of 5 users over several days, including events like logins, posts, comments, views. It also includes some aggregated data on unique events and totals by user.
This document discusses using BigQuery and Dataflow for ETL processes. It explains loading raw data from databases into BigQuery, transforming the data with Dataflow, and writing the results. It also mentions pricing of $5 per terabyte for BigQuery storage and notes that Dataflow provides virtual CPUs and RAM. Finally, it includes a link about performing ETL from relational databases to BigQuery.
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색 BOAZ Bigdata
데이터 엔지니어링 프로젝트를 진행한 YouPlace팀에서는 아래와 같은 프로젝트를 진행했습니다.
<aside>
이젠 검색도 유튜브 시대
제주여행을 계획할 때 브이로그 영상을 많이 참고하실텐데요
수많은 영상들과 영상 속 분산된 명소들을 하나 하나 찾으려 생각하면 막막하지 않으셨나요?
이러한 고민을 갖고 계신 분들을 위해, 유튜브 브이로거들이 찾아간 여행 명소들을 지도에서 한 눈에 파악할 수 있도록 만들었어요
(github : https://github.com/Boaz-Youplace)
16기 엔지니어링 고은서 | 중앙대학교 소프트웨어학부
16기 엔지니어링 류정화 | 성신여자대학교 융합보안공학과
16기 엔지니어링 송경민 | 국민대학교 소프트웨어학과
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017Taehoon Kim
발표 영상 : https://youtu.be/klnfWhPGPRs
코드 : https://github.com/carpedm20/multi-speaker-tacotron-tensorflow
음성 합성 데모 : http://carpedm20.github.io/tacotron
발표 소개 : https://deview.kr/2017/schedule/182
딥러닝을 활용한 음성 합성 기술을 소개하고 개발 경험과 그 과정에서 얻었던 팁을 공유하고자 합니다.
한빛데브그라운드에서 발표했던 내용입니다.
발표 영상 : https://youtu.be/ohpfSLf0V3Y
--
스타트업 비즈니스에서 데이터를 활용한 전략 수립과 의사결정은 필수적인 요소입니다. 서비스 운영 데이터에서부터 다양한 고객의 행동 로그, 소셜 미디어 데이터까지 다양한 데이터를 모두 모아 분석 환경을 구축하기 위해서는 많은 준비와 고민이 필요합니다. 스타트업에서 빠른 속도와 최소한의 비용, 다양한 분석 Tool들과 연동되는 Data Pipeline, Data Lake, Data Warehouse 구축 경험기를 공유하고자 합니다. 이 과정을 통해 애널리틱스 파이프라인을 구축 과정과 S3, Glue, Athena,EMR, Quicksight와 같은 서버리스 애널리틱스 서비스에 대한 구축 사례를 확인하실 수 있습니다.
빅데이터, 데이터마이닝, 공공데이터, 오픈데이터 - 그 어느때보다 데이터 분석 및 활용이 중요해진 이 시기에 웹 상의 수많은 공개된 자료를 직접 수집할 수 있는 웹 스크래핑/크롤링 기술은 데이터 수집 및 활용 능력에 큰 도움이 됩니다.
이 강의에서는 크롤링 프레임웍을 사용하지 않고 HTTP, DOM, concurrency를 담당하는 기본적인 라이브러리만을 사용해 직접 웹 스크래퍼를 처음부터(from scratch) 작성해 봄으로써, 언제든 자유도 높은 동시성 크롤러를 직접 구현할 수 있도록 작동 원리를 이해할 수 있도록 합니다.
시연에서 작성된 전체 소스코드는 아래 링크에서 보실 수 있습니다.
https://gist.github.com/cornchz/0ec0c3f5ca69bac2b625
This document discusses using BigQuery and Dataflow for ETL processes. It explains loading raw data from databases into BigQuery, transforming the data with Dataflow, and writing the results. It also mentions pricing of $5 per terabyte for BigQuery storage and notes that Dataflow provides virtual CPUs and RAM. Finally, it includes a link about performing ETL from relational databases to BigQuery.
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색 BOAZ Bigdata
데이터 엔지니어링 프로젝트를 진행한 YouPlace팀에서는 아래와 같은 프로젝트를 진행했습니다.
<aside>
이젠 검색도 유튜브 시대
제주여행을 계획할 때 브이로그 영상을 많이 참고하실텐데요
수많은 영상들과 영상 속 분산된 명소들을 하나 하나 찾으려 생각하면 막막하지 않으셨나요?
이러한 고민을 갖고 계신 분들을 위해, 유튜브 브이로거들이 찾아간 여행 명소들을 지도에서 한 눈에 파악할 수 있도록 만들었어요
(github : https://github.com/Boaz-Youplace)
16기 엔지니어링 고은서 | 중앙대학교 소프트웨어학부
16기 엔지니어링 류정화 | 성신여자대학교 융합보안공학과
16기 엔지니어링 송경민 | 국민대학교 소프트웨어학과
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017Taehoon Kim
발표 영상 : https://youtu.be/klnfWhPGPRs
코드 : https://github.com/carpedm20/multi-speaker-tacotron-tensorflow
음성 합성 데모 : http://carpedm20.github.io/tacotron
발표 소개 : https://deview.kr/2017/schedule/182
딥러닝을 활용한 음성 합성 기술을 소개하고 개발 경험과 그 과정에서 얻었던 팁을 공유하고자 합니다.
한빛데브그라운드에서 발표했던 내용입니다.
발표 영상 : https://youtu.be/ohpfSLf0V3Y
--
스타트업 비즈니스에서 데이터를 활용한 전략 수립과 의사결정은 필수적인 요소입니다. 서비스 운영 데이터에서부터 다양한 고객의 행동 로그, 소셜 미디어 데이터까지 다양한 데이터를 모두 모아 분석 환경을 구축하기 위해서는 많은 준비와 고민이 필요합니다. 스타트업에서 빠른 속도와 최소한의 비용, 다양한 분석 Tool들과 연동되는 Data Pipeline, Data Lake, Data Warehouse 구축 경험기를 공유하고자 합니다. 이 과정을 통해 애널리틱스 파이프라인을 구축 과정과 S3, Glue, Athena,EMR, Quicksight와 같은 서버리스 애널리틱스 서비스에 대한 구축 사례를 확인하실 수 있습니다.
빅데이터, 데이터마이닝, 공공데이터, 오픈데이터 - 그 어느때보다 데이터 분석 및 활용이 중요해진 이 시기에 웹 상의 수많은 공개된 자료를 직접 수집할 수 있는 웹 스크래핑/크롤링 기술은 데이터 수집 및 활용 능력에 큰 도움이 됩니다.
이 강의에서는 크롤링 프레임웍을 사용하지 않고 HTTP, DOM, concurrency를 담당하는 기본적인 라이브러리만을 사용해 직접 웹 스크래퍼를 처음부터(from scratch) 작성해 봄으로써, 언제든 자유도 높은 동시성 크롤러를 직접 구현할 수 있도록 작동 원리를 이해할 수 있도록 합니다.
시연에서 작성된 전체 소스코드는 아래 링크에서 보실 수 있습니다.
https://gist.github.com/cornchz/0ec0c3f5ca69bac2b625
2014년 4월 16일(수)~18일(금)까지 진행 된 다음세대재단 제12회 인터넷 리더십 프로그램의 강연 자료입니다.
- 사이트: http://itcanus.net/leadership
- 트위터: https://twitter.com/daumfoundation
- 페이스북: https://www.facebook.com/daumfoundation
PBL : How to live long and healthy in Health Promotion HouseHWANGTAEYONG
* Kookmin University in Korea, Taipei University in Taiwan, and Osaka University of Technology, worked together on a project to solve problems proposed by OSAKA GAS.
* 한국의 국민대학교, 대만의 타이페이 기술대학교, 오사카 기술대학교 3개의 학교가 협업하여 OSAKA GAS 회사에서 제안한 문제를 해결하는 프로젝트를 진행했습니다.
- Design Thinking
- Osaka Gas company
2. 목차
1. 개요
2.정적 크롤링 개념 및 실습
3. 크롤링에 날개를 달자 !
4.동적 크롤링 개념 및 실습
5.텍스트 마이닝
3. Web 상에서 범람하고 있는 데이터들
< 망고플레이트 – 국내 맛집 리뷰 > < 지니 – 국내 음원 사이트 (노래 가사) > < 잡코리아 – 합격 자소서 >
4. Web 상에서 데이터를 수집할 수 있는 이유
< 다음 뉴스 >
- 웹(Web)은 그림, 음악, 글 등이 어우러진 하이퍼
텍스트(hypertext) 를 중심으로 구성되어 있음
- 또한 대부분의 웹 사이트들의 데이터들은 HTML.
CSS, JavaScript 형태로 저장되어 있음
- 웹 페이지의 형식에 정교하게 접근할 수 있다
면 우리가 인터넷 상에서 보고 있는 데이터들을
수집할 수 있음
- 뉴스 제목에 해당하는 부분에 접근하여 데이터를
추출할 수 있음
웹 페이지 에서
우측 마우스 클릭 → 검사 (ctrl + shift + i)
뉴스기사 제목에 해당하는
웹 페이지의 형식
5. 인터넷의 원리
- 인터넷은 요청을 보내는 클라이언트(client)와 요청에 응답을 하는
server로 구성 됨
- 우리가 웹 서핑을 하면서 url을 클릭하는 행위는 client가
server에 요청을 보내는 행위라고 할 수 있음
- Url을 클릭하면 (=server에 요청을 보내면) server는 그에 상
응하는 응답을 함
- 인터넷 상에서 특정 링크를 클릭하게 되면 웹 브라우저 상에 표
현되는 웹 문서가 바뀌는데 웹 문서를 표현하는 방식을 HTML이
라고 함
- CSS, java script 등도 각각의 목적에 맞게 HTML을 보조함
- HTTP란 clinet가 server에 요청을 보내면, server가 응답
하는 방식으로 이루어 짐
출처:국민대학교 비정형 데이터 분석(doc.mindscale.kr/km/unstructured
6. Web Crawling 이란?
Web Crawling이란 컴퓨터 소프트웨어 기술로 Web Site에서
원하는 정보를 추출하는 것을 의미한다. 이때 한 페이지만 머무는
것이 아니라 그 페이지에 링크되어 있는 또 다른 페이지를 차례대
로 방문하고 링크를 따라 웹을 돌아다니는 모습이 마치 거미와 비슷
하다고 해서 스파이더라고 부르기도 한다.
출처: 위키백과
7. Web Crawling Process
request HTML HTML
Parsing
원하는
내용에
접근 및 추
출
Save
url로 부터
HTML 소스 코드
를 요청한다.
Server로 부터
HTML 소스 코드
를 응답 받는다 .
HTML을 분석에
용이한 형태로
Parsing 한다.
원하는 내용에 접
근하여 특정 부분을
추출한다. CSS
선택자, Xpath
방식이 있다.
수집한 데이터를
저장한다.
url
데이터를 수집할
url page를 선택
8. Web Crawling의 방식
1. 정적 크롤링
• 어느 상황에서나 같은 주소에서 변하지 않는 데이터를 기대할 수 있는 경우
• 수집 대상에 한계가 있으나 속도가 빠르다.
• 사용 모듈 – requests
2. 동적 크롤링
• 입력, 클릭 등 실제 브라우저에서 행하는 행동 들을 해야만 데이터를 수집할 수 있는 경우 (매크로와 매우 흡사)
• 수집 대상에 한계가 없으나 속도가 느리다
• 사용 모듈 – Selenium
* 두 가지 방법을 혼용 해서 쓰기도 함
9. Web Crawling의 방식
1. 정적 크롤링
• 어느 상황에서나 같은 주소에서 변하지 않는 데이터를 기대할 수 있는 경우
• 수집 대상에 한계가 있으나 속도가 빠르다.
• 사용 모듈 – requests
2. 동적 크롤링
• 입력, 클릭 등 실제 브라우저에서 행하는 행동 들을 해야만 데이터를 수집할 수 있는 경우 (매크로와 매우 흡사)
• 수집 대상에 한계가 없으나 속도가 느리다
• 사용 모듈 – Selenium
* 두 가지 방법을 혼용 해서 쓰기도 함
10. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 제목 크롤링
https://search.daum.net/search?nil_suggest=btn&w=news&DA=PGD&cluster=y
&q=%EC%B9%B4%EC%B9%B4%EC%98%A4%EC%B9%B4%ED%92%80&p=1
1. 다음 뉴스를 접속한다.
2. ‘카카오카풀’ 을 검색한다.
3. Client가 server에 get 방식으로 요청(request)을 보낸다.
4. server 응답 여부를 확인한다.
11. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 제목 크롤링
HTML을 문자열 형태로 가져와 lxml.fromstring()에 넘긴다
element에 HTML을 파싱한 형태의 요소가 생긴다.
분석에 용이한 형태로 바꿔준다고 생각하면 된다.
주로 쓰는 라이브러리는 BeautifulSoup, lxml 등이 있다. 우리는 lxml을 사용할 것이다.
12. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 제목 크롤링
카카오 카풀과 관련된 첫 번 째 뉴스 제목의 HTML 구조
뉴스 제목에 해당하는 내용에 접근 (CSS 선택자 사용)
✓ 각 요소에 접근하는 방법에 능숙 하려면 HTML 구조를 어느정도 알고 있어야한다.
✓ HTML 구조에 대한 내용은 뒷부분에서 다루겠다.
13. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 요약 본문 크롤링
✓ 기사 제목이 아닌 본문의 요약된 내용을 수집하려면 CSS 선택자 경로만 바꿔주면 된다.
✓ 다음 뉴스는 비교적 HTML 구조가 깔끔한 편이라서 크롤링하기 쉽다.
뉴스 요약 본문에 해당하는 내용에 접근 (CSS 선택자 사용)
15. 너무 쉽다? 그렇다면, 좀 더 응용해보자.
앞의 슬라이드에서 언급한 웹 크롤링의 정의를 보면, “한 페이지만 머무는 것이 아니라 그 페이지에 링크되어 있는 또 다른 페이지
를 차례대로 방문하고 링크를 따라 웹을 돌아다니는 모습이 마치 거미와 비슷하다고 해서 스파이더라고 부르기도 한다.” 라고 했다.
16. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 본문 크롤링
뉴스 기사의 본문을 추출하려면 기존 url에 계속 머무는 것이 아니라,
각 뉴스 기사의 url을 클릭해야함
Click!
17. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 본문 크롤링
Page1, Page2, … , Page10
Page1 Page2 Page10…
…link link link… link link link… link link link…
content content content content content content content content content… … ……
뉴스 기사 본문
<순서>
1. Page url list 생성
2. 각 page url에서 뉴스기사 본문 link url list 생성 및 결합
3. 각 link에서 뉴스 기사 본문 추출
18. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 본문 크롤링
여러 페이지의 모든 기사 본문을 가져오고 싶다.
거미처럼 움직여보자!
https://search.daum.net/search?w=news&DA=PGD&enc=utf8&cluster=y&cluster_page=1&q=%EC%
B9%B4%EC%B9%B4%EC%98%A4%EC%B9%B4%ED%92%80&p=1
https://search.daum.net/search?w=news&DA=PGD&enc=utf8&cluster=y&cluster_page=1&q=%EC%
B9%B4%EC%B9%B4%EC%98%A4%EC%B9%B4%ED%92%80&p=2
https://search.daum.net/search?w=news&DA=PGD&enc=utf8&cluster=y&cluster_page=1&q=%EC%
B9%B4%EC%B9%B4%EC%98%A4%EC%B9%B4%ED%92%80&p=100
각 페이지 별로 url은 일정한 패턴을 가지고 있다.
19. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 본문 크롤링
페이지에서 뉴스 기사로 이동하는 링크에 접근해야 한다.
각 언론사의 웹페이지 마다 HTML 형식이 다름으로
다음 뉴스에 접근해야 함
1 page에서 각 뉴스기사로 이동하는 링크
20. Web Crawling 실습 – 정적 크롤링
다음 뉴스 ‘카카오 카풀’ 관련 뉴스 본문 크롤링
첫 번 째 페이지의 첫 번 째 뉴스 기사에 해당하는 웹페이지 및 HTML 구조 뉴스 기사 본문에 접근하는 css 선택자를 지정한 후 for 문을 활용해 코드를 일반화 시킴
21. HTML (=Hyper Text Markup Language): 웹 페이지를 만드는데 널리 쓰이는 마크업 언어
HTML
다음 뉴스 웹페이지의 HTML 구조
▪ 모든 문서는 <html>로 시작하여 </html>로 끝난다.
▪ <html> 아래에는 <head>와 <body>가 있다.
▪ <body>의 하위에는 <div>가 있다.
▪ 모든 노드는 태그로 감싸여 있는데, 美, 무역협상중 ~ 인상이라는 내용은
<h3> ~ </h3>로 감싸져 있다. 즉, 내용 시작과 종료 시에 태그를 쓴
다.
▪ 태그 이름에는 head, title, div, h1, h2, h3 등이 있다.
▪ 노드는 내용과는 별개로 속성(attribute)를 갖는다. 속성은 HTML 요소
에 대한 추가적인 정보를 제공하는데 사용된다.
▪ 속성이름 = ‘값’ 형태로 나타낸다.
▪ <a>라는 태그에 href 속성에 뉴스 기사로 이동하는 url 링크가 담겨져
있다.
▪ 우리는 뉴스 기사 링크에 접근하기 위해 .attrib['href’] 를 사용했었다.
크롤링에 날개를 달아줘!
22. HTML Parsing
HTML에서 특정 부분을 추출하는 방식
CSS selector
① HTML 문서의 서식을 지정하기 위해서 사용됨
② 짧고 간단하게 특정 부분을 추출할 수 있음
Xpath
① 직접 노드로 접근하는 경로(path)를 지정함
② 복잡한 경로도 찾아갈 수 있음
23. CSS selector
(1) class 이름으로 선택 → . 사용
-> 태그가 <div> 인 엘리먼트 중에서 class = ‘div,news_text2018’
-> 점(.) 앞에 특정 태그를 넘겨주면, 해당 태그에 대해서만 선택한다.
-> div.news_text2018
(2) id 이름으로 선택 → # 사용
-> 태그가 <id> 인 엘리먼트 중에서 id = ‘article_txt’
-> id로 엘리먼트를 선택하면 #을 사용한다.
-> div#article_txt
24. Xpath
오른쪽 마우스 클릭
Copy
Copy XPath
손쉽게 Xpath 절대경로를 알아낼 수 있음
-> element.xpath(//*[@id="article_txt"])
일반화된 크롤러를 만들기 위해서는 Xpath에 대해서 이해하는 것이 도움이 됨
a 라는 노드에 접근하고 싶다
절대경로: /body/p/a
상대경로: //a
25. Web Crawling의 방식
1. 정적 크롤링
• 어느 상황에서나 같은 주소에서 변하지 않는 데이터를 기대할 수 있는 경우
• 수집 대상에 한계가 있으나 속도가 빠르다.
• 사용 모듈 – requests
2. 동적 크롤링
• 입력, 클릭 등 실제 브라우저에서 행하는 행동 들을 해야만 데이터를 수집할 수 있는 경우 (매크로와 매우 흡사)
• 수집 대상에 한계가 없으나 속도가 느리다
• 사용 모듈 – Selenium
• 사용 예시
* 두 가지 방법을 혼용 해서 쓰기도 함
26. Web Crawling 실습 – 동적 크롤링
selenium을 활용한 youtube 크롤링
① Selenium은 웹 브라우저를 제어해주는 라이브러리
② 크롤링이 어려운 사이트인 경우 Selenium 을 사용해 무적의 크롤러를 만들 수 있음
③ Selenium을 사용해 실제 웹 사이트를 제어하여 (like 매크로) 쉽게 크롤링할 수 있음
④ 실제 웹 브라우저를 띄우기 때문에 속도가 느리다는 단점이 있음
먼저, 크롬 웹드라이버를 다운로드 받는다.
링크 : 크롬 웹드라이버
27. Web Crawling 실습 – 동적 크롤링
selenium을 활용한 youtube 크롤링
작업 경로에 chromedriver.exe 를 넣어준다!운영 체제에 맞는 chromedriver를 설치한다.
28. Web Crawling 실습 – 동적 크롤링
selenium을 활용한 youtube 크롤링
Selenium library를 설치하고 크롬 브라우저를 연다. 빈 브라우저가 열린다
브라우저를 띄우는 시간이 있음으로 3초 정도 쉬어준다. Selenium을 통해 크롤러를 만들
때는 모든 코드가 유기적으로 움직여야 함으로 적절하게 시간을 제어해줘야 한다.
30. Web Crawling 실습 – 동적 크롤링
selenium을 활용한 youtube 크롤링
Css 선택자를 못찾겠다 싶으면
Copy Selector 방법을 써도 무관
크롬 브라우저에서
‘벤쯔’가 입력되는 것을 볼 수 있음
31. Web Crawling 실습 – 동적 크롤링
selenium을 활용한 youtube 크롤링
Copy Selector
Copy Selector
32. Web Crawling 실습 – 동적 크롤링
selenium을 활용한 youtube 크롤링
Title 이라는 속성에 제목 text가 존재함
불필요한 데이터가 일부 수집되긴 했지만,
우리가 필요한 데이터는 수집되었다.
필요한 데이터만 수집하려면,
Xpath를 이용해 정교하게 접근하면 된다.
(정교한 코드는 첨부파일로 제공 ^^ 직접 한번 해보세요)
33. 텍스트 마이닝
* TDM (= Term document matrix) – 단어 문서 행렬 : 문서 별로 등장한 단어의 빈도를 표(행렬) 형태로 나타낸 것
→ 자연어 텍스트를 컴퓨터가 인식할 수 있는 정형 데이터로 변환해줌
“오늘은 김치와 소고기를 먹어보겠습니다.”
“내일은 소고기 말고 참치를 먹어보겠습니다.”
오늘 김치 소고기 먹다
내일 소고기 참치 먹다
Tokenizing
오늘 김치 소고기 먹다
내일 소고기 참치 먹다
TDM
오늘 김치 소고기 내일 참치 먹다
1 1 1 0 0 1
0 0 1 1 1 1
한국어 토큰화에 사용되는 라이브러리들
→ Konlpy, Twitter, Worin, khaiii
34. TDM
* TDM (= Term document matrix) – 단어 문서 행렬 : 문서 별로 등장한 단어의 빈도를 표(행렬) 형태로 나타낸 것
→ 자연어 텍스트를 컴퓨터가 인식할 수 있는 정형 데이터로 변환해줌
오늘 김치 소고기 먹다
내일 소고기 참치 먹다
TDM
오늘 김치 소고기 내일 참치 먹다
1 1 1 0 0 1
0 0 1 1 1 1
1. 열의 개수 = 모든 문서에서 사용된 단어의 고유 값(두 문서
에서 겹치지 않는 단어는 총 6개임)
2. 자연어에서 사용되는 단어의 수는 매우 많다. 하지만, 하나
의 문서에서 사용되는 단어의 수는 제한적임 따라서 TDM
의 대부분의 칸의 값은 0이 됨 (희소 행렬)
3. 따라서 TDM에 여러 기법을 적용하면 분석이 어렵다. 이를
해결하기 위해 여러가지 방법을 사용함
4. 열합계를 구하면 문서에서 등장한 각 단어 별 빈도 수를 알
수 있다.
35. Tf-idf
Tf-idf (term frequency – inverse document frequency)
▪ 단순 빈도수를 나타내는 TDM은 성능이 좋지 않다. TDM에 tf-idf 가중치를 적용하면 성능을 높일 수 있음
▪ tf-idf 는 단어가 특정 문서에 얼마나 중요한지 나타내는 가중치 임
▪ 모든 문서에 등장하는 단어는 가중치가 낮음 (ex. 나는, 너는, 우리는, 요리를)
▪ 특정 문서에만 등장하는 단어는 가중치가 높음 (ex. 마라탕, 탕수육, 파프리카 소스)
▪ 한글의 경우 “나는” 이라는 단어는 거의 모든 문서에 등장하기 때문에 낮은 가중치를 받아 분석에서 제외될 수 있음
가중치 ➔ 분모가 커진다 = 단어 x를 포함하는 문서의 수가 많아진다
36. 텍스트 마이닝 개요
Web
Crawling DataBase
Text
Cleansing
Tokenizing
TDM
Word Embedding
Modeling
데이터 수집 데이터 저장
데이터 클린징
(불용어, 특수문자 제거)
명사 추출 컴퓨터가 인식할 수
있는 형태로 변환
원하는 과업 진행
37. 감정분석
데이터 불러오기 - 아마존 제품 리뷰 TDM (출처 : UCI 머신러닝 리포지토리 - Sentiment Labelled Sentences - amazon_cells_labelled.txt)
Column1 : 아마존 제품에 대한 리뷰
Column2 : 각 리뷰가 긍정 or 부정 (0 or 1) 인지
텍스트 데이터가 수집되고 지도학습을 할 수 있도록 labeling이 완료된 상태의 데이터
✓ 자연어 데이터 (비정형 데이터)를 컴
퓨터가 인식할 수 있도록 정형 데이터
로 바꿔줘야 한다.
✓ 정형 데이터로 변환하는 예시는 앞에
서 TDM이 있다.
✓ TDM에 tf-idf 가중치를 적용한 것도
자연어를 정형 데이터로 바꾸는 방법
중 하나이다.