{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "# **Project One**\n", "Stop Words\n", "\n", "## **지속성장 보고서 불용어 추출**\n", "보고서간의 특징구별 단어들 추출" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from konlpy.tag import Twitter\n", "twitter = Twitter()\n", "twitter.pos(\"삼성전자 글로벌센터 전자사업부\", stem=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "## **1 text 문서에서 token 추출하기**\n", "Document 에서 한글 추출하기" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Step 1 - pdf 에서 변환한 Document 불러오기\n", "filename = './data/kr-Report_2018.txt'\n", "with open(filename, 'r', encoding='utf-8') as f:\n", " texts = f.read()\n", "texts[:300]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Step 2 - 한글만 추출\n", "import re\n", "texts = texts.replace('\\n', ' ') # 해당줄의 줄바꿈 내용 제거\n", "tokenizer = re.compile(r'[^ ㄱ-힣]+') # 한글과 띄어쓰기를 제외한 모든 글자를 선택\n", "texts = tokenizer.sub('', texts) # 한글과 띄어쓰기를 제외한 모든 부분을 제거\n", "texts[:300]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Step 3 - Token으로 변환한다\n", "from nltk.tokenize import word_tokenize\n", "tokens = word_tokenize(texts)\n", "tokens[:7]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Step 4 - 복합명사는 묶어서 Filtering 출력\n", "# ex) 삼성전자의 스마트폰은 -- > 삼성전자 스마트폰\n", "\n", "noun_token = []\n", "for token in tokens:\n", " token_pos = twitter.pos(token)\n", " temp = [txt_tag[0] for txt_tag in token_pos \n", " if txt_tag[1] == 'Noun']\n", " if len(\"\".join(temp)) > 1:\n", " noun_token.append(\"\".join(temp))\n", "\n", "texts = \" \".join(noun_token)\n", "texts[:300]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "## **2 StopWord 데이터 필터링**\n", "**stopwords.txt** : 2015, 2016, 2017, 2018년 모두 존재하는 단어목록" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# stopwords.txt : 2015, 2016, 2017, 2018 모두 출현했던 단어들 불러오기\n", "with open('./data/stopwords.txt', 'r', encoding='utf-8') as f:\n", " stopwords = f.read()\n", "\n", "stopwords = stopwords.split(' ')\n", "stopwords[:10]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# 필터링 텍스트를 살펴보기\n", "from nltk.tokenize import word_tokenize\n", "texts = word_tokenize(texts)\n", "texts[:8]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Stopwords 를 활용하여 Token을 필터링\n", "texts = [text for text in texts \n", " if text not in stopwords]\n", "\n", "# pandas 를 활용하여 상위빈도 객체를 출력한다\n", "import pandas as pd\n", "from nltk import FreqDist\n", "freqtxt = pd.Series(dict(FreqDist(texts))).sort_values(ascending=False)\n", "freqtxt[:25]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "## **3 Konlpy 의 단점들**\n", "오타/ 비정형 텍스트의 처리" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from konlpy.tag import Twitter\n", "twitter = Twitter()\n", "twitter.pos('가치창출')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "twitter.pos('갤러시')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "## **4 WordCloud 출력**\n", "visualization" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# wordcloud 출력\n", "from wordcloud import WordCloud\n", "wcloud = WordCloud('./data/D2Coding.ttf',\n", " relative_scaling = 0.2,\n", " background_color = 'white').generate(\" \".join(texts))\n", "wcloud" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "plt.figure(figsize=(12,12))\n", "plt.imshow(wcloud, interpolation='bilinear')\n", "plt.axis(\"off\")" ] } ], "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 }