티스토리 뷰
pip install newspaper3k
모듈 newspaper3k를 설치해준다. newspaper는 웹 기사를 끌어와 문장을 추출해 주는 모듈이다.
from newspaper import Article
article = Article('https://en.wikipedia.org/wiki/Lifelong_learning')
article.download()
article.parse()
영문 위키피디아에서 lifelong education을 검색하면 lifelong learning으로 자동 연결된다.
article.text
제대로 끌어오는지 확인할 수 있음.
from wordcloud import WordCloud
import matplotlib.pyplot as plt
matplotlib과 wordcloud를 가져오자.
wc = WordCloud()
wc.generate(article.text)
plt.imshow(wc, interpolation="bilinear")
plt.axis('off')
plt.show()
interpolation이 무엇인지에 대해서는 좀더 공부를 해봐야겠다.
axis를 on하면 별로 안 예쁜 게 생기니까 꼭 off해 주기.
from wordcloud import STOPWORDS
불용어 처리를 위해서 stopwords를 가져오자.
wc = WordCloud(background_color="white", max_words=2000, stopwords=STOPWORDS, max_font_size=256, random_state=42, width=500, height=500)
wc.generate(article.text)
plt.imshow(wc, interpolation="bilinear")
plt.axis('off')
plt.show
background color 배경색 / max_words 빈출 단어를 최대 몇 개까지 셀 것인지 / stopwords 불용어 목록 / max_font_size 최대 글꼴 크기 / random_state 난수 고정을 위한 초깃값 설정 / width, height 가로세로
font_path = 'NIAGENG.ttf'
wc = WordCloud(stopwords=STOPWORDS, font_path=font_path, background_color="white", max_words=2000, max_font_size=256, random_state=42)
wc.generate(article.text)
plt.imshow(wc, interpolation="bilinear")
plt.axis('off')
plt.show()
plt.savefig('wordcloud.png')
미리보기 없이 아무 폰트나 대충 눈에 보이는 거 가져왔는데 예뻐서 놀람.
여하튼 font_path로 폰트를 바꿀 수 있다. 한국어도 가능.
내가 하려는 건 이 워드클라우드를 특정한 이미지 위에 마스킹하는 것이다.
이미지를 불러올 때는 조건이 있는데, 배경이 흰색이어야 한다. 투명화는 불가능하다. 투명화된 부분을 검정으로 인식하기 때문.
from PIL import Image
import numpy as np
이제는 익숙해진 numpy를 부른다.
mask = np.array(Image.open('map.png'))
wc = WordCloud(stopwords=STOPWORDS, font_path=font_path, mask=mask, background_color="white", max_words=2000, max_font_size=256, random_state=42, width=mask.shape[1], height=mask.shape[0])
wc.generate(article.text)
plt.imshow(wc, interpolation="bilinear")
plt.axis('off')
plt.show()
나는 부산지역 지도를 map.png로 불러와서 마스킹했다.
그럼 이제 색깔을 약간 커스텀해보자.
from wordcloud import ImageColorGenerator
컬러 제너레이터를 꺼내서,
def multi_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
colors=[[4, 77, 82], [25, 74, 85], [82, 43, 84], [158, 48, 79]]
rand = random_state.randint(0, len(colors)-1)
return "hsl({}, {}%, {}%)".format(colors[rand][0], colors[rand][1], colors[rand][2])
위와 같은 함수를 정의해 준다.
두 번째 줄에 들어가는 숫자는 HSV 코드니까 원하는 컬러로 적당히 바꿔도 된다.
컬러코드 차트는 여기서.
wc = WordCloud(stopwords = STOPWORDS, font_path=font_path,
mask=mask, background_color="white",
max_words=2000, max_font_size=256,
random_state=42, width=mask.shape[1],
height=mask.shape[0], color_func=multi_color_func)
wc.generate(article.text)
plt.imshow(wc, interpolation="bilinear")
plt.axis('off')
plt.show()
plt.savefig('savefig_default.png')
savefig 함수로 방금 만든 그림을 저장할 수 있다.
'공부 > Python' 카테고리의 다른 글
20201215~17 DAY29~32 이미지 분류기 만들기 (0) | 2020.12.14 |
---|---|
20201207 mapboxgl로 시각화 연습 (0) | 2020.12.07 |
20201126 DAY20 scatter matrix (0) | 2020.11.26 |
20201124 DAY19 데이터 시각화 그래프 예제 (0) | 2020.11.25 |
20201124 DAY18 외부 데이터 가져오기 예제 (0) | 2020.11.24 |
- Total
- Today
- Yesterday
- 이력서
- 깃허브
- 커리어코칭
- 이자포스터디
- 빅분기후기
- Notion2Tistory
- 데이터과학
- 코드스테이츠
- data annotation
- 인공지능
- 개발자포트폴리오
- 코테공부
- googlecolab
- ai부트캠프
- ADsP
- 빅데이터
- todayIlearned
- 빅데이터분석기사
- 데이터준전문가
- 빅분기
- 자격증
- 빅분기합격
- 취업준비
- 데이터준전문가합격후기
- Kaggle
- 자버
- ADsP합격후기
- 데이터분석
- Til
- github
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |