자연어 처리 글에서 꼭 한 번씩 보이는 워드 클라우드(Word Cloud)
* 워드 클라우드 또는 태그 클라우드란 데이터의 중요도나 인기도를 고려하여 2차원으로 시각화한 것을 말한다(출처 위키백과).
프로젝트에서 한글 데이터를 다루면서 처음으로 사용해봤다. 우선 결과물부터 보자.
사용한 데이터는 Korean HateSpeech Dataset으로 편견, 혐오 표현, 모욕에 대한 한국어 온라인 뉴스 댓글 데이터셋이다. 시각화에는 데이터셋 중에서도 Gender-related bias 특성이 True로 라벨링 된 데이터를 사용했다.
시각화
*모든 코드는 코랩 환경에서 실행했다.
사용한 데이터셋이 문장으로 되어 있었기 때문에, 시각화에 앞서 형태소 분석기로 명사만 추출했다. 형태소 분석기로는 Mecab을 사용했다.
true_data.head()
word cloud생성에는 아래 코드를 사용했다.
from wordcloud import WordCloud
wordcloud = WordCloud(font_path='NanumBarunGothic')
# true label에 대한 word cloud 생성
wc_true = wordcloud.generate(' '.join(true_data['nouns']))
plt.figure(figsize=(10, 10))
plt.imshow(wc_true, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()
출력 결과는 다음과 같다.
여기서 끝내면 약간 아쉬우니 맨 처음 이미지처럼 마스크도 추가해보자. 우선 마스크로 사용할 이미지를 준비해야한다. 이때 이미지의 배경이 흰색인지 꼭꼭 확인하자(이것 때문에 한참을 헤맸다).
그리고 앞선 코드에서 마스크 관련 코드를 추가하면 끝. 배경색도 코드로 간단하게 바꿀 수 있다.
from wordcloud import WordCloud
from PIL import Image
bubble_mask = np.array(Image.open('/content/drive/MyDrive/project4/speech-bubble.PNG'))
wordcloud = WordCloud(font_path='NanumBarunGothic',
mask=bubble_mask,
background_color='white')
# true label에 대한 word cloud 생성
wc_true = wordcloud.generate(' '.join(true_data['nouns']))
plt.figure(figsize=(10, 10))
plt.imshow(wc_true, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
텍스트 데이터를 시각화할 때 자주 사용할 것 같다. 참고 자료는 아래 확인👇
워드 클라우드 깃허브
Korean HateSpeech Dataset 깃허브
코랩 한글 깨짐 해결법
'Code States AI' 카테고리의 다른 글
[코드스테이츠/개인프로젝트] 알라딘 베스트셀러 데이터를 사용한 콘텐츠 기반 책 추천 웹 애플리케이션 제작📚 (6) | 2022.03.01 |
---|---|
[코드스테이츠/개인프로젝트] 2주 프로젝트를 앞둔 심정과 계획들😇 (2) | 2022.02.14 |
[PYTHON/파이썬] KoBERT를 사용한 온라인 뉴스 악성 댓글 데이터 이진 분류 (2) | 2022.01.15 |