본문 바로가기

정보

N-Gram 댓글 분석 │R 한글 텍스트 마이닝 │어린이 자외선 차단제 선크림


N-Gram은 말 그대로 N개의 연속적인 단어들의 나열을 뜻합니다. 코퍼스에서 N개의 단어로 나누고 이를 하나의 토큰으로 간주합니다. 여기서 N이 한 개 일 때는 유니그램(unigram), 두 개일 때는 바이그램(bigram, 세 개일 때는 트라이그램(trigram)이라고 하는데요. 이번 포스팅에서는 어린이 자외선 차단제 댓글들을 이용하여 N-Gram 분석 방법과 결과를 각각 정리하여 공유하겠습니다. 물론 분석에 이용한 댓글들과 R 한글 텍스트 마이닝 코드는 포스팅 하단에 업로드해 두었습니다. 관심 있는 분들은 각각 내려받은 후, 순서대로 따라 해 보시기 바랍니다. 

 

어린이 자외선 차단제 선크림 선블록│댓글 분석 │LDA 토픽 모델링 │R 한글 텍스트 마이닝

지난 포스팅에서는 어린이 자외선 차단제 댓글들을 이용하여 품사분석, 전처리 그리고 빈도분석까지 실행해 보았습니다. 이번 포스팅에서는 이어서 잠재 디리클레 할당(Latent Dirichlet Allocation,

e-datanews.tistory.com

 

댓글 분석 │어린이 자외선 차단제 선크림 사례│R 한글 텍스트 마이닝

댓글 분석 방법에 관하여 정리하여 공유합니다. 분석 도구는 R을 이용하며, 분석 대상은 국내 어린이 자외선 차단제(혹은 선크림) 중 화장품 전문 리뷰 어플인 글로우픽에서 임의로 하나를 골랐

e-datanews.tistory.com

 

R 아마존 고객 리뷰 N-gram 분석 │상관 관계 분석 │Read reviews that mention

텍스트 마이닝 분석 방법 중 단어 간의 상관관계와 n-gram 분석을 간단히 실습해보겠습니다. 특히 아마존 리뷰 전에 read reviews that mention라는 부분이 있습니다. 해당 부분이 이번 포스팅에서 다룰 n

e-datanews.tistory.com

 

1. N-Gram 분석을 위한 R 패키지 로드

패키지 중 tidytext 패키지가 추가로 필요합니다. 

install.packages("tidytext")
library(tidytext)

 

2. 2-Gram 생성 및 확인 

먼저 unnest_tokens() 함수의 token = "ngrams", n=2 옵션을 통해 2-Gram(bi-Gram)을 생성합니다. 

bigram_reviews <- naverq_reviews %>%
  unnest_tokens(input = reviews, output = bigram,token = "ngrams", n = 2)  # 2-gram 생성

 

3. 불용어 제거

separate() 함수를 이용하여  bigram을 단어별로 분리한 뒤, 불용어를 제거하고 unite()로 다시 bigram을 만듭니다. 

stopwords <- c("글로우픽")  # 필요시 불용어 추가
bigram_filtered <- bigram_reviews %>% separate(bigram, into = c("word1", "word2"), sep = " ") %>%
  filter(!word1 %in% stopwords, !word2 %in% stopwords) %>% unite(bigram, word1, word2, sep = " ")

 

4. 2-Gram 빈도수 계산 및 상위 2--Gram 확인 

count()를 통해 각 bi-Gram의 빈도수를 계산하고, 빈도 수가 1 이하인 경우 필터링한 후, 상위 20개 bi-Gram을 출력합니다. 

bigram_counts <- bigram_filtered %>% count(bigram, sort = TRUE) %>% filter(n > 1)  
# 빈도수 1 이하 제거 (필요에 따라 조정 가능)
print(head(bigram_counts, 20))

 

5. 시각화: 막대그래프 생성

상위 20개의 bi-Gram을 막대그래프로 시각화하였고, 이전 포스팅에서 출력했던 uni-Gram 결과와 비교해 보았습니다. 

top_bigrams <- bigram_counts %>% head(10)
ggplot(top_bigrams, aes(x = reorder(bigram, n), y = n)) +
  geom_col() +  coord_flip() +  labs(title = "2-gram 빈도 분석", x = "2-gram", y = "빈도") + theme_minimal()

유니그램(왼쪽)과 바이그램(오른쪽) 분석 결과 시각화
유니그램(왼쪽)과 바이그램(오른쪽) 분석 결과 시각화

 

6. 2-Gram 워드 클라우드 생성

bi-Gram 단어를 이용하여 워드클라우드를 생성하는 R코드와 각 옵션들의 의미는 각각 아래와 같습니다. 또한 앞서 uni-Gram 기반의 워드클라우드 생성 결과도 함께 제시하여 생성 결과의 차이를 비교해 보았습니다. 

set.seed(1234)  # 재현성을 위한 시드 설정
wordcloud(
  words = bigram_counts$bigram, # 2-gram 단어
  freq = bigram_counts$n, # 빈도수
  scale = c(5, 0.5),  # 글자 크기 (최대, 최소)
  max.words = 100, # 최대 표시 단어 수
  random.order = FALSE, # 빈도수 순으로 정렬
  rot.per = 0.15, # 회전 비율
  colors = brewer.pal(8, "Dark2") # 색상 팔레트
)

유니그램(왼쪽)과 바이그램(오른쪽) 워드클라우드 생성 결과 비교
유니그램(왼쪽)과 바이그램(오른쪽) 워드클라우드 생성 결과 비교

 

아마존 가짜 거짓 리뷰 확인 방법 : 어린이 선크림│reviewmeta.com

이전 포스팅에서는 아마존에서 구매 가능한 유아 어린이 선크림(sunscreen) 제품들을 살펴보았습니다. 이번 포스팅에서는 이어서 리뷰 메타를 이용하여 유아 어린이 자외선 차단제 중 상품 하나를

e-datanews.tistory.com

 

2022 어린이 아기 선크림 아마존 추천 │미국 피부과 의사 추천 상품

이번 포스팅에서는 미국 피부과 의사들이 추천하고, 아마존 US에서 구매 가능한 어린이 선크림 6개 품목을 정리하겠습니다. 해당 원문은 뉴욕 메거진 the Strategist의 2019년 기사를 참고했으며, 이

e-datanews.tistory.com

 

아마존 재팬 일본 고객 불만 리뷰 텍스트 마이닝 │2022 어린이 선크림

아마존 재팬의 고객들은 어린이 선크림에 대하여 어떤 불만들을 갖고 있는지 분석해 보고자 합니다. 이를 위해 SPF 30, PA++ 품목들 중 고객 평점 4점 이상, 리뷰 건수 100건 이상인 품목들 중에서 고

e-datanews.tistory.com

 

7.  어린이 자외선 차단제 댓글 및 R 코드 다운로드 

이번 포스팅에서는 이전 포스팅에 계속 이어서 어린이 자외선 차단제 댓글들을 이용하여 N-Gram 분석 방법과 결과를 각각 정리하여 공유하였습니다. 이번 포스팅에서 활용한 댓글을 모은 엑셀 파일과 R 코드는 아래와 같습니다. 필요한 분들은 각각 내려받은 후, 테스트해 보시기 바랍니다. 

sun.xlsx
0.01MB

n gram 댓글 분석│ R 한글 텍스트 마이닝.txt
0.00MB