커뮤니티
학습자료실
  > 커뮤니티 > 학습자료실
<데이터 사이언스 마스터과정> 모듈2. 텍스트마이닝 32강 [단기] 텍스트마이닝 단어 빈…
  • 작성자: 관리자
  • 작성시간: 2019. 02. 25 13:11
  • 조회수: 34

안녕하세요. 와이즈인캠퍼스 입니다.

 

 

현재 빅데이터 사이언즈 마스터과정 모듈2. 텍스트마이닝  32강과 [단기] 텍스트마이닝 단어 빈도분석과 Word Clouding 강의 내용 중 

일부 방법3에 대한 소스 코딩이 수정 되었습니다.

 

use 단어가 결과 그래프에 표기가 되는 부분에서 오류를 잡습니다.

 

 

앞서 강의에서 설명드렸듯이

use와 USE, Use, USe, uSE 등 대소문자 구분이 되어있지만 우리가 같은 단어라고 인식하는 단어를 컴퓨터에서는 다르게 인식합니다. 

따라서 이를 통일해주는 과정이 대소문자 구분 과정입니다. 

 

다만, 대소문자 변환 과정 전에 use를 삭제해버리면 use는 삭제되지만, USE, Use, USe, uSE등은 삭제되지 않고

추후 이런 단어들이 대소문자 변환 과정에서 use로 남게 되는 것입니다. 

 

 

따라서 다음과 같이 코드를 수정해서 진행해주시면 되겠습니다.

 

import pandas as pd
import numpy as np
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer, WordNetLemmatizer
from sklearn.feature_extraction.text import CountVectorizer
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt

data=pd.read_csv('wos_ai_.csv', encoding='euc-kr').ABSTRACT

doc_set = []
words = []

 

 

1. 여기에서 replace로 고치시면 나중에 Stemming 처리나 알파벳 대소문자 처리 이후에 발생하는 단어에 대한 처리가

   불가능하니 여기서 고치지 마시기 바랍니다

 

 

 

 

 

 

 

 

for doc in data:
    if type(doc) != float:
        doc_set.append(doc.replace("-", " "))

EStop=pd.read_csv('stopwordsEN.csv', encoding='utf-8')
stopWords = set(EStop)
stemmer = PorterStemmer()

for doc in doc_set:
    tokenizedwords = word_tokenize(doc.lower())
    stoppedwords = [w for w in tokenizedwords if w not in stopWords]
    stemmedwords = [stemmer.stem(w) for w in stoppedwords]
    words.append(" ".join(stemmedwords))

 

2. 여기까지 처리된 word를 보시고 뺄 단어를 선택하셔서 다음과 같은 명령어를 사용하시기 바랍니다
  

   단, append 명령어는 이미 작성된 내용을 추가하는 것이기 때문에 doc_set=[] 명령어를 통해 doc_set 변수를 비워주시기 바랍니다. 

   또한 이미 대소문자 구분, stemming 처리된 words란 변수를 바탕으로 단어를 제거할 것이기 때문에 for doc in words를 사용합니다

 

 



 

doc_set = []
for doc in words:
    if type(doc) != float:
        doc=doc.replace("model", "")
        doc=doc.replace("data", "")
        doc=doc.replace("artifii", "")
        doc=doc.replace("use", "")
        doc_set.append(doc.replace("-", " "))

  

3. 다시 words라는 변수를 상기 말씀드린 것과 같은 이유로 비워주셔야 하며 다시 words 변수를 재작성합니다.

 

 

 

 

 

words = []

for doc in doc_set:
    tokenizedwords = word_tokenize(doc.lower())
    stoppedwords = [w for w in tokenizedwords if w not in stopWords]
    stemmedwords = [stemmer.stem(w) for w in stoppedwords]
    words.append(" ".join(stemmedwords))

 

4. cv = CountVectorizer(max_features=100, stop_words='english').fit(words)부터 진행하셔서 wordcloud 작성하시면 됩니다. 

    다시 삭제하고 싶은 단어가 있으면 2번부터 진행하시되 doc.replace 명령어로 추가하시면 되겠습니다.​ 

 

 

 

 

 

 

 

감사합니다.


(주)와이즈인캠퍼스 서울시 강남구 역삼로 123, 7층 | 대표이사:김원표

대표전화:02-558-5144 | Fax:02-558-5146 | E-mail:jeonjsy1@wiseinc.co.kr l 개인정보책임자:전숙영

사업자등록번호:113-86-13917 | 통신판매신고:제 2010 - 서울강남 - 00331호

Copyright ⓒ 2018 (주)와이즈인컴퍼니. All Rights Reserved