<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Text Preprocessing on Data Science | DSChloe</title>
    <link>https://dschloe.github.io/tags/text-preprocessing/</link>
    <description>Recent content in Text Preprocessing on Data Science | DSChloe</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Sun, 20 Dec 2020 00:10:47 +0900</lastBuildDate>
    <atom:link href="https://dschloe.github.io/tags/text-preprocessing/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>NLP - From Word2Vec TO GPT-3</title>
      <link>https://dschloe.github.io/programming/2020/12/ch11_the_nlp_lectures/</link>
      <pubDate>Sun, 20 Dec 2020 00:10:47 +0900</pubDate>
      <guid>https://dschloe.github.io/programming/2020/12/ch11_the_nlp_lectures/</guid>
      <description>&lt;h2 id=&#34;개요&#34;&gt;개요&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;본 포스트는 자연어처리의 주요 흐름에 관해 간단하게 정리한 내용이다.&lt;/li&gt;&#xA;&lt;li&gt;일종의 모음집이라고 하면 좋을 것 같다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;구체적인 자연어 이론에 대한 설명은 대해서는 유투브 영상 및 그 와 다양한 자료들을 참고하도록 하자. .&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;사전-학습의-개념&#34;&gt;사전 학습의 개념&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;사전 학습 모델이란 기존에 자비어(Xavier) 등 임의의 값으로 초기화된 모델의 가중치들을 다른 문제(task)에 학습시킨 가중치들로 초기화하는 방법이다.&lt;/li&gt;&#xA;&lt;li&gt;이미지 분류에서는 보통 전이학습이라는 용어를 사용하기도 했다.&lt;/li&gt;&#xA;&lt;li&gt;자연어에서의 가장 대표적인 사전학습 모델이 버트와 GPT이다.&lt;/li&gt;&#xA;&lt;li&gt;현재는 이러한 대부분의 자연어 처리 모델이 언어 모델을 사전 학습한 모델을 활용하도록 한다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;예를 들면, &lt;code&gt;오늘 저녁 반찬 간이 조금 싱겁다&lt;/code&gt;라는 문장이 있을 때, &lt;code&gt;오늘 아침 반찬 간이&lt;/code&gt;라는 단어들을 통해 &lt;code&gt;싱거워&lt;/code&gt;라는 단어를 모델이 예측하며 학습하게 된다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;이러한 학습을 통해 모델은 언어에 대한 전반적인 이해(Natural Language Understanding, NLU)를 하게 되고, 이렇게 사전 학습된 지식을 기반으로 하위 문제에 대한 성능을 향상 시킨다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;사전-학습의-방법&#34;&gt;사전 학습의 방법&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;첫번째는 특징 기반(feature-based) 방법이다.&lt;/li&gt;&#xA;&lt;li&gt;특징 기반 방법이란 사전 학습된 특징을 하위 문제의 모델에 부가적인 특징을 활용하는 방법이다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;특징 기반의 사전 학습 활용 방법의 대표적인 예는 &lt;code&gt;word2vec&lt;/code&gt;으로, 학습한 임베딩 특징을 우리가 학습하고자 하는 모델의 임베딩 특징으로 활용하는 방법이다.&lt;/li&gt;&#xA;&lt;li&gt;사전 학습한 가중치를 활용하는 또 다른 방법은 미세 조정(&lt;code&gt;fine-tuning&lt;/code&gt;)이다. 미세 조정이란 사전 학습한 모든 가중치와 더불어 하위 문제를 위한 최소한의 가중치를 추가해서 모델을 추가로 학습(미세 조정) 하는 방법을 말한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;기존연구-소개&#34;&gt;기존연구 소개&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;버트와 GPT를 배우기에 앞서 자연어 처리 연구의 흐름에 대해 살펴보도록 한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;word2vec--skip-gram&#34;&gt;Word2Vec &amp;amp; Skip Gram&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;문장에서 특정한 단어가 어떻게 올 것인지 예측하는 방법의 가장 기본적인 원리라고 할 수 있다.&lt;/li&gt;&#xA;&lt;li&gt;word2vec은 CBOW(Continuous Bag of Words)와 Skip-Gram이라는 두가지 모델로 나뉜다.&lt;/li&gt;&#xA;&lt;li&gt;두 모델은 서로 반대되는 개념이라고 할 수 있다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; IPython.display &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; HTML&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTML(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;iframe width=&amp;#34;560&amp;#34; height=&amp;#34;315&amp;#34; src=&amp;#34;https://www.youtube.com/embed/sY4YyacSsLc?start=596&amp;#34; frameborder=&amp;#34;0&amp;#34; allow=&amp;#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;#34; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/sY4YyacSsLc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTML(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;iframe width=&amp;#34;560&amp;#34; height=&amp;#34;315&amp;#34; src=&amp;#34;https://www.youtube.com/embed/UqRCEmrv1gQ?start=596&amp;#34; frameborder=&amp;#34;0&amp;#34; allow=&amp;#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;#34; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/UqRCEmrv1gQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;다음 문장을 확인해보자. 예시를 들면 다음과 같다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>정형데이터와 함께하는 텍스트 마이닝</title>
      <link>https://dschloe.github.io/programming/2020/12/ch08_kaggle_price_challenge/</link>
      <pubDate>Sat, 19 Dec 2020 10:10:47 +0900</pubDate>
      <guid>https://dschloe.github.io/programming/2020/12/ch08_kaggle_price_challenge/</guid>
      <description>&lt;h2 id=&#34;공지&#34;&gt;공지&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;해당 포스트는 취업 준비반 대상 강의 교재로 &lt;a href=&#34;https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C&#34;&gt;파이썬 머신러닝 완벽가이드&lt;/a&gt;를 축약한 내용입니다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;매우 좋은 책이니 가급적 구매하시기를 바랍니다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;개요&#34;&gt;개요&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Mercari Price Suggestion Challenge&lt;/code&gt;는 캐글에서 진행된 과제이며, 제공되는 데이터 세트는 제품에 대한 여러 속성 및 제품 설명 등의 텍스트 데이터로 구성된다.&lt;/li&gt;&#xA;&lt;li&gt;데이터 세트는 다음 링크에서 확인한다. &lt;a href=&#34;https://www.kaggle.com/c/mercari-price-suggestion-challenge/data&#34;&gt;https://www.kaggle.com/c/mercari-price-suggestion-challenge/data&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;데이터-다운로드&#34;&gt;데이터 다운로드&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;데이터를 다운로드 받도록 한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;!&lt;/span&gt;pip install kaggle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;!&lt;/span&gt;sudo apt install p7zip p7zip&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;full &lt;span style=&#34;color:#75715e&#34;&gt;# 7z 파일을 풀기 위한 것이다. &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Requirement already satisfied: kaggle in /usr/local/lib/python3.6/dist-packages (1.5.10)&#xA;Requirement already satisfied: python-dateutil in /usr/local/lib/python3.6/dist-packages (from kaggle) (2.8.1)&#xA;Requirement already satisfied: python-slugify in /usr/local/lib/python3.6/dist-packages (from kaggle) (4.0.1)&#xA;Requirement already satisfied: certifi in /usr/local/lib/python3.6/dist-packages (from kaggle) (2020.12.5)&#xA;Requirement already satisfied: requests in /usr/local/lib/python3.6/dist-packages (from kaggle) (2.23.0)&#xA;Requirement already satisfied: urllib3 in /usr/local/lib/python3.6/dist-packages (from kaggle) (1.24.3)&#xA;Requirement already satisfied: tqdm in /usr/local/lib/python3.6/dist-packages (from kaggle) (4.41.1)&#xA;Requirement already satisfied: six&amp;gt;=1.10 in /usr/local/lib/python3.6/dist-packages (from kaggle) (1.15.0)&#xA;Requirement already satisfied: text-unidecode&amp;gt;=1.3 in /usr/local/lib/python3.6/dist-packages (from python-slugify-&amp;gt;kaggle) (1.3)&#xA;Requirement already satisfied: chardet&amp;lt;4,&amp;gt;=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests-&amp;gt;kaggle) (3.0.4)&#xA;Requirement already satisfied: idna&amp;lt;3,&amp;gt;=2.5 in /usr/local/lib/python3.6/dist-packages (from requests-&amp;gt;kaggle) (2.10)&#xA;Reading package lists... Done&#xA;Building dependency tree       &#xA;Reading state information... Done&#xA;p7zip is already the newest version (16.02+dfsg-6).&#xA;p7zip set to manually installed.&#xA;p7zip-full is already the newest version (16.02+dfsg-6).&#xA;0 upgraded, 0 newly installed, 0 to remove and 14 not upgraded.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; google.colab &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uploaded &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; files&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;upload()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; fn &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; uploaded&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;keys():&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;uploaded file &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{name}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; with length &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{length}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; bytes&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;fn, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;len(uploaded[fn])))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# kaggle.json을 아래 폴더로 옮긴 뒤, file을 사용할 수 있도록 권한을 부여한다. &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;!&lt;/span&gt;mkdir &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;p &lt;span style=&#34;color:#f92672&#34;&gt;~/.&lt;/span&gt;kaggle&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; mv kaggle&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;json &lt;span style=&#34;color:#f92672&#34;&gt;~/.&lt;/span&gt;kaggle&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;~/.&lt;/span&gt;kaggle&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;kaggle&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;input type=&#34;file&#34; id=&#34;files-3926e51c-13d0-41f0-9243-44ff2a497a71&#34; name=&#34;files[]&#34; multiple disabled&#xA;style=&#34;border:none&#34; /&gt;&#xA;&lt;output id=&#34;result-3926e51c-13d0-41f0-9243-44ff2a497a71&#34;&gt;&#xA;Upload widget is only available when the cell has been executed in the&#xA;current browser session. Please rerun this cell to enable.&#xA;&lt;/output&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>텍스트 마이닝 - 감성 분석</title>
      <link>https://dschloe.github.io/programming/2020/12/ch04_sentiment_analysis/</link>
      <pubDate>Sun, 13 Dec 2020 10:10:47 +0900</pubDate>
      <guid>https://dschloe.github.io/programming/2020/12/ch04_sentiment_analysis/</guid>
      <description>&lt;h2 id=&#34;공지&#34;&gt;공지&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;해당 포스트는 취업 준비반 대상 강의 교재로 &lt;a href=&#34;https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C&#34;&gt;파이썬 머신러닝 완벽가이드&lt;/a&gt;를 축약한 내용입니다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;매우 좋은 책이니 가급적 구매하시기를 바랍니다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;감성-분석-개요&#34;&gt;감성 분석 개요&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;문서의 주관적인 감성/의견/감정/기분 등을 파악하기 위한 방법으로 소셜 미디어, 여론조사, 온라인 리뷰, 피드백 등 다양한 분야에서 활용되고 있다.&lt;/li&gt;&#xA;&lt;li&gt;감성 분석은 크게 지도학습 &amp;amp; 비지도학습 방식으로 수행된다.&lt;/li&gt;&#xA;&lt;li&gt;데이터는 캐글 대회 데이터를 활용하였다.&lt;/li&gt;&#xA;&lt;li&gt;따라서, 본 포스트에서는 지도학습 기반과 비지도학습 기반의 감성 분석을 실습한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;데이터-불러오기&#34;&gt;데이터 불러오기&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;각각 필요한 데이터를 불러오도록 한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; google.colab &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; drive &lt;span style=&#34;color:#75715e&#34;&gt;# 패키지 불러오기 &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; os.path &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; join  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ROOT &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/content/drive&amp;#34;&lt;/span&gt;     &lt;span style=&#34;color:#75715e&#34;&gt;# 드라이브 기본 경로&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(ROOT)                 &lt;span style=&#34;color:#75715e&#34;&gt;# print content of ROOT (Optional)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drive&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mount(ROOT)           &lt;span style=&#34;color:#75715e&#34;&gt;# 드라이브 기본 경로 Mount&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;/content/drive&#xA;Mounted at /content/drive&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MY_GOOGLE_DRIVE_PATH &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;My Drive/Colab Notebooks/NLP/&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 프로젝트 경로&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PROJECT_PATH &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; join(ROOT, MY_GOOGLE_DRIVE_PATH) &lt;span style=&#34;color:#75715e&#34;&gt;# 프로젝트 경로&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(PROJECT_PATH)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;/content/drive/My Drive/Colab Notebooks/NLP/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;cd &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{PROJECT_PATH}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;/content/drive/My Drive/Colab Notebooks/NLP&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;review_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;read_csv(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;data/labeledTrainData.tsv&amp;#34;&lt;/span&gt;, header &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, sep&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\t&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, quoting &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;review_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;head(&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&#xA;&lt;style scoped&gt;&#xA;    .dataframe tbody tr th:only-of-type {&#xA;        vertical-align: middle;&#xA;    }&#xA;&lt;pre&gt;&lt;code&gt;.dataframe tbody tr th {&#xA;    vertical-align: top;&#xA;}&#xA;&#xA;.dataframe thead th {&#xA;    text-align: right;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;/style&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>텍스트 마이닝 - 뉴스 분류</title>
      <link>https://dschloe.github.io/programming/2020/12/ch03_news_group_classification/</link>
      <pubDate>Thu, 10 Dec 2020 10:10:47 +0900</pubDate>
      <guid>https://dschloe.github.io/programming/2020/12/ch03_news_group_classification/</guid>
      <description>&lt;h2 id=&#34;공지&#34;&gt;공지&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;해당 포스트는 취업 준비반 대상 강의 교재로 &lt;a href=&#34;https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C&#34;&gt;파이썬 머신러닝 완벽가이드&lt;/a&gt;를 축약한 내용입니다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;매우 좋은 책이니 가급적 구매하시기를 바랍니다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;텍스트-분류-실습---뉴스그룹-분류-개요&#34;&gt;텍스트 분류 실습 - 뉴스그룹 분류 개요&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;사이킷런은 &lt;code&gt;fetch_20newsgroups&lt;/code&gt; API를 이용해 뉴스그룹의 분류를 수행해 볼 수 있는 예제 데이터 활용 가능함.&lt;/li&gt;&#xA;&lt;li&gt;희소 행렬에 분류를 효과적으로 처리할 수 있는 알고리즘은 로지스틱 회귀, 선형 서포트 벡터 머신, 나이브 베이즈 등임.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;텍스트-정규화&#34;&gt;텍스트 정규화&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;fetch_20newsgroups()&lt;/code&gt;는 인터넷에서 데이터를 받은 후, 올리는 것이기 때문에 인터넷 연결 유무를 확인한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sklearn.datasets &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; fetch_20newsgroups&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;news_data &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; fetch_20newsgroups(subset&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;all&amp;#39;&lt;/span&gt;, random_state&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;156&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(news_data&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;keys())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;dict_keys([&#39;data&#39;, &#39;filenames&#39;, &#39;target_names&#39;, &#39;target&#39;, &#39;DESCR&#39;])&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Target&lt;/code&gt; 클래스가 어떻게 구성돼 있는지 확인해 본다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;target 클래스의 값과 분포도 &lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;, pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Series(news_data&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;target)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;value_counts()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sort_index())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;target 클래스의 이름들 &lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;, news_data&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;target_names)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;target 클래스의 값과 분포도 &#xA; 0     799&#xA;1     973&#xA;2     985&#xA;3     982&#xA;4     963&#xA;5     988&#xA;6     975&#xA;7     990&#xA;8     996&#xA;9     994&#xA;10    999&#xA;11    991&#xA;12    984&#xA;13    990&#xA;14    987&#xA;15    997&#xA;16    910&#xA;17    940&#xA;18    775&#xA;19    628&#xA;dtype: int64&#xA;target 클래스의 이름들 &#xA; [&#39;alt.atheism&#39;, &#39;comp.graphics&#39;, &#39;comp.os.ms-windows.misc&#39;, &#39;comp.sys.ibm.pc.hardware&#39;, &#39;comp.sys.mac.hardware&#39;, &#39;comp.windows.x&#39;, &#39;misc.forsale&#39;, &#39;rec.autos&#39;, &#39;rec.motorcycles&#39;, &#39;rec.sport.baseball&#39;, &#39;rec.sport.hockey&#39;, &#39;sci.crypt&#39;, &#39;sci.electronics&#39;, &#39;sci.med&#39;, &#39;sci.space&#39;, &#39;soc.religion.christian&#39;, &#39;talk.politics.guns&#39;, &#39;talk.politics.mideast&#39;, &#39;talk.politics.misc&#39;, &#39;talk.religion.misc&#39;]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Target&lt;/code&gt; 클래스의 값은 0부터 19까지 20개로 구성이 되어 있다.&lt;/li&gt;&#xA;&lt;li&gt;각각의 개별 데이터가 텍스트로 어떻게 구성되어 있는지 확인해 본다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(news_data&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;data[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;From: jlevine@rd.hydro.on.ca (Jody Levine)&#xA;Subject: Re: insect impacts&#xA;Organization: Ontario Hydro - Research Division&#xA;Lines: 64&#xA;&#xA;I feel childish.&#xA;&#xA;In article &amp;lt;1ppvds$92a@seven-up.East.Sun.COM&amp;gt; egreen@East.Sun.COM writes:&#xA;&amp;gt;In article 7290@rd.hydro.on.ca, jlevine@rd.hydro.on.ca (Jody Levine) writes:&#xA;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&#xA;&amp;gt;&amp;gt;&amp;gt;&amp;gt;how _do_ the helmetless do it?&#xA;&amp;gt;&amp;gt;&amp;gt;&#xA;&amp;gt;&amp;gt;&amp;gt;Um, the same way people do it on &#xA;&amp;gt;&amp;gt;&amp;gt;horseback&#xA;&amp;gt;&amp;gt;&#xA;&amp;gt;&amp;gt;not as fast, and they would probably enjoy eating bugs, anyway&#xA;&amp;gt;&#xA;&amp;gt;Every bit as fast as a dirtbike, in the right terrain.  And we eat&#xA;&amp;gt;flies, thank you.&#xA;&#xA;Who mentioned dirtbikes? We&#39;re talking highway speeds here. If you go 70mph&#xA;on your dirtbike then feel free to contribute.&#xA;&#xA;&amp;gt;&amp;gt;&amp;gt;jeeps&#xA;&amp;gt;&amp;gt;&#xA;&amp;gt;&amp;gt;you&#39;re *supposed* to keep the windscreen up&#xA;&amp;gt;&#xA;&amp;gt;then why does it go down?&#xA;&#xA;Because it wouldn&#39;t be a Jeep if it didn&#39;t. A friend of mine just bought one&#xA;and it has more warning stickers than those little 4-wheelers (I guess that&#39;s&#xA;becuase it&#39;s a big 4 wheeler). Anyway, it&#39;s written in about ten places that&#xA;the windshield should remain up at all times, and it looks like they&#39;ve made&#xA;it a pain to put it down anyway, from what he says. To be fair, I do admit&#xA;that it would be a similar matter to drive a windscreenless Jeep on the &#xA;highway as for bikers. They may participate in this discussion, but they&#39;re&#xA;probably few and far between, so I maintain that this topic is of interest&#xA;primarily to bikers.&#xA;&#xA;&amp;gt;&amp;gt;&amp;gt;snow skis&#xA;&amp;gt;&amp;gt;&#xA;&amp;gt;&amp;gt;NO BUGS, and most poeple who go fast wear goggles&#xA;&amp;gt;&#xA;&amp;gt;So do most helmetless motorcyclists.&#xA;&#xA;Notice how Ed picked on the more insignificant (the lower case part) of the &#xA;two parts of the statement. Besides, around here it is quite rare to see &#xA;bikers wear goggles on the street. It&#39;s either full face with shield, or &#xA;open face with either nothing or aviator sunglasses. My experience of &#xA;bicycling with contact lenses and sunglasses says that non-wraparound &#xA;sunglasses do almost nothing to keep the crap out of ones eyes.&#xA;&#xA;&amp;gt;&amp;gt;The question still stands. How do cruiser riders with no or negligible helmets&#xA;&amp;gt;&amp;gt;stand being on the highway at 75 mph on buggy, summer evenings?&#xA;&amp;gt;&#xA;&amp;gt;helmetless != goggleless&#xA;&#xA;Ok, ok, fine, whatever you say, but lets make some attmept to stick to the&#xA;point. I&#39;ve been out on the road where I had to stop every half hour to clean&#xA;my shield there were so many bugs (and my jacket would be a blood-splattered&#xA;mess) and I&#39;d see guys with shorty helmets, NO GOGGLES, long beards and tight&#xA;t-shirts merrily cruising along on bikes with no windscreens. Lets be really&#xA;specific this time, so that even Ed understands. Does anbody think that &#xA;splattering bugs with one&#39;s face is fun, or are there other reasons to do it?&#xA;Image? Laziness? To make a point about freedom of bug splattering?&#xA;&#xA;I&#39;ve        bike                      like       | Jody Levine  DoD #275 kV&#xA;     got a       you can        if you      -PF  | Jody.P.Levine@hydro.on.ca&#xA;                         ride it                 | Toronto, Ontario, Canada&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;뉴스그룹 기사의 내용뿐만 아니라 뉴스그룹 제목, 작성자, 소속, 이메일 등의 다양한 정보를 가지고 있음.&lt;/li&gt;&#xA;&lt;li&gt;그러나, 불필요한 부분들은 &lt;code&gt;remove&lt;/code&gt; 파라미터를 이용하여 제거할 수 있음.&lt;/li&gt;&#xA;&lt;li&gt;훈련 데이터와 테스트 데이터로 분류하는 코드를 작성해본다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sklearn.datasets &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; fetch_20newsgroups&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# subset=&amp;#39;train&amp;#39;으로 학습용 데이터만 추출, remove=(&amp;#39;headers&amp;#39;, &amp;#39;footers&amp;#39;, &amp;#39;quotes&amp;#39;)로 내용만 추출&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;train_news &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; fetch_20newsgroups(subset&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;train&amp;#39;&lt;/span&gt;, remove&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;headers&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;footers&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;quotes&amp;#39;&lt;/span&gt;), random_state&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;156&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X_train &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; train_news&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;y_train &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; train_news&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;target&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# subset=&amp;#39;test&amp;#39;으로 테스트 데이터만 추출, remove=(&amp;#39;headers&amp;#39;, &amp;#39;footers&amp;#39;, &amp;#39;quotes&amp;#39;)로 내용만 추출&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;test_news &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; fetch_20newsgroups(subset&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;test&amp;#39;&lt;/span&gt;, remove&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;headers&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;footers&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;quotes&amp;#39;&lt;/span&gt;), random_state&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;156&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X_test &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; test_news&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;y_test &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; test_news&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;target&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;학습 데이터 크기 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;, 테스트 데이터 크기 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{1}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(len(train_news&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;data), len(test_news&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;data)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Downloading 20news dataset. This may take a few minutes.&#xA;Downloading dataset from https://ndownloader.figshare.com/files/5975967 (14 MB)&#xA;&#xA;&#xA;학습 데이터 크기 11314, 테스트 데이터 크기 7532&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;피처-벡터화-변환&#34;&gt;피처 벡터화 변환&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이제 피처 벡터화를 진행해야 하는데, 이 때에는 &lt;code&gt;CountVectorizer&lt;/code&gt;를 이용해 학습 데이터의 텍스트를 피처 벡터화를 진행&lt;/li&gt;&#xA;&lt;li&gt;테스트 데이터 역시 피처 벡터화 진행&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이 때에는 테스트 데이터를 변환(transform) 해줘야 하며, 이 때, &lt;code&gt;fit_transform()&lt;/code&gt; 사용 하면 안됨&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sklearn.feature_extraction.text &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; CountVectorizer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Count Vectorization 피처 벡터화 변환 진행&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cnt_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; CountVectorizer()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cnt_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X_train_cnt_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; cnt_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;transform(X_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 테스트 데이터를 feature 벡터화 변환 수행&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X_test_cnn_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; cnt_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;transform(X_test)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;학습 데이터 텍스트의 CountVectorizer Shape:&amp;#34;&lt;/span&gt;, X_train_cnt_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shape)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;학습 데이터 텍스트의 CountVectorizer Shape: (11314, 101631)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이렇게 만들어진 학습 데이터를 &lt;code&gt;CountVectorizer&lt;/code&gt;로 피처를 추출한 결과 11314개의 문서에서, 단어가 101631개로 만들어진 것을 확인함&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;머신러닝-모델-학습예측평가&#34;&gt;머신러닝 모델 학습/예측/평가&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이제 로지스틱 회귀를 활용하여 뉴스그룹에 대한 분류를 예측해본다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sklearn.linear_model &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; LogisticRegression&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sklearn.metrics &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; accuracy_score&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Logistic Regresion을 이용해 학습/예측/평가 수행 &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lr_clf &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; LogisticRegression()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lr_clf&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train_cnt_vect, y_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pred &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; lr_clf&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;predict(X_test_cnn_vect)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;CountVectorized Logistic Regression의 예측 정확도는 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:.3f}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(accuracy_score(y_test, pred)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;CountVectorized Logistic Regression의 예측 정확도는 0.608&#xA;&#xA;&#xA;/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):&#xA;STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.&#xA;&#xA;Increase the number of iterations (max_iter) or scale the data as shown in:&#xA;    https://scikit-learn.org/stable/modules/preprocessing.html&#xA;Please also refer to the documentation for alternative solver options:&#xA;    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression&#xA;  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Count&lt;/code&gt; 기반에서 TF-IDF 기반으로 벡터화 변경하여 예측 모델 수행함.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sklearn.feature_extraction.text &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; TfidfVectorizer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# TF-IDF 벡터화를 적용하여 학습 데이터 세트와 테스트 데이터 세트 변환. &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tfidf_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; TfidfVectorizer()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tfidf_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X_train_tfidf_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; tfidf_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;transform(X_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X_test_tfidf_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; tfidf_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;transform(X_test)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;이번에는 &lt;code&gt;LogisticRegression&lt;/code&gt;을 이용해 학습/예측/평가 수행.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lr_clf &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; LogisticRegression()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lr_clf&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train_tfidf_vect, y_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pred &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; lr_clf&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;predict(X_test_tfidf_vect)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;TF-IDF Logistic Regression의 예측 정확도는 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:.3f}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(accuracy_score(y_test, pred)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;TF-IDF Logistic Regression의 예측 정확도는 0.674&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;TF-IDF가 단순 카운트 기반보다 훨씬 높은 예측 정확도 제공.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;모형-업그레이드-1단계&#34;&gt;모형 업그레이드 1단계&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;모형을 업그레이드 하기 위해서는 최상의 피처 전처리 수행이 필요함&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# stop words 필터링 추가 &amp;amp; ngram을 기본 (1, 1)에서 (1, 2)로 변경해 피처 벡터화 적용&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tfidf_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; TfidfVectorizer(stop_words&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;english&amp;#34;&lt;/span&gt;, ngram_range&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;), max_df&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tfidf_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X_train_tfidf_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; tfidf_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;transform(X_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X_test_tfidf_vect &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; tfidf_vect&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;transform(X_test)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lr_clf &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; LogisticRegression()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lr_clf&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train_tfidf_vect, y_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pred &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; lr_clf&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;predict(X_test_tfidf_vect)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;TF-IDF Logistic Regression의 예측 정확도는 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:.3f}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(accuracy_score(y_test, pred)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;TF-IDF Logistic Regression의 예측 정확도는 0.692&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;모형-업그레이드-2단계&#34;&gt;모형 업그레이드 2단계&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이번에는 &lt;code&gt;GridSearchCV&lt;/code&gt;를 이용하여 로지스틱 회귀의 하이퍼 파라미터 최적화를&#xA;수행한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sklearn.model_selection &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; GridSearchCV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; time &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; datetime&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;time()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 최적 C값 도출 튜닝 수행 / 과적합 방지용&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;params &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;C&amp;#39;&lt;/span&gt; : [&lt;span style=&#34;color:#ae81ff&#34;&gt;0.01&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0.1&lt;/span&gt;]} &lt;span style=&#34;color:#75715e&#34;&gt;# [0.01, 0.1, 1, 5, 10]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grid_cv_lr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; GridSearchCV(lr_clf, param_grid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;params, cv&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, scoring&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;accuracy&amp;#34;&lt;/span&gt;, verbose&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grid_cv_lr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train_tfidf_vect, y_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Logistic Regression best C parameter :&amp;#39;&lt;/span&gt;, grid_cv_lr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;best_params_)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# print(&amp;#39;Logistic Regression Best C Parameter :&amp;#39;, grid_cv_lr.best_params_)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sec &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;time()&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;start&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;times &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; str(datetime&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;timedelta(seconds&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;sec))&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;times &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; times[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(times)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Fitting 2 folds for each of 2 candidates, totalling 4 fits&#xA;&#xA;&#xA;[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.&#xA;[Parallel(n_jobs=1)]: Done   4 out of   4 | elapsed:  2.4min finished&#xA;&#xA;&#xA;Logistic Regression best C parameter : {&#39;C&#39;: 0.1}&#xA;0:03:32&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; time&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; datetime&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;bench_mark&lt;/span&gt;(start):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sec &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;time() &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; start&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  times &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; str(datetime&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;timedelta(seconds&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;sec))&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  times &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; times[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  print(times)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;최적 C 값으로 학습된 grid_cv로 예측 및 정확도 평가&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pred &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; grid_cv_lr&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;predict(X_test_tfidf_vect)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;TF-IDF Vectorized Logistic Regression의 예측 정확도는 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:.3f}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(accuracy_score(y_test, pred)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;TF-IDF Vectorized Logistic Regression의 예측 정확도는 0.645&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;사이킷런-파이프라인-활용한-머신러닝-수행&#34;&gt;사이킷런 파이프라인 활용한 머신러닝 수행&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;사이킷런의 &lt;code&gt;Pipeline&lt;/code&gt; 클래스를 이용하여 피처 벡터화와 ML 알고리즘 학습/예측을 위한 코드 작성을 한 번에 진행 가능함.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Pipeline&lt;/code&gt;을 이용하여 데이터의 전처리와 머신러닝 학습 과정을 통일된 API 기반에서 처리할 수 있어서 보다 더 직관적인 ML 모델 코드를 생성할 수 있음.&lt;/li&gt;&#xA;&lt;li&gt;또한 대용량 데이터의 피처 벡터화 결과를 별도 데이터로 저장하지 않고 스트림 기반에서 바로 머신러닝 알고리즘의 데이터로 입력할 수 있기 때문에 수행 시간 절약도 가능함.&lt;/li&gt;&#xA;&lt;li&gt;다음은 텍스트 분류 예제 코드를 &lt;code&gt;Pipeline&lt;/code&gt;을 이용해 재 작성한 코드이다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; sklearn.pipeline &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; Pipeline&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# TfidfVectorizer 객체를 tfidf_vect로, LogisticRegression 객체를 lr_clf로 생성하는 Pipeline 생성&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pipeline &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Pipeline([&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                     (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tfidf_vect&amp;#39;&lt;/span&gt;, TfidfVectorizer(stop_words&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;english&amp;#39;&lt;/span&gt;, ngram_range&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;), max_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;)), &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                     (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;lr_clf&amp;#39;&lt;/span&gt;, LogisticRegression(C&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;위 파이프라인을 활용하면 fit(), transform()과 LogisticRegression의 &lt;code&gt;fit()&lt;/code&gt;, &lt;code&gt;predict()&lt;/code&gt;가 필요 없음&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;time()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pipeline&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train, y_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pred &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; pipeline&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;predict(X_test)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Pipeline을 통한 Logistic Regression의 예측 정확도는 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:.3f}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(accuracy_score(y_test, pred)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bench_mark(start)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):&#xA;STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.&#xA;&#xA;Increase the number of iterations (max_iter) or scale the data as shown in:&#xA;    https://scikit-learn.org/stable/modules/preprocessing.html&#xA;Please also refer to the documentation for alternative solver options:&#xA;    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression&#xA;  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)&#xA;&#xA;&#xA;Pipeline을 통한 Logistic Regression의 예측 정확도는 0.701&#xA;0:05:55&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;지금까지 진행한 것은 단순하게 파이프라인을 활용해 머신러닝을 수행한 것이며, 이제 &lt;code&gt;Pipeline&lt;/code&gt; + &lt;code&gt;GridSearchCV&lt;/code&gt;를 적용한다.&lt;/li&gt;&#xA;&lt;li&gt;파라미터를 최적화하려면 너무 많은 튜닝 시간이 소모되기 때문에 주의 하도록 하며, 총 27개의 파라미터 X CV 2 총 54번의 학습을 진행하기 때문에 오래 걸리니 유의니 시간에 유의하도록 한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;time()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pipeline &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Pipeline([&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tfidf_vect&amp;#39;&lt;/span&gt;, TfidfVectorizer(stop_words&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;english&amp;#39;&lt;/span&gt;)),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;lr_clf&amp;#39;&lt;/span&gt;, LogisticRegression())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Pipeline에 기술된 각각의 객체 변수에 언더바(_)2개를 연달아 붙여 GridSearchCV에 사용될 &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 파라미터/하이퍼 파라미터 이름과 값을 설정. . &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;params &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tfidf_vect__ngram_range&amp;#39;&lt;/span&gt;: [(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;), (&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;), (&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tfidf_vect__max_df&amp;#39;&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;700&lt;/span&gt;],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;lr_clf__C&amp;#39;&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# GridSearchCV의 생성자에 Estimator가 아닌 Pipeline 객체 입력&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grid_cv_pipe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; GridSearchCV(pipeline, param_grid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;params, cv&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; , scoring&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;accuracy&amp;#39;&lt;/span&gt;, verbose&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grid_cv_pipe&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fit(X_train, y_train)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(grid_cv_pipe&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;best_params_ , grid_cv_pipe&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;best_score_)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pred &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; grid_cv_pipe&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;predict(X_test)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Pipeline을 통한 Logistic Regression 의 예측 정확도는 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:.3f}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(accuracy_score(y_test ,pred)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bench_mark(start)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;권철민. (2020). 파이썬 머신러닝 완벽가이드. 경기, 파주: 위키북스&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>텍스트 마이닝 - 희소행렬</title>
      <link>https://dschloe.github.io/programming/2020/11/ch02_bag_of_words_coo_csr/</link>
      <pubDate>Wed, 25 Nov 2020 10:10:47 +0900</pubDate>
      <guid>https://dschloe.github.io/programming/2020/11/ch02_bag_of_words_coo_csr/</guid>
      <description>&lt;h2 id=&#34;공지&#34;&gt;공지&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;해당 포스트는 취업 준비반 대상 강의 교재로 &lt;a href=&#34;https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C&#34;&gt;파이썬 머신러닝 완벽가이드&lt;/a&gt;를 축약한 내용입니다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;매우 좋은 책이니 가급적 구매하시기를 바랍니다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;개요&#34;&gt;개요&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;피처 벡터화에 있어서의 희소행렬에 대해 배운다.&lt;/li&gt;&#xA;&lt;li&gt;BOW 형태를 가진 언어 모델의 피처 벡터화는 대부분 희소 행렬이다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;희소행렬&#34;&gt;희소행렬&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;희소 행렬은 너무 많은 불필요한 0 값이 메모리 공간에 할당되어 메모리 공간을 많이 차지하는데 있다.&lt;/li&gt;&#xA;&lt;li&gt;다음 그림을 살펴보자.&#xA;&lt;img src=&#34;https://miro.medium.com/max/700/1*CpZ9fxPY5iSEzgdyS021_Q.png&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;이러한 희소 행렬을 물리적으로 적은 메모리 공간을 차지할 수 있도록 변환해야 하는데, 이 때, COO와 CSR 형식이 존재한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;1-희소-행렬---coo&#34;&gt;(1) 희소 행렬 - COO&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;COO(Coordinate: 좌표) 형식은 0이 아닌 데이터만 별도의 데이터 배열(Array)에 저장하고, 그 데이터가 가리키는 행과 열의 위치를 별도의 배열로 저장&lt;/li&gt;&#xA;&lt;li&gt;희소행렬 변환 위해 &lt;code&gt;Scipy&lt;/code&gt;를 활용한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; numpy &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; np&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dense &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;array([[&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;], [&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dense&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;array([[3, 0, 1],&#xA;       [0, 2, 0]])&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Scipy의 &lt;code&gt;coo_matrix&lt;/code&gt; 클래스를 이용해 &lt;code&gt;COO&lt;/code&gt;형식의 희소 행렬로 변환한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; scipy &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; sparse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 0이 아닌 데이터 추출&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;array([&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 행 위치와 열 위치를 각각 배열로 생성&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;row_pos &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;array([&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;col_pos &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;array([&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# sparse 패키지의 coo_matrix를 이용해 COO 형식으로 희소 행렬 생성&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sparse_coo &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sparse&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;coo_matrix((data, (row_pos, col_pos)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sparse_coo&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;toarray()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;array([[3, 0, 1],&#xA;       [0, 2, 0]])&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;다시 원래의 데이터 행렬로 추출됨을 알 수 있음.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-희소-행렬---csr-형식&#34;&gt;(2) 희소 행렬 - CSR 형식&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;CSR(Compressed Sparse Row)&lt;/code&gt; 형식은 &lt;code&gt;COO&lt;/code&gt; 형식이 행과 열의 위치를 나타내기 위해서 반복적인 위치 데이터를 사용해야 하는 문제점을 해결한 방식&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; numpy &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; array&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; scipy.sparse &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; csr_matrix&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 매트릭스&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;A &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; array([[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;], [&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;], [&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(A)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# CSR method&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;S &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; csr_matrix(A)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(S)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# reconstruct dense matrix&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;B &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; S&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;todense()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(B)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;[[1 0 0 1 0 0]&#xA; [0 0 2 0 0 1]&#xA; [0 0 0 2 0 0]]&#xA;  (0, 0)&#x9;1&#xA;  (0, 3)&#x9;1&#xA;  (1, 2)&#x9;2&#xA;  (1, 5)&#x9;1&#xA;  (2, 3)&#x9;2&#xA;[[1 0 0 1 0 0]&#xA; [0 0 2 0 0 1]&#xA; [0 0 0 2 0 0]]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;COO&lt;/code&gt;와 &lt;code&gt;CSR&lt;/code&gt;이 어떻게 희소 행렬의 메모리를 줄일 수 있는지 예제를 통해서 살펴보았다.&lt;/li&gt;&#xA;&lt;li&gt;간단하게 정리를 하면 다음과 같다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; numpy &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; array&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; scipy &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; sparse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dense &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; array([[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;], [&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;], [&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;coo &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sparse&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;coo_matrix(dense)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(coo)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;  (0, 0)&#x9;1&#xA;  (0, 3)&#x9;1&#xA;  (1, 2)&#x9;2&#xA;  (1, 5)&#x9;1&#xA;  (2, 3)&#x9;2&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;csr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sparse&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;csr_matrix(dense)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(csr)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;  (0, 0)&#x9;1&#xA;  (0, 3)&#x9;1&#xA;  (1, 2)&#x9;2&#xA;  (1, 5)&#x9;1&#xA;  (2, 3)&#x9;2&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;옵션&#34;&gt;옵션&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;사이킷런의 &lt;code&gt;CountVectorizer&lt;/code&gt;나 &lt;code&gt;TfidfVectorizer&lt;/code&gt; 클래스로 변환된 피처 벡터화 행렬은 모두 &lt;code&gt;Scipy&lt;/code&gt;의 &lt;code&gt;CSR&lt;/code&gt;형태의 희소 행렬이다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;lsquo;This implementation produces a sparse representation of the counts using scipy.sparse.csr_matrix.&amp;rsquo; from &lt;a href=&#34;https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html&#34;&gt;https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>텍스트 마이닝 - Bag of Words</title>
      <link>https://dschloe.github.io/programming/2020/11/ch02_bag_of_words/</link>
      <pubDate>Sun, 22 Nov 2020 14:10:47 +0900</pubDate>
      <guid>https://dschloe.github.io/programming/2020/11/ch02_bag_of_words/</guid>
      <description>&lt;h2 id=&#34;공지&#34;&gt;공지&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;해당 포스트는 취업 준비반 대상 강의 교재로 &lt;a href=&#34;https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C&#34;&gt;파이썬 머신러닝 완벽가이드&lt;/a&gt;를 축약한 내용입니다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;매우 좋은 책이니 가급적 구매하시기를 바랍니다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;i-개요&#34;&gt;I. 개요&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;문서가 가지는 모든 단어(Words)를 문맥이나 순서를 무시하고 일괄적으로 단어에 대해 빈도 값을 부여하여 피처 값을 추출하는 모델을 말한다.&lt;/li&gt;&#xA;&lt;li&gt;아래와 같은 세 개의 문장이 있다고 가정해본다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Doc 1: I love dogs.&lt;/li&gt;&#xA;&lt;li&gt;Doc 2: I hate dogs and knitting.&lt;/li&gt;&#xA;&lt;li&gt;Doc 3: Knitting is my hobby and passion.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;위 문장을 각각의 행렬로 표현하면 아래와 같다.&#xA;&lt;img src=&#34;https://dschloe.github.io/img/programming/2020/11/ch02_bag_of_words/ch02_bow.png&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;BOW&lt;/code&gt; 모델의 장점은 쉽고 빠른 구축에 있기 때문에, 활용도는 높은 편이지만, BOW 기반의 NLP 연구는 잘 되지 않는다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;문맥 의미 부족&lt;/li&gt;&#xA;&lt;li&gt;희소 행렬 문제, 위 그림에서 공백은 0을 의미하며, 이는 문장이 많으면 많을 수록 0의 값도 계속 늘어나는데, 이를 해결하기 위해 COO(Coordinate) 또는 CSR(Compressed Sparse Row)형식의 기법을 활용한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ii-bow-피처-벡터화&#34;&gt;II. BOW 피처 벡터화&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;피처 벡터화는 간단하게 말하면 문서 내 텍스트를 단어의 횟수나 정규화된 빈도 값으로 데이터 세트 모델로 변경하는 것을 말한다.&lt;/li&gt;&#xA;&lt;li&gt;보통 문서를 M이라고 하고, 단어를 N이라고 한다면, 행렬은 전체 문서의 개수 (M) X 전체 단어의 개수(N)으로 구성한다.&lt;/li&gt;&#xA;&lt;li&gt;일반적으로 BOW의 피처 벡터화는 두 가지 방식이 존재한다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;카운트 기반의 벡터화&lt;/li&gt;&#xA;&lt;li&gt;TF-IDF(Term Frequency - Inverse Document Prequency) 기반의 벡터화&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;1-카운트-기반의-벡터화&#34;&gt;(1) 카운트 기반의 벡터화&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;단어 피처에 값을 부여하는 경우를 말한다. 간단한 예시를 활용한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; collections &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; Counter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; nltk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; nltk &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; word_tokenize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nltk&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;download(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;punkt&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 텍스트&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;text &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;Yesterday I went fishing. I don&amp;#39;t fish that often, &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;so I didn&amp;#39;t catch any fish. I was told I&amp;#39;d enjoy myself, &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;but it didn&amp;#39;t really seem that fun.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 토큰화&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tokens &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; word_tokenize(text)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 모든 단어를 소문자화&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lower_tokens &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [t&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lower() &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; t &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; tokens]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Counter화&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bow_simple &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Counter(lower_tokens)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 상위 10개의 단어 추출&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(bow_simple&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;most_common(&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;[nltk_data] Downloading package punkt to /root/nltk_data...&#xA;[nltk_data]   Unzipping tokenizers/punkt.zip.&#xA;[(&#39;i&#39;, 5), (&#39;.&#39;, 3), (&amp;quot;n&#39;t&amp;quot;, 3), (&#39;fish&#39;, 2), (&#39;that&#39;, 2), (&#39;,&#39;, 2), (&#39;did&#39;, 2), (&#39;yesterday&#39;, 1), (&#39;went&#39;, 1), (&#39;fishing&#39;, 1)]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;단어 피처에 값을 부여할 때 각 문서에서 해당 언어가 나타나는 횟수, 즉 &lt;code&gt;Count&lt;/code&gt;를 부여하는 경우를 카운트 벡터화라고 한다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>텍스트 마이닝 - 텍스트 전처리</title>
      <link>https://dschloe.github.io/programming/2020/11/ch01_text_mining/</link>
      <pubDate>Wed, 18 Nov 2020 14:10:47 +0900</pubDate>
      <guid>https://dschloe.github.io/programming/2020/11/ch01_text_mining/</guid>
      <description>&lt;h2 id=&#34;i-개요&#34;&gt;I. 개요&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;NLP(Natural Language Processing): 기계가 인간의 언어를 이해하고 해석하는 데 중점&#xA;&lt;ul&gt;&#xA;&lt;li&gt;활용예제: 기계 번역, 챗봇, 질의응답 시스템 (딥러닝)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Text Analysis: 비정형 텍스트에서 의미 있는 정보를 추출하는 것에 중점&#xA;&lt;ul&gt;&#xA;&lt;li&gt;활용예제: 비즈니스 인텔리전스, 예측분석 (머신러닝)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;텍스트 분석의 예&#xA;&lt;ul&gt;&#xA;&lt;li&gt;텍스트 분류: 문서가 특정 분류 또는 카테고리에 속하는 것을 예측하는 기법&lt;/li&gt;&#xA;&lt;li&gt;감성 분석: 텍스트에서 나타나는 감정/판단/믿음/의견 등의 주관적인 요소 분석하는 기법&lt;/li&gt;&#xA;&lt;li&gt;텍스트 요약: 텍스트 내에서의 중요한 주제나 중심 사상 추출(Topic Modeling)&lt;/li&gt;&#xA;&lt;li&gt;텍스트 군집화(Clustering)와 유사도 측정: 비슷한 유형의 문서에 대해 군집화를 수행하는 기법. 텍스트 분류를 비지도학습으로 수행하는 방법&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ii-텍스트-분석-개요&#34;&gt;II. 텍스트 분석 개요&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;텍스트를 의미있는 숫자로 표현하는 것이 핵심&lt;/li&gt;&#xA;&lt;li&gt;영어 키워드: Feature Vectorization 또는 Feature Extraction.&lt;/li&gt;&#xA;&lt;li&gt;텍스트를 Feature Vectorization에는 BOW(Bag of Words)와 Word2Vec 두가지 방법이 존재.&lt;/li&gt;&#xA;&lt;li&gt;머신러닝을 수행하기 전에 반드시 선행되어야 함.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;1-텍스트-분석-수행-방법&#34;&gt;(1) 텍스트 분석 수행 방법&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1단계: 데이터 전처리 수행. 클렌징, 대/소문자 변경, 특수문자 삭제. 단어 등의 토큰화 작업, 의미 없는 단어(Stop word) 제거 작업, 어근 추출(Stemming/Lemmdatization)등의 텍스트 정규화 작업 필요&lt;/li&gt;&#xA;&lt;li&gt;2단계: 피처 벡터화/추출: 가공된 텍스트에서 피처 추출 및 벡터 값 할당.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Bag of Words: Count 기반 or TF-IDF 기반 벡터화&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;3단계: ML 모델 수립 및 학습/예측/평가를 수행.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-파이썬-기반의-nlp-텍스트-분석-패키지&#34;&gt;(2) 파이썬 기반의 NLP, 텍스트 분석 패키지&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;NTLK&lt;/code&gt;: 파이썬의 가장 대표적인 NLP 패키지. 방대한 데이터 세트와 서브 모듈 보유. 그러나, 속도가 느리다는 단점 존재&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Docs: &lt;a href=&#34;https://www.nltk.org/&#34;&gt;https://www.nltk.org/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&amp;lsquo;Gensim&amp;rsquo;: 토픽 모델링 분야에서 주로 사용되는 패키지. Word2Vec 구현도 가능&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Docs: &lt;a href=&#34;https://radimrehurek.com/gensim/&#34;&gt;https://radimrehurek.com/gensim/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;SpaCY&lt;/code&gt;: 최근 가장 주목을 받는 &lt;code&gt;NLP&lt;/code&gt; 패키지.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Docs: &lt;a href=&#34;https://spacy.io/&#34;&gt;https://spacy.io/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;iii-텍스트-전처리---정규화&#34;&gt;III. 텍스트 전처리 - 정규화&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;텍스트 자체를 바로 피처로 만들 수는 없다. 텍스트를 가공하기 위한 클렌징, 토큰화, 어근화 등이 필요.&lt;/li&gt;&#xA;&lt;li&gt;정규화 작업의 종류는 다음과 같음&#xA;&lt;ul&gt;&#xA;&lt;li&gt;클렌징: 불필요한 문자,기호 등을 사전제거 (정규표현식 주로 활용)&lt;/li&gt;&#xA;&lt;li&gt;토큰화&lt;/li&gt;&#xA;&lt;li&gt;필터링/스톱 워드 제거/철자 수정&lt;/li&gt;&#xA;&lt;li&gt;Stemming&lt;/li&gt;&#xA;&lt;li&gt;Lemmatization&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;1-문장-토큰화&#34;&gt;(1) 문장 토큰화&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;문장 토큰화(sentence tokenization)는 문장의 마침표, 개행문자(\n) 등 문장의 마지막을 뜻하는 기호에 따라 분리하는 것이 일반적임&lt;/li&gt;&#xA;&lt;li&gt;아래 샘플코드는 문장 토큰화에 관한 것임&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;punkt&lt;/code&gt;는 마침표, 개행 문자 등의 데이터 세트를 다운로드 받는다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; nltk &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; sent_tokenize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; nltk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nltk&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;download(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;punkt&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;[nltk_data] Downloading package punkt to /root/nltk_data...&#xA;[nltk_data]   Unzipping tokenizers/punkt.zip.&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;True&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;text_sample &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The Matrix is everywhere its all around us, here even in this wroom. &lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;               You can see it out your window or on your television. &lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;               You feel it when you go to work, or go to church or pay your taxes.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sentences &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sent_tokenize(text &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; text_sample)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(type(sentences), len(sentences))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(sentences)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;class &#39;list&#39;&amp;gt; 3&#xA;[&#39;The Matrix is everywhere its all around us, here even in this wroom.&#39;, &#39;You can see it out your window or on your television.&#39;, &#39;You feel it when you go to work, or go to church or pay your taxes.&#39;]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;위 코드에서 확인할 수 있는 것은 &lt;code&gt;sent_tokenize&lt;/code&gt;가 반환하는 것은 각각의 문장으로 구성된 list 객체이며, 이 객체는 3개의 문장으로 된 문자열을 가지고 있음을 알 수 있다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-단어-토큰화&#34;&gt;(2) 단어 토큰화&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;단어 토큰화(Word Tokenization)는 문장을 단어로 토큰화하는 것을 말하며, 기본적으로 공백, 콤마(,), 마침표(.), 개행문자 등으로 단어를 분리하지만, 정규 표현식을 이용해 다양한 유형으로 토큰화를 수행할 수 있다.&lt;/li&gt;&#xA;&lt;li&gt;단어의 순서가 중요하지 않은 경우에는 Bag of Word를 사용해도 된다.&lt;/li&gt;&#xA;&lt;li&gt;이제 코드를 구현해본다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; nltk &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; word_tokenize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sentence &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The Matrix is everywhere its all around us, here even in this room.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;words &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; word_tokenize(sentence)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(type(words), len(words))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(words)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;class &#39;list&#39;&amp;gt; 15&#xA;[&#39;The&#39;, &#39;Matrix&#39;, &#39;is&#39;, &#39;everywhere&#39;, &#39;its&#39;, &#39;all&#39;, &#39;around&#39;, &#39;us&#39;, &#39;,&#39;, &#39;here&#39;, &#39;even&#39;, &#39;in&#39;, &#39;this&#39;, &#39;room&#39;, &#39;.&#39;]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이번에는 문장 및 단어 토큰화를 함수로 구현해보도록 한다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;우선, 문장별로 토큰을 분리한 후&lt;/li&gt;&#xA;&lt;li&gt;분리된 문장별 단어를 토큰화로 진행하는 코드를 구현한다 (for loop 활용)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; nltk &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; word_tokenize, sent_tokenize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 여러 개의 문장으로 된 입력 데이터를 문장별로 단어 토큰화하게 만드는 함수&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;tokenize_text&lt;/span&gt;(text):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 문장별로 분리 토큰&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sentences &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sent_tokenize(text)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 분리된 문장별 단어 토큰화&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  word_tokens &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [word_tokenize(sentence) &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; sentence &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; sentences]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; word_tokens&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 여러 문장에 대해 문장별 단어 토큰화 수행&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;word_tokens &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; tokenize_text(text_sample)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(type(word_tokens), len(word_tokens))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(word_tokens)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;class &#39;list&#39;&amp;gt; 3&#xA;[[&#39;The&#39;, &#39;Matrix&#39;, &#39;is&#39;, &#39;everywhere&#39;, &#39;its&#39;, &#39;all&#39;, &#39;around&#39;, &#39;us&#39;, &#39;,&#39;, &#39;here&#39;, &#39;even&#39;, &#39;in&#39;, &#39;this&#39;, &#39;wroom&#39;, &#39;.&#39;], [&#39;You&#39;, &#39;can&#39;, &#39;see&#39;, &#39;it&#39;, &#39;out&#39;, &#39;your&#39;, &#39;window&#39;, &#39;or&#39;, &#39;on&#39;, &#39;your&#39;, &#39;television&#39;, &#39;.&#39;], [&#39;You&#39;, &#39;feel&#39;, &#39;it&#39;, &#39;when&#39;, &#39;you&#39;, &#39;go&#39;, &#39;to&#39;, &#39;work&#39;, &#39;,&#39;, &#39;or&#39;, &#39;go&#39;, &#39;to&#39;, &#39;church&#39;, &#39;or&#39;, &#39;pay&#39;, &#39;your&#39;, &#39;taxes&#39;, &#39;.&#39;]]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;각각의 개별 리스트는 해당 문장에 대한 토큰화된 단어를 요소로 가진다.&lt;/li&gt;&#xA;&lt;li&gt;문장을 단어별로 하나씩 토큰화 할 경우 문맥적인 의미는 무시될 수 밖에 없는데.. 이러한 문제를 해결하기 위해 도입된 개념이 n-gram이다.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;N-gram&lt;/code&gt;은 연속된 N개의 단어를 하나의 토큰화 단위로 분리해 내는 것.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;예시) I Love You&lt;/li&gt;&#xA;&lt;li&gt;(I, Love), (Love, You)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;iv-텍스트-전처리---스톱-워드불용어-제거&#34;&gt;IV. 텍스트 전처리 - 스톱 워드(불용어) 제거&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;의미가 없는 &lt;code&gt;be&lt;/code&gt;동사 등을 제거 할 때 사용함&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이런 단어들은 매우 자주 나타나는 특징이 있음&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;NTLK&lt;/code&gt;의 스톱 워드에 기본적인 세팅이 저장되어 있음&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; nltk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nltk&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;download(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;stopwords&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;[nltk_data] Downloading package stopwords to /root/nltk_data...&#xA;[nltk_data]   Unzipping corpora/stopwords.zip.&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;True&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;총 몇개의 &lt;code&gt;stopwords&lt;/code&gt;가 있는지 알아보고, 그중 20개만 확인해본다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;영어 stop words 개수:&amp;#34;&lt;/span&gt;, len(nltk&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;corpus&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stopwords&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;words(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;english&amp;#34;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(nltk&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;corpus&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stopwords&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;words(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;english&amp;#34;&lt;/span&gt;)[:&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;영어 stop words 개수: 179&#xA;[&#39;i&#39;, &#39;me&#39;, &#39;my&#39;, &#39;myself&#39;, &#39;we&#39;, &#39;our&#39;, &#39;ours&#39;, &#39;ourselves&#39;, &#39;you&#39;, &amp;quot;you&#39;re&amp;quot;, &amp;quot;you&#39;ve&amp;quot;, &amp;quot;you&#39;ll&amp;quot;, &amp;quot;you&#39;d&amp;quot;, &#39;your&#39;, &#39;yours&#39;, &#39;yourself&#39;, &#39;yourselves&#39;, &#39;he&#39;, &#39;him&#39;, &#39;his&#39;]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이번에는 &lt;code&gt;stopwords&lt;/code&gt;를 필터링으로 제거하여 분석을 위한 의미 있는 단어만 추출하도록 함.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; nltk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;stopwords &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; nltk&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;corpus&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stopwords&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;words(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;english&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;all_tokens &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; []&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 위 예제에서 3개의 문장별로 얻은 word_tokens list에 대해 불용어 제거하는 반복문 작성&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; sentence &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; word_tokens:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  filtered_words &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [] &lt;span style=&#34;color:#75715e&#34;&gt;# 빈 리스트 생성&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 개별 문장별로 토큰화된 문장 list에 대해 스톱 워드 제거&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; word &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; sentence:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 소문자로 모두 변환&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    word &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; word&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lower()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 토큰화된 개별 단어가 스톱 워드의 단어에 포함되지 않으면 word_tokens에 추가&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; word &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; stopwords:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      filtered_words&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;append(word)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  all_tokens&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;append(filtered_words)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(all_tokens)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;[[&#39;matrix&#39;, &#39;everywhere&#39;, &#39;around&#39;, &#39;us&#39;, &#39;,&#39;, &#39;even&#39;, &#39;wroom&#39;, &#39;.&#39;], [&#39;see&#39;, &#39;window&#39;, &#39;television&#39;, &#39;.&#39;], [&#39;feel&#39;, &#39;go&#39;, &#39;work&#39;, &#39;,&#39;, &#39;go&#39;, &#39;church&#39;, &#39;pay&#39;, &#39;taxes&#39;, &#39;.&#39;]]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;is&lt;/code&gt;, &lt;code&gt;this&lt;/code&gt;와 같은 불용어가 처리된 것 확인됨&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;v-텍스트-전처리---어간stemming-및-표제어lemmatization&#34;&gt;V. 텍스트 전처리 - 어간(Stemming) 및 표제어(Lemmatization)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;동사의 변화&#xA;&lt;ul&gt;&#xA;&lt;li&gt;예) Love, Loved, Loving&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;어근 및 표제어는 단어의 원형을 찾는 것.&lt;/li&gt;&#xA;&lt;li&gt;그런데, 표제어 추출(Lemmatization)이 어근(Stemming)보다는 보다 더 의미론적인 기반에서 단어의 원형을 찾는다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;1-어간stemming&#34;&gt;(1) 어간(Stemming)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Stemming&lt;/code&gt;은 원형 단어로 변환 시, 어미를 제거하는 방식을 사용한다.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;예) &lt;code&gt;worked&lt;/code&gt;에서 &lt;code&gt;ed&lt;/code&gt;를 제거하는 방식을 사용&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Stemming&lt;/code&gt;기법에는 크게 &lt;code&gt;Porter&lt;/code&gt;, &lt;code&gt;Lancaster&lt;/code&gt;, &lt;code&gt;Snowball Stemmer&lt;/code&gt;가 있음.&lt;/li&gt;&#xA;&lt;li&gt;소스코드 예시는 아래와 같음&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; nltk.stem &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; PorterStemmer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; nltk.stem &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; LancasterStemmer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;porter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; PorterStemmer()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lancaster &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; LancasterStemmer()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;word_list &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;friend&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;friendship&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;friends&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;friendships&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;stabil&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;destabilize&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;misunderstanding&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;railroad&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;moonlight&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;football&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:20}{1:20}{2:20}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Word&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Porter Stemmer&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lancaster Stemmer&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; word &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; word_list:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:20}{1:20}{2:20}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(word,porter&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stem(word),lancaster&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stem(word)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Word                Porter Stemmer      lancaster Stemmer   &#xA;friend              friend              friend              &#xA;friendship          friendship          friend              &#xA;friends             friend              friend              &#xA;friendships         friendship          friend              &#xA;stabil              stabil              stabl               &#xA;destabilize         destabil            dest                &#xA;misunderstanding    misunderstand       misunderstand       &#xA;railroad            railroad            railroad            &#xA;moonlight           moonlight           moonlight           &#xA;football            footbal             footbal             &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;LancasterStemmer 간단하지만, 가끔 지나치게 over-stemming을 하는 경향이 있다. 이는 문맥적으로는 큰 의미가 없을수도 있기 때문에 주의를 요망한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;For Lancaster:&amp;#34;&lt;/span&gt;, lancaster&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stem(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;destabilized&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;For Porter:&amp;#34;&lt;/span&gt;, porter&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stem(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;destabilized&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;For Lancaster: dest&#xA;For Porter: destabil&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;위와 같이 &lt;code&gt;destabilized(불안정한)&lt;/code&gt; 뜻을 가진 단어가 &lt;code&gt;destabil(불안정)&lt;/code&gt;이 아닌 &lt;code&gt;dest(목적지)&lt;/code&gt;로 변환되기도 한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-표제어-추출lemmatization&#34;&gt;(2) 표제어 추출(Lemmatization)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;표제어 추출은 품사와 같은 문법적인 요소와 더 의미적인 부분을 감안하여 정확한 철자로 된 어근 단어를 찾아준다.&lt;/li&gt;&#xA;&lt;li&gt;어근을 보통 &lt;code&gt;Lemma&lt;/code&gt;라고 부르며, 이 때의 어근은 Canoical Form, Dictionary Form, Citation Form 이라고 부른다.&lt;/li&gt;&#xA;&lt;li&gt;간단하게 예를 들면, &lt;code&gt;loves&lt;/code&gt;, &lt;code&gt;loving&lt;/code&gt;, &lt;code&gt;loved&lt;/code&gt;는 모두 &lt;code&gt;love&lt;/code&gt;에서 파생된 것이며, 이 때 &lt;code&gt;love&lt;/code&gt;는 &lt;code&gt;Lemma&lt;/code&gt;라고 부른다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; nltk.stem &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; WordNetLemmatizer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; nltk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nltk&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;download(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;wordnet&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;[nltk_data] Downloading package wordnet to /root/nltk_data...&#xA;[nltk_data]   Package wordnet is already up-to-date!&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;True&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;간단하게 단어들을 확인해본다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lemma &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; WordNetLemmatizer()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(lemma&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lemmatize(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;amusing&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;v&amp;#39;&lt;/span&gt;), lemma&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lemmatize(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;amuses&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;v&amp;#39;&lt;/span&gt;), lemma&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lemmatize(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;amused&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;v&amp;#39;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(lemma&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lemmatize(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;happier&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;v&amp;#39;&lt;/span&gt;), lemma&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lemmatize(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;happiest&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;v&amp;#39;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(lemma&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lemmatize(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;fancier&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;), lemma&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lemmatize(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;fanciest&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;amuse amuse amuse&#xA;happier happiest&#xA;fancy fancy&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;이번에는 조금 긴 문장을 활용하여 작성하도록 한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; nltk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; nltk.stem &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; WordNetLemmatizer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wordnet_lemmatizer &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; WordNetLemmatizer()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sentence &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;He was running and eating at same time. He has bad habit of swimming after playing long hours in the Sun.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;punctuations&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;?:!.,;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 해당되는 부호는 제외하는 코드를 만든다. &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sentence_words &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; nltk&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;word_tokenize(sentence)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; word &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; sentence_words:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; word &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; punctuations:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sentence_words&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;remove(word)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sentence_words&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:20}{1:20}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Word&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Lemma&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; word &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; sentence_words:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    print (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{0:20}{1:20}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;format(word,wordnet_lemmatizer&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lemmatize(word)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Word                Lemma               &#xA;He                  He                  &#xA;was                 wa                  &#xA;running             running             &#xA;and                 and                 &#xA;eating              eating              &#xA;at                  at                  &#xA;same                same                &#xA;time                time                &#xA;He                  He                  &#xA;has                 ha                  &#xA;bad                 bad                 &#xA;habit               habit               &#xA;of                  of                  &#xA;swimming            swimming            &#xA;after               after               &#xA;playing             playing             &#xA;long                long                &#xA;hours               hour                &#xA;in                  in                  &#xA;the                 the                 &#xA;Sun                 Sun                 &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;지금까지 진행한 것은 텍스트 전처리의 일환으로 활용한 것이다. 각각의 정규화, 불용어, 어간 및 표제어 등은 각각 함수로 작성하는 것을 권한다.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;vi-reference&#34;&gt;VI. Reference&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;권철민. (2020). 파이썬 머신러닝 완벽가이드. 경기, 파주: 위키북스&lt;/li&gt;&#xA;&lt;li&gt;Jabeen, H. (2018). Stemming and Lemmatization in Python. Retreived from &lt;a href=&#34;https://www.datacamp.com/community/tutorials/stemming-lemmatization-python&#34;&gt;https://www.datacamp.com/community/tutorials/stemming-lemmatization-python&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
