{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"# **Word Cloud - 말뭉치 응용**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## **1 Stemming Tagging의 활용 (한글문서 전처리 작업)**\n",
"1. 특정 형태소의 Token만 추출하기\n",
"1. **Stemming** 작업은 **동사, 형용사** 에만 적용\n",
"1. 한글의 특성상 이를 활용하면 **명사의 정규화** 작업이 가능하다"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Twitter() 를 활용하여 Stemming, Tagging 추가하기\n",
"from konlpy.tag import Twitter\n",
"twitter = Twitter()\n",
"tokens = twitter.pos('김정은과 문재인의 평양만남', stem=True)\n",
"tokens"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 명사 Token을 추출하기 1\n",
"result = []\n",
"for token in tokens:\n",
" if token[1] == \"=Quiz!=\":\n",
" result.append(token[0])\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 명사 Token을 추출하기 2\n",
"# List 객체 함수를 활용\n",
"result_list = [token[0] for token in tokens\n",
" if token[1] == \"=Quiz!=\"]\n",
"result_list"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\" \".join(result)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## **2 Word Cloud 간단적용**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# ! pip install wordcloud"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# DDP 평양 남북정상회담 국민보고문 불러오기\n",
"with open('./data/pyongyang_fin.txt', 'r', encoding='utf-8') as f:\n",
" texts = f.read()\n",
"texts[:100]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# ! pip install matplotlib"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"# Text Document를 별도의 전처리 없이 Word Cloud 모듈에 바로적용\n",
"from wordcloud import WordCloud\n",
"wcloud = WordCloud('./data/D2Coding.ttf', \n",
" relative_scaling = 0.1, \n",
" background_color='white').generate( =Quiz!= )\n",
"\n",
"import matplotlib.pyplot as plt\n",
"plt.figure(figsize=(12,12))\n",
"plt.imshow(wcloud, interpolation='bilinear')\n",
"plt.axis(\"off\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Token 빈도결과값\n",
"from nltk import FreqDist\n",
"from nltk.tokenize import word_tokenize\n",
"import pandas as pd\n",
"tokens = word_tokenize(texts)\n",
"freqtxt = pd.Series(dict(FreqDist(tokens))).sort_values(ascending=False)\n",
"freqtxt[:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"## **3 명사만 추출하여 Wordcloud 만들기**\n",
"1. _**평양**_ 에서 _**백두산**_ 의 등반과정에서 _**날씨**_ 가 좋다 \n",
"1. **Stemming**은 **동사/ 형용사**의 어근/ 어간을 추출한다\n",
"1. 한글의 **명사**는 **조사, 접사가 붙어 있고** 분리를 위해 **Tag**를 활용"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 원본 Text 내용 살펴보기\n",
"texts[:300]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Twitter 모듈을 활용하여 명사만 추출\n",
"tokens = twitter.pos(texts, stem=True)\n",
"tokens_noun = [token[0] for token in tokens \n",
" if token[1] == \"=Quiz!=\"]\n",
"texts_noun = \" \".join(tokens_noun)\n",
"texts_noun[:300]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"wcloud = WordCloud('./data/D2Coding.ttf',\n",
" relative_scaling = 0.1,\n",
" background_color = \"white\").generate( =Quiz!= )\n",
"\n",
"plt.figure(figsize=(12,12))\n",
"plt.imshow(wcloud, interpolation='bilinear')\n",
"plt.axis(\"off\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Token 빈도결과값\n",
"tokens = word_tokenize(texts_noun)\n",
"freqtxt = pd.Series(dict(FreqDist(tokens))).sort_values(ascending=False)\n",
"freqtxt[:20]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}