{ "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 }