konlpy : 텍스트 분석하기 :: A4용지

텍스트 분석에는 총 5단계가 있습니다.


1. 데이터 수집 

2. 데이터 전처리 : 데이터를 다루기 편하게 만들어 놓기 위한 준비 단계

3. 데이터 탐색 

4. 데이터 분석

5. 인사이트 추출


프로그래밍 이것저것 게시판에서 데이터 수집을 위한 크롤링을 배워 보았으며

이번 시간에는 데이터 전처리 과정을 배워보도록 하겠습니다.


텍스트 데이터를 전처리 할 것인데요, 저는 konlpy를 사용하도록 하겠습니다.


한나눔, 꼬꼬마, 트위터, 코모란 등 한국어 형태소 분석기의 종류가 다양한데요, konlpy는 이와 같은 형태소 분석기들을 포함한 패키지입니다.


형태소 분석을 위해 konlpy 패키지에서 Kkma 라이브러리를 가져옵니다.


그 후 꼬꼬마 인스턴스를 생성합니다.

1
2
3
from konlpy.tag import Kkma
 
kkma = Kkma()
cs


이제 분석을 해보도록 하겠습니다.


우선 주어진 텍스트를 문장 단위로 끊어보는 일을 해보겠습니다.

여기서 사용되는 함수는 sentences()라는 함수입니다.

1
2
3
4
5
text = '오늘 날씨가 따뜻합니다. 내일은 눈이 온다고 합니다. 모레는 오늘보다 춥습니다.'
 
sentences = kkma.sentences(text)
 
print(sentences)
cs
['오늘 날씨가 따뜻합니다.', '내일은 눈이 온다고 합니다.', '모레는 오늘보다 춥습니다.']


리스트로 반환해주네요.


이번에는 명사를 추출해봅시다.

명사를 추출하는데 사용되는 함수는 nouns()입니다.

1
2
3
4
5
text = '오늘 날씨가 따뜻합니다. 내일은 눈이 온다고 합니다. 모레는 오늘보다 춥습니다.'
 
nouns = kkma.nouns(text)
 
print(nouns)
cs
['오늘', '날씨', '내일', '눈', '모레']


이번에는 텍스트의 구성요소를 형태소 단위로 쪼개어 보도록 합시다.

여기서 사용되는 함수는 morphs()입니다.

1
2
3
4
5
text = '오늘 날씨가 따뜻합니다. 내일은 눈이 온다고 합니다. 모레는 오늘보다 춥습니다.'
 
morphs = kkma.morphs(text)
 
print(morphs)
cs
['오늘', '날씨', '가', '따뜻', '하', 'ㅂ니다', '.', '내일', '은', '눈', '이', '오', 'ㄴ다고', '하', 'ㅂ니다', '.', '모레', '는', '오늘', '보다', '춥', '습니다', '.']


신기하네요.


이번에는 문장의 구성요소를 태깅해보도록 하겠습니다.

여기서 사용되는 함수는 pos()라는 함수입니다.

1
2
3
4
5
text = '오늘 날씨가 따뜻합니다. 내일은 눈이 온다고 합니다. 모레는 오늘보다 춥습니다.'
 
tag = kkma.pos(text)
 
print(tag)
cs
[('오늘', 'NNG'), ('날씨', 'NNG'), ('가', 'JKS'), ('따뜻', 'XR'), ('하', 'XSA'), ('ㅂ니다', 'EFN'), ('.', 'SF'), ('내일', 'NNG'), ('은', 'JX'), ('눈', 'NNG'), ('이', 'JKS'), ('오', 'VV'), ('ㄴ다고', 'ECE'), ('하', 'VV'), ('ㅂ니다', 'EFN'), ('.', 'SF'), ('모레', 'NNG'), ('는', 'JX'), ('오늘', 'NNG'), ('보다', 'JKM'), ('춥', 'VA'), ('습니다', 'EFN'), ('.', 'SF')]


튜플 형태로 출력이 되네요.

낱말 옆에 있는 알파벳들이 문장의 구성요소 중 하나를 뜻합니다.

예를들면 ECE : 대등 연결어미

EFN : 평서형 종결 어미

...

...


검색해보시면 나올 겁니다.

'통계 및 데이터 처리 > python' 카테고리의 다른 글

워드 클라우드 그리기 : 데이터 전처리  (1) 2017.08.22
pandas 테이블 합치기  (0) 2017.08.10
file io  (0) 2017.08.10
pandas 데이터 테이블 다루기  (0) 2017.08.09
pandas datatable 생성  (0) 2017.08.09

+ Recent posts