freesia

R언어 예제 ) 텍스트 데이터 분석하기 본문

Programming/R언어

R언어 예제 ) 텍스트 데이터 분석하기

freeesia 2021. 4. 20. 08:30
반응형

**2018년에 작성한 내용을 옮긴 글입니다.

 

 

1.RStudio 오른쪽 마우스 클릭 -> 관리자 권한으로 실행

2. 작업용 디렉터리를 먼저 지정한다.(C 드라이브에 RClass 폴더 생성)
*작업 디렉터리란 R을 사용할 때 필요한 데이터들을 모아 두는 장소.
  사용자가 임의의 폴더를 생성한 후 위 명령으로 지정하면 된다.

>setwd("c:\\RClass")

3.필요한 패키지를 설치 한 후 R  loading 한다.
> install.packages("KoNLP")
> install.packages("wordcloud")

> library(KoNLP)
> library(wordcloud)

> useSejongDic()

4.분석할 원본 데이터를 변수로 읽어 들인다.
*변수이름 <- 저장할 데이터
readLines(“대상파일명”) 명령으로 텍스트 파일에 있는 내용을 R 로 불러올 수 있습니다.
seoul_new.txt 이라는 파일이 RClass에 있는 상태
(이 때, seoul_new.txt 저장할때 인코딩을 UTF-8 로 저장한다.)

 



>data1 <- readLines("seoul_new.txt")

오른쪽 values에 seoul_new.txt파일의 내용이 data1의 변수안에 담겨진다.

5.데이터 중에서 명사만 골라낸 후 nouns 변수에 할당한다.
sapply: 벡터, 또는 행렬의 형태로 반환
sapply(X,FUN,..., simplify=T,USE.NAMES=T)
X:대상 리스트 객체
FUN:적용할 함수 명
...:함수에서 사용할 인수
simplify=T : 연산 결과를 벡터, 행렬 등 간단히 반환.
simplify=F : 연산 결과를 리스트로 반환.

USE.NAMES=T : 이름 속성도 반환.
USE.NAMES=T : 이름 속성 없이 반환.

> data2 <- sapply(data1,extractNoun,USE.NAMES=F)

data2의 데이터를 보면 리스트 형식으로 나오는데
[[305]] 는 305번째 리스트의 [1]은 첫번째 원소이다.

6.추출된 명사 30개만 출력해서 확인한다.
앞의 30개의 데이터를 리스트를 푼 상태의 벡터값으로 출력한다.

7.data2의 리스트를 푼 값들을 data3에 담는다.
>data3 <- unlist(data2)


8.원하지 않는 내용 걸러낸다.
gsub("변경전 글자","변경후 글자","원본데이터")
 
> data3 <- gsub("\\d+","", data3)
> data3 <- gsub("서울시","", data3)
> data3 <- gsub("서울","", data3) 
> data3 <- gsub("요청","", data3) 
> data3 <- gsub("제안","", data3)
> data3 <- gsub(" ","", data3)
> data3 <- gsub("-","",data3)

9.파일로 저장 한 후 테이블 형태로 변환하여 불러 들인다.
 RClass폴더에 seoul_2.txt 라는 파일이 생성된다. 
> write(unlist(data3),"seoul_2.txt")

10.수정 완료된 파일을 read.table 명령으로 다시 변수에 불러들인다.
공백 제거 -> read.table

> data4 <- read.table("seoul_2.txt")

공백 없어진거 확인!

11. 화면에 그래픽으로 출력하기 전에 단어가 몇개씩있는지 확인해본다.
>
wordcount <- table(data4)

12.단어의 수가 높은것부터 20개를 출력한다.
> head(sort(wordcount, decreasing=T),20)

> data3 <- gsub("OO","",data3)
> data3 <- gsub("개선","", data3)
> data3 <- gsub("문제","", data3)
> data3 <- gsub("관리","", data3)
> data3 <- gsub("민원","", data3)
> data3 <- gsub("이용","", data3)
> data3 <- gsub("관련","", data3)
> data3 <- gsub("시장","", data3)
>data3 <- gsub("역","", data3)
>data3 <- gsub("한","", data3)
>data3 <- gsub("님","", data3)
>data3 <- gsub("문","", data3)
>data3 <- gsub("적","", data3)
추가적으로 내용을 걸러낸다.

다시 파일을 생성후 단어수를 확인한다.
> write(unlist(data3),"seoul_3.txt")
> data4 <- read.table("seoul_3.txt")
> wordcount <- table(data4)
> head(sort(wordcount, decreasing=T),20)

 

반응형

'Programming > R언어' 카테고리의 다른 글

입출력  (0) 2021.04.24
R언어 예제 ) 영화 사이트 분석하기  (0) 2021.04.23
NA / 특정 위치 값 제어 (벡터) / matrix  (0) 2021.04.22
vector/list/dataframe/factor  (0) 2021.04.21
R언어란?  (0) 2021.04.19