텍스트 마이닝 3편. 형태소 분석 사전작업

 

 

 
 

여기서는 아나콘다 파이썬에서 지원하지 않는 KoNLPy 모듈을 사용합니다.
내부적으로 자바 언어로 작성된 한국어 형태소 분석기를 호출하기 때문에 복잡한 준비를 해야 합니다.

자바개발자 도구 설치
자바 개발자 도구는 다음 사이트 에서 다운 받아 설치합니다.
http://www.oracle.com/technetwork/java/javase/downloads/index.html

JPype 패키지 설치
.whl 형식으로 패키징된 비공식 라이브러리 배포처인 http://www.lfd.uci.edu/~gohlke/pythonlibs/에 접속하여 JPype라이브러리 패키지를 내려받아 pip으로 설치합니다.
저는 JPype1‑0.6.2‑cp36‑cp36m‑win_amd64.whl를 다운로드 받았습니다.

그리고는 명령창에서 다음과 같이 실행하여 설치합니다.
$ pip install JPype1‑0.6.2‑cp36‑cp36m‑win_amd64.whl

KoNLPy모듈 설치
명령창에서 설치합니다.
$ pip install konlpy

형태소와 형태소 분석의 개념
이제 본격적으로 분석하는 작업을 시작해 보겠습니다.
형태소는 최소 의미 단위를 말합니다.  형태소 분석이란 언어 단위인 어절 혹은 문장을 형태소로 나눠가는 과정입니다. 형태소로 분절을 해야 컴퓨터가 분석이 가능한 형태가 됩니다.

“나는 배가 아파서 걸어서 집에 갔습니다”라는 문장을 형태소로 나누면 다음과 같습니다.

나/대명사 는/보조사 배/명사+가/격조사 아프/형용사+아서/연결어미 걷/동사+어서/연결어미 집/명사+에/격조사 가/동사+았/선어말어미+습니다/어말어미

나, 배, 아프, 걷, 집, 가는 어휘적 의미를 나타내는 어휘 형태소 입니다. 는, 가, 아서, 어서, 에, 았, 습니다는 문법적 의미를 나타내며 이러한 형태소들을 문법 형태소라고 부릅니다.

형태소 분석은 간단해 보이지만 사실은 매우 복잡한 과정입니다. 많은 경우에 명사와 조사의 분리, 동사와 형용사의 어간과 어미의 분리는 각각의 이들 어휘의 사전만 있으면 가능할 것으로 보이지만 불규칙 용언의 활용 등을 처리하려면 복잡한 규칙이 필요합니다.
예를들어 보겠습니다.

나는 -> 나/대명사+는/보조사 | 나/동사+는/관형형어미 | 날/동사+는/관형형어미 걸어서 -> 걷/동사+어서/연결어미 | 걸/형용사+어서/연결어미 | 걸/동사+어서/연결어미

위에서 보는 것과 같이 하나의 어절에 대하여도 여러 개의 분석 결과가 있을 수 있습니다. 의미가 중의적이기 때문에 이 중의성을 해결하는 과정이 필요합니다. 좋은 형태소 분석기는 이런 중의성을 잘 해결해야 하기 때문에 개발하기가 어렵습니다.  사실 제가 커버할 수 있는 내용도 아닙니다.

간단한 형태소 분석 라이브러리 사용하기

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

#!/usr/bin/env python3
#  -*- coding: utf-8 -*

import pprint
import konlpy.tag

komoran = konlpy.tag.Komoran()

text = u"사랑하는 우리 와이프의 무병장수를 기원합니다."
pprint.pprint(komoran.pos(text))


결과는

