1. 목적
여러 개의 텍스트 파일에서 많이 사용한 단어를 찾으려고 한다.
2. 준비: 설치
워드 클라우드를 구현해줄 수 있는 프로그램을 설치하고
conda install -c conda-forge wordcloud
라이브러리를 불러온다.
import numpy as np
from PIL import Image
from wordcloud import WordCloud
import matplotlib.pyplot as plt
3. 준비: 데이터 확인
행과 열로 구성된 데이터가 아닌, 워드 형식의 데이터인 경우 open 함수를 사용하고, 상세 텍스트를 읽을 수 있도록 text.read()까지 한다.
text = open('./data/Sequence_01.txt')
text = text.read()
데이터를 보면 줄 바꿈 기호(\n)가 있어 워드 클라우드를 만들면 줄 바꿈 기호가 가장 많이 나올 것 같으므로 공백으로 변환한다.
text = text.replace('\n', " ")
4. 준비: 데이터 가공
txt 파일은 총 14개이므로, 3번 작업을 14개 파일에 모두 적용할 수 있는 반복문을 작성한다.
1부터 15미만 사이의 숫자를 도는데
for number in range(1,15):
1, 2, 3 형태가 아니라 01, 02, 03 모양으로 바꾸되, 숫자 형식으로 나타내는 index 값을 정의하고
index = '{:02}'.format(number)
파일명에서 숫자 부분에다가 inext 값 넣어주고
filename = "Sequence_" + index + ".txt"
파일을 계속 열면서, 텍스트 형식에 따른 변환이 잘 될 수 있도록 하고
text = open('./data' + filename, 'r', encoding='utf-8-sig')
result = ""
4개 문장 위아래로 result 값 정의해서, 텍스트 파일 열고 변환한 다음에 사라지지 않게 result 값에다가 넣어주면서 합치고, 공백 변환
result += text.read().replace("\n", " ")
(또는 result += text 라고도 적을 수 있다)
아래와 같은 코드를 한 번에 실행한다.
5. 준비: 특수 문자 제거
정규식에 따라 특수 문자 제거하는 코드를 실행한다.
import re
pattern = '[^\w\s]'
text = re.sub(pattern=pattern, repl='', string=result)
기존에 정해진 문법 같은 것이므로 참고한다.
6. 워드 클라우드 생성
워드 클라우드이므로 어떤 글씨체를 사용할지가 중요한데
Font Manager라는 라이브러리를 활용해 불러올 수 있는 폰트 위치를 찾는다.
사용할 폰트를 정했으면, 먼저 폰트 위치를 입력해주고
font_path = '/System/Library/Fonts/Supplemental/AppleGothic.ttf'
워드 클라우드 모양(폰트, 색깔) 입력하고, 만들어 두었던 텍스트를 불러오고
wc = WordCloud(font_path=font_path, background_color="white")
wc.generate(text)
자세한 모양까지 설정하면 된다.
plt.figure(figsize=(50,50))
plt.axis("off")
plt.imshow(wc)
plt.show()
7. 나만의 워드 클라우드 생성
네모난 모양이 싫다면, 이미지를 불러와서 형태 안에 워드 클라우드를 만들 수 있다.
내가 원하는 이미지를 불러와서, 워드 클라우드를 생성한다.
mask = np.array(Image.open('./data/sparta.png'))
wc = WordCloud(font_path=font_path, background_color="white", mask=mask)
wc.generate(text)
f = plt.figure(figsize=(50,50))
plt.imshow(wc, interpolation='bilinear')
plt.title('나만의 워드 클라우드', size=40)
plt.axis("off")
plt.show()
마지막으로 원하는 위치에 저장하면, 파일로도 공유가 가능하다.
f.savefig('./data/myWordCloud.png')
'Python 입문' 카테고리의 다른 글
2023 점프 투 파이썬 - 2주차 (1) | 2023.07.02 |
---|---|
데이터 분석1-4. 요일/시간 분석 (0) | 2021.06.26 |
데이터 분석1-2. 이탈 분석 (0) | 2021.06.26 |
데이터 분석 1-1. 상권 분석 (0) | 2021.06.16 |
Matplotlib 연습 (0) | 2021.05.23 |