Kiwipiepy
- 한국어 형태소 분석기인 Kiwi(Korean Intelligent Word Identifier)의 Python 모듈
pip install kiwipiepy
Kiwipiepy의 장점
1. 텍스트 분석 속도

- 텍스트 분석 속도가 Mecab(IOS) 다음으로 제일 빠르다는 것을 알 수 있다.
2. 모호성 해소 정확도

- 속도면에서 압도적이었던 Mecab이 모호성 해소 부분에서 성능이 떨어지지만 kiwipiepy는 90%에 준하는 성능을 보여준다.
3. 문장 분리 정확도

- 문장 분리 기능을 비롯한 다양한 편의 기능을 제공한다.
워드 클라우드 명사, 동사, 형용사 만들기
과제 목록
- 유튜브 댓글 크롤링한 csv 파일의 댓글 텍스트를 텍스트로 쓴다.
- 명사, 동사, 형용사별로 분리하는 kiwi 함수를 만든다.
- 워드 클라우드를 이용해 시각화한다.
1. 댓글 텍스트 불러오기
import pandas as pd
# csv파일을 읽어 데이터프레임으로 나타낸다.
comment_file = pd.read_csv("C:/Users/pps/Desktop/TIL/youtube_comments_crawling.csv", encoding= 'utf-8')
# 댓글텍스트 column을 리스트로 변환한다.
comment_list = comment_file['댓글텍스트'].to_list()
# 문자열 만들기(중간에 숫자가 껴 있는 경우)
comment_string = ''.join(str(s) for s in comment_list)2. 명사, 동사, 형용사별로 분리하는 각각의 함수 만들기
Reference
명사
- 참고
# kiwi의 Analyze함수 형태
[([Token(form='김하성', tag='NNP', start=0, len=3)])]
# kiwi 명사 추출 함수
from kiwipiepy import Kiwi
kiwi = Kiwi()
def kiwi_noun_extractor(text):
results = []
result = kiwi.analyze(text)
# token = 단어 이름, pos = 태그 이름
for token, pos, _, _ in result[0][0]:
# kiwi의 태그 목록 체언:
# NNG: 일반 명사, NNP: 고유 명사, NNB: 의존 명사, NR: 수사, NP: 대명사
if len(token) != 1 and pos.startswith('N'): #or pos.startswith('SL'):
results.append(token)
return results동사
# kiwi 동사 추출 함수
def kiwi_verb_extractor(text):
results = []
result = kiwi.analyze(text)
for token, pos, _,_ in result[0][0]:
# kiwi의 태그 목록 용언:
# VV: 동사
if len(token) != 1 and pos.startswith('VV'):
results.append(token)
return results형용사
# kiwi 형용사 추출 함수
def kiwi_adj_extractor(text):
results = []
result = kiwi.analyze(text)
for token, pos,_,_ in result[0][0]:
# kiwi의 태그 목록 용언:
# VA: 형용사
if len(token) != 1 and pos.startswith('VA'):
results.append(token)
return results워드 클라우드를 이용한 시각화
- 대표적으로 명사만 시각화하겠다.
명사
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter
def wc_kiwi_noun(noun_text):
cnt = len(noun_text)
counts = Counter(noun_text)
tags_Nkiwi = counts.most_common(cnt)
wc_k = WordCloud(font_path='C:/Users/pps/AppData/Local/Microsoft/Windows/Fonts/NanumBarunGothic.ttf', background_color='white', width=800, height=600)
cloud_kiwi = wc_k.generate_from_frequencies(dict(tags_Nkiwi))
plt.figure(figsize = (10, 8))
plt.axis('off')
plt.imshow(cloud_kiwi)
return plt.show()word_cloud_noun_kiwi = wc_kiwi_noun(nouns_kiwi)- 결과값
