본문 바로가기
Data Science/R

[R] 텍스트 데이터를 통해 의미를 도출

by AI_Wooah 2022. 3. 1.

https://polar-comet-18d.notion.site/R-1888f9c1b8d44cb8b222c3d8fbe3c1f1

 

[R] 텍스트 데이터를 통해 의미를 도출

비정형 데이터의 중요성

polar-comet-18d.notion.site

비정형 데이터의 중요성

텍스트 분석의 종류

텍스트 분석 방법

빅데이터 시대에 폭발적으로 증가하는 데이터에는 비정형 데이터가 90% 이상이다.

오바마 선거본부 팀의 부동층 맞춤형 선거 캠페인이 효과가 좋았다.

텍스트 분석이란?

사람들이 남긴 뉴스, 댓글, sns글, 상품평, 커뮤니티 글 등을 분석해 가치와 의미가 있는 정보를 찾아내는 방법

자연어 처리

텍스트 분석은 문자로 표현된 언어를 컴퓨터로 분석하고 그 구조와 의미를 이해하고자 하는 자연어 처리 기술에 기반한다.

텍스트 분석의 절차

  • 텍스트 분석은 수집된 데이터에 대한 정제 작업을 거친 후 분석기법을 적용하여 수행한다.
  • 텍스트분석의 절차는
    • 텍스트 데이터 ⇒ 자연어 처리를 통한 데이터 정제 작업 반복 ⇒ 분석
  • 텍스트 데이터는 숫자 데이터처럼 정형화되어있지 않기 때문에 정제 작업은 고도화된 기술을 요구한다.

워드클라우드/감정분석/언어네트워크 분석

컴퓨터가 인간이 사용하는 언어를 심도있게 분석하기 위해서는 대용량 언어자원과 복잡한 통계적, 규칙적 알고리즘이 적용되어야 한다.

정형 데이터가 아닌 비정형 데이터 분석

텍스트에서 어떤 가치를 뽑아낼 수 있을까

## 문자 데이터 다루기

# 1) 데이터 불러오기기, character 유형으로 변호
travel
head(travel)
str(travel)

travel$date<-as.character(travel$date)
travel$destination<-as.character(travel$destination)
str(travel)

# 2) nchar 함수를 사용한 문자값의 길이 계산 
travel$destination_length<-nchar(travel$destination)
head(travel)

# 3) substr 함수를 사용한 문자 추출
travel$year<-substr(travel$date, 1, 4)
head(travel)

travel$month<-substr(travel$date, 6, 7)
head(travel)

# 4) paste 함수를 사용한 문자 붙히기
travel$year<-paste(travel$year,"년도",sep="")
travel$month<-paste(travel$month,"월",sep="")
travel$date2<-paste(travel$year,travel$month,sep="")
head(travel)

# 5) gsub 함수를 사용한 문자 대체
travel$month<-gsub("0","",travel$month)
head(travel)
## 텍스트 데이터 분석과 워드 클라우드

# 1) 패키지 불러오기
library(rJava)
library(koNLP)
library(RColorBrewer)
library(wordcloud)
library(plyr)
#library(RJSONIO)
library(twitteR)
library(tm)
library(ROAuth)
library(ggplot2) 

# 2)트위터 계정 접속
api_key <- '입력필요'
api_secret <- '입력필요'
access_token <- '입력필요'
access_token_secret <- '입력필요'
setup_twitter_oauth(api_key,api_secret,access_token,access_token_secret)

# 3) 트럼프 관련 트윗 수집
keyword <- enc2utf8("#트럼프")
result <- searchTwitter(keyword, since='2016-10-01',lang="ko",n=10000)

# 4) 문자에 해당하는 부분만 추출
result.df <- twListToDF(result)
result.text <- result.df$text

# 5) 정제 작업
result.text <- gsub("\\n", "", result.text)
result.text <- gsub("\\r", "", result.text)
result.text <- gsub("RT", "", result.text)
result.text <- gsub("http", "", result.text)
result.text <- gsub("CO", "", result.text)
result.text <- gsub("co", "", result.text)
result.text <- gsub("ㅋㅋ", "", result.text)
result.text <- gsub("ㅋㅋㅋ", "", result.text)
result.text <- gsub("ㅋㅋㅋㅋ", "", result.text)
result.text <- gsub("ㅠㅠ", "", result.text)
result_nouns <- Map(extractNoun, result.text)
result_wordsvec <- unlist(result_nouns, use.name=F)
result_wordsvec <- result_wordsvec[-which(result_wordsvec %in% stopwords("english"))]
result_wordsvec <- gsub("[[:punct:]]","", result_wordsvec)
result_wordsvec <- Filter(function(x){nchar(x)>=2}, result_wordsvec)

# 문자 카운팅
result_wordcount <- table(result_wordsvec)

# 6) 기초 탐색과 워드 클라우드 생성

# 30개 상위 키워드
head(sort(result_wordcount,decreasing = T),30)

# 10개상위 키워드 원도표
top<-head(sort(result_wordcount,decreasing = T),30)[1:10]
pie(top,col=rainbow(10),radius=1,main="트럼프 관련 트윗 상위 10개")

# 워드 클라우드 생성
windowsFonts(malgun=windowsFont("Arial"))
wordcloud(names(result_wordcount), freq=result_wordcount,scale=c(5,1), 
          min.freq=5, random.order=F,colors=brewer.pal(8,"Set2"), rot.per=.25,random.color = T)
반응형

'Data Science > R' 카테고리의 다른 글

[R] 데이터 시각화  (0) 2022.03.01
[R] 시계열 분석을 통한 미래 예측  (0) 2022.03.01
[R] 알짜 고객 분류  (0) 2022.03.01
[R] 이상거래 탐지  (0) 2022.03.01
[R] 데이터 형변환 및 합  (0) 2022.03.01

댓글