[('사랑', 'NNG'),
 ('하', 'XSV'),
 ('는', 'ETM'),
 ('우리', 'NP'),
 ('와이프', 'NNG'),
 ('의', 'JKG'),
 ('무병장수', 'NNG'),
 ('를', 'JKO'),
 ('기원', 'NNG'),
 ('하', 'XSV'),
 ('ㅂ니다', 'EF'),
 ('.', 'SF')


konlp.tag 모듈이 제공하는 Komoran 클래스를 이용합니다. 위에서는 형태소 분석을 수행하는 객체로 komoran 이라는 객체를 생성하였고, 형태소 분석을 할 때에는 이 객체의 pos() 메소드를 사용합니다. 참고로 pprint모듈의 pprint() 함수는 문자열이나 숫자가 아닌 리스트, 딕셔너리 등의 복잡한 객체를 보기 좋게 인쇄할 때 쓰입니다. pos() 메소드가 돌려주는 형태소 분석 결과는 형태소와 품사로 이루어진 튜플의 리스트 입니다. 형태소 분석 결과를 이용하기 위해서는 형태소 분석기가 돌려주는 품사 집합(part-of-speechtagset) 를 알고 있어야 합니다. Komoran() 클래스의 품사 집합은 다음과 같습니다.

NNG 일반 명사 NNP 고유 명사 NNB 의존 명사 NR 수사 NP 대명사 VV 동사 VA 형용사 VX 보조 용언 VCP 긍정 지정사 VCN 부정 지정사 MM 관형사 MAG 일반 부사 MAJ 접속 부사 IC 감탄사 JKS 주격 조사 JKC 보격 조사 JKG 관형격 조사 JKO 목적격 조사 JKB 부사격 조사 JKV 호격 조사 JKQ 인용격 조사 JC 접속 조사 JX 보조사 EP 선어말어미 EF 종결 어미 EC 연결 어미 ETN 명사형 전성 어미 ETM 관형형 전성 어미 XPN 체언 접두사 XSN 명사파생 접미사 XSV 동사 파생 접미사 XSA 형용사 파생 접미사 XR 어근 SF 마침표, 물음표, 느낌표 SE 줄임표 SS 따옴표,괄호표,줄표 SP 쉼표,가운뎃점,콜론,빗금 SO 붙임표(물결,숨김,빠짐) SW 기타기호 (논리수학기호,화폐기호) SH 한자 SL 외국어 SN 숫자 NF 명사추정범주 NV 용언추정범주 NA 분석불능범

다음시간에는 형태소 분석 실전으로 넘어갑니다.

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
232 Mining English and Korean text with Python file 졸리운_곰 2018.03.26 8195
231 [TENSORFLOW] tensorboard 사용하기 file 졸리운_곰 2018.03.24 1287
230 텐서보드 사용법 file 졸리운_곰 2018.03.24 166
229 Networks in Python and SciKit Learn 0.18 file 졸리운_곰 2018.03.22 356
228 한글 NLP with Python file 졸리운_곰 2018.03.04 425
227 python 텐서플로우 설치 후 테스트 코드 file 졸리운_곰 2018.03.04 1171
226 파이썬으로 3줄 요약기를 만들어보자. file 졸리운_곰 2018.03.04 2253
225 python dev 사용자 입력과 출력 졸리운_곰 2018.03.01 60
224 [파이썬으로 구현한 알고리즘] (7) 트리(Tree) file 졸리운_곰 2018.02.27 1447
223 [파이썬으로 구현한 알고리즘] (6) 쉘 정렬(Shell Sort) file 졸리운_곰 2018.02.27 262
222 [파이썬으로 구현한 알고리즘] (5) 삽입 정렬(Insertion Sort) file 졸리운_곰 2018.02.27 256
221 [파이썬으로 구현한 알고리즘] (4) 버블 정렬(Bubble Sort) file 졸리운_곰 2018.02.27 268
220 [파이썬으로 구현한 알고리즘] (3) 선택 정렬(Selection Sort) file 졸리운_곰 2018.02.27 103
219 [파이썬으로 구현한 알고리즘] (2) 스택/큐 (Stack/Queue) file 졸리운_곰 2018.02.27 244
218 [파이썬으로 구현한 알고리즘] (1) 연결 리스트(Linked List) file 졸리운_곰 2018.02.27 488
217 텍스트 마이닝 4편. 형태소 분석(1/3) 졸리운_곰 2018.02.18 1602
» 텍스트 마이닝 3편. 형태소 분석 사전작업 졸리운_곰 2018.02.18 346
215 텍스트 마이닝 2편. 텍스트 파일 file 졸리운_곰 2018.02.18 716
214 텍스트 마이닝 1편. 소개 file 졸리운_곰 2018.02.18 393
213 증권뉴스데이터 수집(3/3편) 졸리운_곰 2018.02.18 105
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED