'텍스트마이닝'에 해당되는 글 2건

  1. 2016.02.20 [미완성] 중국 sohu 크롤링 연습
  2. 2015.01.14 [텍스트 마이닝 연습] 2014 대통령 신년사 분석
반응형

1. 데이터 분석 목적

중국 메인 포털 사이트 중 하나인 sohu. 이중  "정책"색센의 글을 모아보려 한다.

이를 통해 최근 사이 중국 주요 정부 기관에서 발표한 정책의 변화를 알아보려한다.


2. 해당 URL:

#메인 페이지는 http://business.sohu.com/jrjg/index.shtml

#두 번째 페이지는 http://business.sohu.com/jrjg/index_322.shtml

#맨 마지막 100번째 페이지는 http://business.sohu.com/jrjg/index_224.shtml


3. 코딩 사례

library(httr)

library(rvest)

library(stringr)


for(i in 1:100){

shtml='.shtml'

  if(i==1){

url=sprintf('http://business.sohu.com/jrjg/index%s',shtml)

  }else{

page<-324-i

url=paste0('http://business.sohu.com/jrjg/index_',page,shtml)

  }

}


h<-read_html(url)

article.titles=html_nodes(h,'div.f14list ul li a') #문제점1

article.links=html_attr(article.titles,'href') #문제점1


titles=c()

contents=c()

dates=c()


for(link in article.links){

h.link=read_html(link)


#제목 추출

title=repair_encoding(html_text(html_nodes(h.link,'div.left

h1')),from='UTF-8') #문제점2

titles=c(titles,title)


#내용 추출 

content=repair_encoding(html_text(html_nodes(h.link,'div#contentText')),from='UTF-8')

contents=c(contents,content)


#날짜 추출

date=repair_encoding(html_text(html_nodes(h.link,'div.sourceTime')),from='UTF-8')

date=str_extract(date,'[0-9]+.[0-9]+.[0-9]+.') 

dates=c(dates,date)

}


result=data.frame(titles,contents,dates)

View(result) #문제점3


setwd('d:/temp/r_temp')

write.table(result,'sohu.csv',sep=',')

sohu<-read.csv('sohu.csv')#문제점3

sohu[1,] 


4. 코딩 후 문제점

1) 분명 URL을 긁을 때는 2016년 글이지만 article.titles=html_nodes(h,'div.f14list ul li a')  이후에는 2011년 8월 4일, 5일 글만 긁어진다. 

2) UTF-8로 했음에도 불구하고 유니코드 문제가 해결이 안된다. 페이지 소스에서 보니 GBK 중국어 간체로 되어 있어 GBK로 해보아도 글자가 깨져 보인다.

3) View(result) 를 통해서 첫번째 column에 숫자 1,2,3 이렇게 시작되는 걸 볼 수 있는데, 엑셀에서도 숫자가 보여 Column의 제목이 왼쪽으로 하나씩 밀려졌다. 

4) 크롤링 후 wordcloud 분석을 해야하는데 tmcn 패키지 설치가 안된다. 

> install.packages("tmcn")

Warning in install.packages :

  package ‘tmcn’ is not available (for R version 3.2.3)


공부를 좀 더 하여 위의 문제점을 개선하느데로 다시 업로드 할 예정.

포기하지 않고 될 때까지 계속 공부하면 된다라고 믿고, 계속 열심히 합시당.

반응형

'Python, R 분석과 프로그래밍' 카테고리의 다른 글

stars 함수 - 파이조각그림, 나이팅게일 차트  (0) 2016.05.24
R 회귀분석  (0) 2016.02.28
beer data 연습  (0) 2015.11.10
subset, mosiacplot, hist, var,sd  (0) 2015.10.31
dim, str, plot  (0) 2015.10.29
Posted by 마르띤
,
반응형

R 텍스트마이닝 연습. 책은 R까기 참고, 대상은 2014년 대통령 신년사(출처: 네이버 검색). 

> setwd("D:/temp/r_temp")


> library(KoNLP)

> library(wordcloud)


> useSejongDic()

> mergeUserDic(data.frame("청마","ncn")) #위 사전에 해당 단어 추가하는 과정

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("수자원공사","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("4대강","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("원전비리","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("시험성적서","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("코레일","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("벤처창업","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("창업경제타운","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("창조경제추진단","ncn"))

1 words were added to dic_user.txt. 

> mergeUserDic(data.frame("규제총량제","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("세계평화공원","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("유라시아","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("원스톱","ncn"))

1 words were added to dic_user.txt.

> mergeUserDic(data.frame("자유학기제","ncn"))

1 words were added to dic_user.txt.


> txt<-readLines("president_lastyear.txt") # txt라는 변수에 분석용 데이터를 변수로 읽기

> place<-sapply(txt,extractNoun,USE.NAMES=F) #txt파일에서 공백을 기준으로 조사해 명사만 찾아 place라는 변수에 저장

> head(unlist(place),30) #추출된 명사를 30개만 출력하여 확인

> c<-unlist(place) # 필터링을 위해 unlist 작업을 지정해서 저장

> place<-Filter(function(x){nchar(x)>=2},c) #두 글자 이상 되는 것만 필터


> place<-gsub(" ","",place) # gsub 함수를 이용하여 불필요한 단어 삭제

> place<-gsub("해서","",place)

> place<-gsub("하기","",place)

> place<-gsub("들이","",place)


> write(unlist(place),"president_lastyear_2.txt") #파일로 저장한 후 테이블 형태로 변환

> rev<-read.table("president_lastyear_2.txt") #수정 완료된 파일을 table 형식으로 변환하여 다시 변수에 불러드림

> nrow(rev) #rev변수에 데이터가 몇 건이 있는지 조회

[1] 819

> wordcount<-table(rev) #rev변수의 값을 table형태로 변환해서 wordcount라는 변수에 할당

> head(sort(wordcount,decreasing=T),30) #빈도수 상위 30개, 많은 순으로 정렬

> library(RColorBrewer) #칼러 불러오기

> palete<-brewer.pal(9,"Set1") #색깔 지정

> wordcloud(names(wordcount),freq=wordcount,scale=c(5,1),rot.per=0.25,min.freq=3,random.order=F,random.color=T,colors=palete)#최소 3회 언급 인쇄

> savePlot("2014president_newyearmessage.png",type="png") #그림으로 저장



반응형
Posted by 마르띤
,