◾자연어 처리 설치
Windows, Python 3.8 기준
- JDK 다운로드 및 환경변수 설정
- pip install konlpy : 한글 자연어 처리
- pip install tweepy==3.10.0
- conda install -y -c conda-forge jpype1==1.0.2
- conda install -y -c conda-forge wordcloud
- conda install -y -c nltk
- conda install -y scikit-learn
- punkt, stopwords 다운로드
import nltk
nltk.download()
◾형태소 분석
- 한국어 자연어 처리 : konlpy
- 문장 - 어절 - 형태소 - 음절
- 형태소 : 언어의 최소 의미 단위
kkma 엔진
from konlpy.tag import Kkma
kkma = Kkma()
kkma.sentences("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F78582fb8-c573-4d48-84dc-4a20847c2a55%2Fimage.png)
kkma.nouns("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F3179e92c-2c4b-41e4-a4e4-9c628a10707b%2Fimage.png)
kkma.pos("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F1780d457-29d1-467e-91d6-10db62f39eba%2Fimage.png)
#### Hannanum 엔진
```python
from konlpy.tag import Hannanum
hannanum = Hannanum()
hannanum.analyze("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F9700d4ba-9175-45d3-84bf-c2be9256839a%2Fimage.png)
hannanum.morphs("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F6739faab-a4f6-4fd5-aca0-6784bc9e60da%2Fimage.png)
hannanum.nouns("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2Ff2bb66bd-fc0e-472b-94b2-b8fb092b8916%2Fimage.png)
hannanum.pos("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F8e51b5e7-d5e0-413c-8f20-1679fc2057ea%2Fimage.png)
from konlpy.tag import Okt
t = Okt()
t.nouns("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2Fdb429afd-e84e-4eeb-a563-75c14cbf620f%2Fimage.png)
t.pos("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2Ff5266962-9fd8-43be-bafb-acae7c8d5b6d%2Fimage.png)
t.phrases("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2Fa040e5a5-376d-44cb-8eb8-deea7db129c6%2Fimage.png)
t.morphs("한국어 분석을 시작합니다 재미있어요~~")
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F3f866f38-11bf-45de-b4ea-e043a4904e54%2Fimage.png)
◾워드클라우드 : 이상한 나라의 엘리스
워드클라우드
: 메타 데이터에서 얻어진 태그들을 분석하여 중요도나 인기도 등을 고려하여 시각적으로 늘어 놓아 웹 사이트에 표시하는 것
- 각 태그들은 그 중요도(혹은 인기도)에 따라 글자의 색상이나 굵기등 형태가 변함
- 워드클라우드는 단어의 빈도만 표현하는 방법
- 이상한 나라의 앨리스
- 본문에서 'said'가 많이 등장하므로 따로 stopword 처리
text = open('alice.txt').read()
alice_mask = np.array(Image.open("alice_mask.png"))
stopwords = set(STOPWORDS)
stopwords.add("said")
plt.figure(figsize=(8, 8))
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation="bilinear")
plt.axis('off')
plt.show()
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F8be01160-5497-4153-8ae1-f6aec489629e%2Fimage.png)
- generate를 생성하고
words_
를 확인하면 빈도가 있는 단어를 확인할 수 있다.
wc = WordCloud(
background_color="white", max_words=2000, mask=alice_mask, stopwords=stopwords
)
wc = wc.generate(text)
wc.words_
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2Fdf028da6-9908-434f-bb7f-2c7fa06e2b79%2Fimage.png)
plt.figure(figsize=(12, 12))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
![](https://velog.velcdn.com/images%2Fskarb4788%2Fpost%2F64f5c353-a63d-4632-a70a-a2e56ada2f39%2Fimage.png)