<jupyter_start><jupyter_text>KoNLPy 한국어 처리 패키지 KoNLPy(코엔엘파이라고 읽는다)는 한국어 정보처리를 위한 파이썬 패키지이다.<jupyter_code>import warnings
warnings.simplefilter("ignore")

import konlpy
konlpy.__version__<jupyter_output><empty_output><jupyter_text>한국어 말뭉치 KoNLPy에서는 대한민국 헌법 말뭉치인 `kolaw`와 국회법안 말뭉치인 `kobill`을 제공한다. 각 말뭉치가 포함하는 파일의 이름은 `fields` 메서드로 알 수 있고 `open` 메서드로 해당 파일의 텍스트를 읽어들인다.<jupyter_code>from konlpy.corpus import kolaw
kolaw.fileids()
c = kolaw.open('constitution.txt').read()
print(c[:40])
from konlpy.corpus import kobill
kobill.fileids()
d = kobill.open('1809890.txt').read()
print(d[:40])<jupyter_output>지방공무원법 일부개정법률안

(정의화의원 대표발의 )

 의 안
 번 호<jupyter_text>형태소 분석 KoNLPy는 다음과 같은 다양한 형태소 분석, 태깅 라이브러리를 파이썬에서 쉽게 사용할 수 있도록 모아놓았다.* Hannanum: 한나눔. KAIST Semantic Web Research Center 개발.  * http://semanticweb.kaist.ac.kr/hannanum/* Kkma: 꼬꼬마. 서울대학교 IDS(Intelligent Data Systems) 연구실 개발.  * http://kkma.snu.ac.kr/* Komoran: 코모란. Shineware에서 개발.  * https://github.com/shin285/KOMORAN* Mecab: 메카브. 일본어용 형태소 분석기를 한국어를 사용할 수 있도록 수정.  * https://bitbucket.org/eunjeon/mecab-ko* Open Korean Text: 오픈 소스 한국어 분석기. 과거 트위터 형태소 분석기.  * https://github.com/open-korean-text/open-korean-text여기에서는 한나눔, 꼬꼬마, 오픈코리안텍스트 형태소만 예제로 포함하였다.<jupyter_code>from konlpy.tag import *

hannanum = Hannanum()
kkma = Kkma()
komoran = Komoran()
mecab = Mecab()
okt = Okt()<jupyter_output><empty_output><jupyter_text>이 클래스들은 다음과 같은 메서드를 공통적으로 제공한다.* `nouns` : 명사 추출* `morphs` : 형태소 추출* `pos` : 품사 부착  명사 추출 문자열에서 명사만 추출하려면 `noun` 명령을 사용한다.<jupyter_code>hannanum.nouns(c[:40])
kkma.nouns(c[:40])
# komoran은 빈줄이 있으면 에러가 남
komoran.nouns("\n".join([s for s in c[:40].split("\n") if s]))
mecab.nouns(c[:40])
okt.nouns(c[:40])<jupyter_output><empty_output><jupyter_text>형태소 추출 명사 뿐 아니라 모든 품사의 형태소를 알아내려면 `morphs`라는 명령을 사용한다.<jupyter_code>hannanum.morphs(c[:40])
kkma.morphs(c[:40])
# komoran은 빈줄이 있으면 에러가 남
komoran.morphs("\n".join([s for s in c[:40].split("\n") if s]))
mecab.morphs(c[:40])
okt.morphs(c[:40])<jupyter_output><empty_output><jupyter_text>품사 부착 `pos` 명령을 사용하면 품사 부착을 한다. 한국어 품사 태그세트로는 "21세기 세종계획 품사 태그세트"를 비롯하여 다양한 품사 태그세트가 있다. 형태소 분석기마다 사용하는 품사 태그가 다르므로 각 형태소 분석기에 대한 문서를 참조한다.<jupyter_code>hannanum.pos(c[:40])
kkma.pos(c[:40])
# komoran은 빈줄이 있으면 에러가 남
komoran.pos("\n".join([s for s in c[:40].split("\n") if s]))
mecab.pos(c[:40])
okt.pos(c[:40])<jupyter_output><empty_output><jupyter_text>부착되는 품사 태그의 기호와 의미는 `tagset` 속성으로 확인할 수 있다.<jupyter_code>okt.tagset
tagsets = pd.DataFrame()
N = 67
tagsets["Hannanum-기호"] = list(hannanum.tagset.keys()) + list("*" * (N - len(hannanum.tagset)))
tagsets["Hannanum-품사"] = list(hannanum.tagset.values()) + list("*" * (N - len(hannanum.tagset)))
tagsets["Kkma-기호"] = list(kkma.tagset.keys()) + list("*" * (N - len(kkma.tagset)))
tagsets["Kkma-품사"] = list(kkma.tagset.values()) + list("*" * (N - len(kkma.tagset)))
tagsets["Komoran-기호"] = list(komoran.tagset.keys()) + list("*" * (N - len(komoran.tagset)))
tagsets["Komoran-품사"] = list(komoran.tagset.values()) + list("*" * (N - len(komoran.tagset)))
tagsets["Mecab-기호"] = list(mecab.tagset.keys()) + list("*" * (N - len(mecab.tagset)))
tagsets["Mecab-품사"] = list(mecab.tagset.values()) + list("*" * (N - len(mecab.tagset)))
tagsets["OKT-기호"] = list(okt.tagset.keys()) + list("*" * (N - len(okt.tagset)))
tagsets["OKT-품사"] = list(okt.tagset.values()) + list("*" * (N - len(okt.tagset)))
tagsets<jupyter_output><empty_output><jupyter_text>koNLPy의 형태소 분석기와 NLTK의 Text 클래스를 결합하여 NLTK 기능을 사용할 수도 있다.<jupyter_code>from nltk import Text

kolaw = Text(okt.nouns(c), name="kolaw")
kolaw.plot(30)
plt.show()
from wordcloud import WordCloud

# 자신의 컴퓨터 환경에 맞는 한글 폰트 경로를 설정
font_path = '/usr/share/fonts/truetype/nanum/NanumGothic.ttf'

wc = WordCloud(width = 1000, height = 600, background_color="white", font_path=font_path)
plt.imshow(wc.generate_from_frequencies(kolaw.vocab()))
plt.axis("off")
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.17692505794488797, 'fraction_numerical': 0.014679371619881535, 'mean_word_length': 5.409240924092409, 'pattern_counts': {'":': 0, '<': 32, '<?xml version=': 0, '>': 32, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '315156', 'license': 'MIT', 'n_tokens_mistral': 2290, 'n_tokens_neox': 2701, 'n_words': 360, 'path': 'Natural_language_processing/2_KoNLPy_package.ipynb', 'repo_name': 'yeonghwanchoi/TIL', 'size': '3883'}