[R] 텍스트 마이닝: 환경설정

이현지·2024년 8월 26일

R/머신러닝/딥러닝

목록 보기
10/16

텍스트 마이닝(Text Mining)

  • 문자로 된 데이터에서 가치 있는 정보를 얻어 내는 분석 기법

  • sns나 웹 사이트에 올라온 글을 분석해서 사람들이 어떤 이야기를 나누고 있는지 파악할 때 자주 사용

  • 형태소 분석(Morphology Analysis) :
    문장을 구성하는 어절들이 어떤 품사로 되어있는지 분석

분석절차

  1. 형태소 분석
  2. 명사, 동사 형용사 등의 의미를 지닌 품사 단어를 추출
  3. 빈도표 만들기
  4. 시각화
  • 텍스트 마이닝을 하려면 JAVA 설치가 필요하다.

데이터의 종류

1. 정형 데이터
여러 행과 열로 이루어진 표준 테이블 형식 분석 및
머신러닝 알고리즘에 적합하고 처리에 용이하다.

2. 비정형 데이터
사전에 정의된 데이터 형식이 없는 데이터소셜 미디어나
제품 리뷰같은 소스의 텍스트,
데이터베이스의 요구사항을 충족하기에는 정형성이 부족한 데이터
ex) 텍스트, 댓글, 리뷰, 비밀번호 데이터

3. 반정형 데이터
정형 데이터 비정형 데이터의 형식이 혼합된 데이터,
어느정도 체계화는 되어 있지만,
관계형 데이터베이스의 요구사항을 충족하기에는 정형성이 부족한 데이터
ex) XML, JSON, HTML

-> 전 세계에서 데이터의 약 80%가 비정형 데이터 형식이므로,
텍스트 마이닝은 현업에서 매우 중요한 프로세스

텍스트 마이닝 환경 설정법

1. JAVA 설치

2. 시스템 환경 변수 편집

3. Konlp 패키지 설치 - 한글어 처리 패키지

4. 그 외 의존성 패키지 설치

install.packages('rJava')

install.packages('memoise')

install.packages('Konlp')

설치가 안될 경우 아래 방법을 이용한다.

5. git 에서 konlp 가지고 오기 02:44

install.packages('devtools')

devtools :: install_github('haven-jeon/KoNLP')

Sys.setenv(JAVA_HOME = 'C:/Program Files/Java/jdk-11.0.12')

install.packages('rJava')

library(rJava)

library(KoNLP)

6. 3번 과정이 안된다면 Konlp 수동 설치 후 확인

useNIADic() # 사전 로드

extractNoun('안녕하세요 R을 공부중입니다.') # 형태소 분석기

예제 데이터 로드

txt <- readLines('sung.txt')

txt

특수문자 제거

install.packages('stringr')

library(stringr)

txt <- str_replace_all(txt, '\W',' ') # \W : 특수문자
txt

가장 많이 사용된 단어를 확인

1. 명사 추출

library(KoNLP)

nouns <- extractNoun(txt)

nouns

2. 추출한 명사 list를 문자열 벡터로 전환, 단어별로 빈도 생성

wordcount <- table(unlist(nouns))

wordcount

df_word <- as.data.frame(wordcount, stringsAsFactors = F)
df_word

3. 변수명 수정

library(dplyr)

df_word <- rename(df_word,
word = Var1,
freq = Freq)
head(df_word)

4. 자주 사용된 단어 빈도표 생성 ( 두 글자 미만은 제외 )

df_word <- filter(df_word, nchar(word) > 2)

head(df_word)

tail(df_word)

5. 빈도 기준으로 정렬 후 상위 20개 추출

top20 <- df_word %>%arrange(desc(freq)) %>% head(20)

top20

워드 클라우드 - 단어 구름 시각화

install.packages('wordcloud')

library(wordcloud)

워드 클라우드를 생성하는 데 필요한 wordcloud 패키지를 로드합니다.

library(RColorBrewer) # 글자 색 표현 패키지

다양한 색상 팔레트를 제공하는 RColorBrewer 패키지를 로드합니다.
워드 클라우드에서 단어 색상을 설정하는 데 사용됩니다.

1. 단어 색상 목록 코드

a <- brewer.pal.info

팔렛트 확인

a

pal <- brewer.pal(8, 'Dark2')

Dark2 색상 목록에서 8개 색상 추출

2. 난수 고정

  • 워드 클라우드가 실행될 때마다 동일한 워드 클라우드 생성

set.seed(1234)

난수를 고정하기 위해 사용됩니다.
워드 클라우드를 여러 번 생성해도 동일한 결과를 얻을 수 있도록 합니다.

3. 워드 클라우드 생성

wordcloud(words=df_wordword, # 단어 입력 freq = df_wordfreq, # 빈도 입력
min.freq = 2, # 최소 단어 빈도
max.words = 200, # 표현 단어 수
random.order = F, # 고빈도 단어를 중앙에 배치
scale=c(5, 0.5), # 단어 크기 범위
colors = pal) # 색상

wordcloud():
워드 클라우드를 생성하는 함수입니다.

words = top20$word:
단어 리스트를 입력합니다.
top20 데이터프레임의 word 열을 사용합니다.

freq = top20$freq:
단어의 빈도를 입력합니다.
top20 데이터프레임의 freq 열을 사용합니다.

min.freq = 2:
최소 단어 빈도를 2로 설정합니다.
빈도가 2 미만인 단어는 표시되지 않습니다.

max.words = 200:
최대 200개의 단어를 표시하도록 설정합니다.
그러나 이 코드에서는 10개의 단어만 사용되었습니다.

random.order = FALSE:
빈도가 높은 단어를 중앙에 배치하도록 설정합니다.

scale = c(5, 0.5):
단어 크기의 범위를 설정합니다.
가장 빈도가 높은 단어는 크기 5로,
가장 낮은 단어는 크기 0.5로 표시됩니다.

colors = pal:
단어의 색상을 pal 변수에 저장된 색상 팔레트를 사용해 지정합니다.

profile
관심분야: 추천시스템, 자연어처리, 머신러닝, 딥러닝

0개의 댓글