본문 바로가기
공부/R & Python

8-4. 텍스트마이닝2

by 드인 2020. 2. 17.

8-4. 텍스트마이닝2


6) 텍스트마이닝 : 함수

- 텍스트마이닝에서 사용되는 함수

crude[[1]] 데이터 : 첫번째 기사 (아래와 같은 XML파일 형태로 저장)

str(crude[[1]])
content(crude[[1]])
meta(crude[[1]])
lapply(crude, content)

 

- inspect 함수

inspect(crude[1:3]) 

각 파일에 char숫자
inspect(crude[[1]]) 

첫번째 파일의 내용을 보여줌

 

7) 텍스트마이닝 전처리 함수

- 텍스트 전처리

- 텍스트 전처리 : 문장부호 없애기 - tm)map(x, removePunctuation)

crude<-tm_map(crude, removePunctuation)
content(crude[[1]])

문장부호 제거 (. , "" '')

 

- 텍스트 전처리 : 숫자 제거 - tm_map(x, removeNumbers)

crude<-tm_map(crude, removeNumbers)
content(crude[[1]])

숫자 제거

 

- 텍스트 전처리 : stopwords 제거 - 언어별로 다름, 지정할 수 있음

crude<-tm_map(crude, function(x) removeWords(x,stopwords()))
content(crude[[1]])

that, it, had, its, for, by, The 제거

 

- 텍스트 전처리 : stopword 리스트

stopwords()

stopwords("en") 174개

stopwords("SMART") 517개

 

8) 텍스트마이닝 수행

- 문서행렬을 구성 : TermDocumentMatrix(문서이름)

tdm<-TermDocumentMatrix(crude)
inspect(tdm)

첫번째 파일 144번

crude 문서번호 144에 나오는 단어들의 빈도

 

- 문서행렬을 행렬로 변환

m<-as.matrix(tdm)
head(m)

dim(m)   [1] 962  20

행렬로 변환된 m에는 962개 단어의 빈도가 20개 파일에 대해 계산되어 있음

 

- 단어의 빈도 순서로 정렬

v<-sort(rowSums(m), decreasing=TRUE)
v[1:10]

각 단어에 대한 빈도의 합(행기준) 가장 높은것부터 [1:10]번까지

 

- 단어 이름빈도를 결합한 행렬을 데이터 프레임으로 저장

- crude관련기사 파일로부터 962개의 단어들을 분류하여 빈도를 계산

d<-data.frame(word=names(v), freq=v)
head(d)      가장 빈도가 높은 단어 6개
d[957:962, ] 가장 빈도가 낮은 단어 6개 

 

9) 텍스트마이닝 결과 그리기

- 빈도가 가장 높은 단어부터 그리기

#color displaying
install.packages('RColorBrewer')

 

wordcloud(d$word, d$freq)

pal <- brewer.pal(9,"BuGn")
pal <- pal[-(1:4)]
wordcloud(d$word,d$freq,c(8,.3),2,,FALSE,,.15,pal)

 

- 한글문서에서 텍스트마이닝

install.packages("KoNLP")
library(KoNLP)

useSejongDic (backup=T)

단계별로 filtering하는 방법은 유사

한글문서로 텍스트마이닝

 

10) 텍스트마이닝 데이터 저장소 : 참고

- tm패키지의 예제데이터와 저장소

tm.dir <- system.file ("texts", "txt", package = "tm")

 

tm.dir"D:/R/R-3.6.2/library/tm/texts/txt"

Crude 데이터 (tm패키지에 들어있는 예제데이터)