관련 용어
1) 웹 크롤링
웹 코롤링(web crawling): 웹을 탐색하는 컴퓨터 프로그램(크롤러)를 이용하여 여러 인터넷 사이트의 웹 페이지 자료를 수집해서 분류하는 과정
크롤러(crawler): 자동화된 방법으로 월드와이드 웹(www)을 탐색하는 컴퓨터 프로그램
2) 스크래핑
스크래핑(scraping)이란 웹사이트이 내용을 가져와 원하는 형태로 가공하는 기술.
웹사이트의 데이터를 수집하는 모든 작업. 크롤링도 스크래핑 기술의 일종.
3) 파싱
파싱(parsing): 어떤 페이지(문서, HTML 등)에서 사용자가 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보를 가공하는 것.
HTML 소스를 문자열로 수집한 후 실제 HTML 태그로 인식할 수 있도록 문자열을 의미있는 단위로 분해하고, 계층적인 트리 구조를 만드는 과정
(1) 패키지 설치 및 준비
실습: 웹 문서 요청과 파싱 관련 패키지 설치 및 로딩
install.packages("httr")
library(httr)
install.packages("XML")
library(XML)
(2) url 요청
실습: 웹 문서 요청
url <- "http://media.daum.net"
web <- GET(url)
(3) HTML 파싱
실습: HTML 파싱하기
html <- htmlTreeParse(web, useInternalNodes = T, trim = T, encoding = "utf-8")
rootNode <- xmlRoot(html)
(4) 태그(tag) 자료 수집
실습: 태그 자료 수집하기
news <- xpathSApply(rootNode, "//a[@class = 'link_txt']", xmlValue)
news
실습: 자료 전처리하기
단계 1: 자료 전처리 - 수집한 문서를 대상으로 불용어 제거
news_pre <- gsub("[\r\n\t]", ' ', news)
news_pre <- gsub('[[:punct:]]', ' ', news_pre)
news_pre <- gsub('[[:cntrl:]]', ' ', news_pre)
# news_pre <- gsub('\\d+', ' ', news_pre) # corona19(covid19) 때문에 숫자 제거 생략
news_pre <- gsub('[a-z]+', ' ', news_pre)
news_pre <- gsub('[A-Z]+', ' ', news_pre)
news_pre <- gsub('\\s+', ' ', news_pre)
news_pre
단계 2: 기사와 관계 없는 'TODAY', '검색어 순위' 등의 내용은 제거
news_data <- news_pre[1:59]
news_data
(6) 파일 저장 및 읽기
실습: 수집한 자료를 파일로 저장하고 읽기
setwd("C:/Users/tj-bu/Documents/Rwork/")
write.csv(news_data, "news_data.csv", quote = F)
news_data <- read.csv("news_data.csv", header = T, stringsAsFactors = F)
str(news_data)
names(news_data) <- c("no", "news_text")
head(news_data)
news_text <- news_data$news_text
news_text
(7) 토픽분석
실습: 세종 사전에 단어 추가
user_dic <- data.frame(term = c("펜데믹", "코로나19", "타다"), tag = 'ncn')
buildDictionary(ext_dic = 'sejong', user_dic = user_dic)
실습: 단어 추출 사용자 함수 정의하기
단계 1: 사용자 정의 함수 작성
exNouns <- function(x) { paste(extractNoun(x), collapse = " ")}
단계 2: exNouns() 함수를 이용하어 단어 추출
news_nouns <- sapply(news_text, exNouns)
news_nouns
단계 3: 추출 결과 확인
str(news_nouns)
'R > 텍스트마이닝' 카테고리의 다른 글
[텍스트마이닝] 의미망 분석 문제풀이 (1) | 2022.11.22 |
---|---|
[텍스트마이닝] 상대적으로 중요한 단어 비교하기 (0) | 2022.11.21 |
[텍스트마이닝] 단어 빈도 비교하기 (0) | 2022.11.21 |
[텍스트마이닝] 형태소 분석 관련 연습문제 (0) | 2022.11.18 |
[텍스트마이닝] 단어 빈도 분석 관련 연습문제 (0) | 2022.11.18 |