비투즈의 노트르담

인터넷들 예제를 무더기로 보고 따라하다 보니 아래 블로거의 예제를 애용하게 되었다.

 

https://blog.naver.com/imsam77/221258133789 --임샘의 세상에 휘둘리지 않는 힘

(이분은 또 Lifebloom(www.lifebloom.biz) 를 참조하는듯 하다.

 

IT 전문이신 줄 알았는데 분야별 구분하여 스스로를 발전시키시는 것 같아 본받을점이 있는 듯 하다.

우선 예제들 중에 많이 참조할 듯 하여 #태그

 

 

예제를 따라하려고 했으나

 

Try setting up the JAVA_HOME environment variable proprerly 발생

 

python 만 필요한 줄 알았는데 JAVA도 필요 한 듯 하다.

이유를 찾아보니

 

 

파이썬용 한글자연어처리 모듈(KoNLPY, korean natural language python)은 파이참에서 모듈추가 기능으로 설치하면 되지만,

KoNLPY가 java 클래스를 사용하기 때문에 자바가 설치되어 있어야 합니다.  
또한 파이썬과 자바를 연결해 주는 JPype1 모듈도 설치해야 한다.

 

텍스트 마이닝 / 형태소 분석등을 위해 해당 모듈들이 필요한 듯 하다.

I. 개발언어 3가지 : Python(PyCharm), JAVA(JDK), Visual C++ 
II. 텍스트마이닝 파이썬 패키지 7가지 : beautifulsoup4, JPype1, pygame, simplejson, Pytagcloud, Twitter, koLNPy

 

beautifulsoup4 : Screen-scraping library

JPype1 : Python-Java bridge.
참고로 이 모듈은 자바 클래스를 파이썬에서 사용할 수 있도록 브릿지 역할을 하기 때문에, 이 모듈을 설치하기 전에 자바개발환경(JDK)이 먼저 설치되어 있어야 정상적으로 설치됩니다. 

[단어 시각화 모듈 (워드 클라우드)]
2.3. pygame : Python Game Development
2.4. simplejson : Simple, fast, extensible JSON encoder/decoder for Python.
2.5. pytagcloud : Create beautiful clouds as images or HTML.

[한국어 텍스트 분석 모듈]
2.6. twitter : An API and command-line toolset for Twitter.
2.7. koLNPy : Python package for Korean natural language processing

뒤 늦게 알게 된 사실이 있습니다.
JPype1 모듈을 설치하기 위해서는 자바(JDK)  뿐만아니라 Visual Studio C++ 도 사전에 설치되어 있어야 합니다.  파이참에서 JPype1 모듈 설치가 정상적으로 되지 않아 설치에러 원인을 확인하니 MS Visual  C++이 필요하다고 합니다. 

 

자 부가 설명은 완료됐고 형태소 분석을 따라해보자

 

이 프로그램은 6단계의 처리절차를 거칩니다.

# 1. 이전 포스트에서 크롤링한 댓글파일을 읽기전용으로 호출함
# 2. 형태소 검출가공을 위해 변수 okja에 전체댓글을 다시저장
# 3. 트윗터 패키지 안에 konlpy 모듈호출 및 객체생성
# 4. 각 문장별(for문 사용)로 형태소구분 및 품사매칭 (koLNPy함수)
# 5. 명사나 형용사만 선별해 리스트에 담기
# 6. 선별된 품사별 빈도수 계산 & 상위 빈도 10위 까지 출력

 

===============preprocess.py==============

 

from collections import Counter

# 1. 이전 포스트에서 크롤링한 댓글파일을 읽기전용으로 호출함
file = open('okja1.txt','r',encoding='utf-8')
lines = file.readlines()

# 2. 변수 okja에 전체댓글을 다시저장
okja = []
for line in lines:
    okja.append(line)
file.close()

# 3. 트윗터 패키지 안에 konlpy 모듈호출
from konlpy.tag import Twitter
twitter = Twitter()

# 4. 각 문장별로 형태소 구분하기
sentences_tag = []
for sentence in okja:
    morph = twitter.pos(sentence)
    sentences_tag.append(morph)
    print(morph)
    print('-'*30)

print(sentences_tag)
print(len(sentences_tag))
print('\n'*3)

# 5. 명사 혹은 형용사인 품사만 선별해 리스트에 담기
noun_adj_list = []
for sentence1 in sentences_tag:
    for word, tag in sentence1:
        if tag in ['Noun','Adjective']:
            noun_adj_list.append(word)

# 6. 선별된 품사별 빈도수 계산 & 상위 빈도 10위 까지 출력
counts = Counter(noun_adj_list)
print(counts.most_common(10))

=====================================================

[('사랑스럽', 'Adjective'), ('고', 'Eomi'), ('잔혹', 'Noun'), ('한', 'Josa'), ('판타지', 'Noun'), ('이자', 'Noun'), ('현실', 'Noun')]

 

사랑스럽 - 형용사

고 - 어미

 

잔혹 - 명사

한 - 조사

 

반복 횟수

 

[('영화', 63), ('옥자',27), ('좋', 20), ('감독', 19), ('미자', 16), ('봉준호', 15), ('것', 13), ('동물', 12), ('돼지', 11) ]

 

 


 

'Crawling(Python)' 카테고리의 다른 글

2)댓글 수집하기  (0) 2018.07.10
1.크롤링시작하기(Python 설치)  (0) 2018.07.10