텍스트 마이닝 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 분석불능범

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

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
46 [python][Django] [개념] Django는 Web Server가 아니라구요!! file 졸리운_곰 2023.03.11 464
45 [python][Django] [Django] Django Rest Framework에서 request 로깅하기 졸리운_곰 2023.03.11 381
44 [python][Django] Django REST Framework 졸리운_곰 2023.03.10 486
43 [python][Django] Django의 기본 개념 file 졸리운_곰 2023.03.10 473
42 Django 장고 텍스트에디터 사용하기(CKeditor) file 졸리운_곰 2020.11.22 933
41 Django Traffic Monitor + 트래픽 초과 알림 file 졸리운_곰 2020.11.22 513
40 공공 데이터 XML 크롤링을 통해 Django HTML에 띄워보기 file 졸리운_곰 2020.05.05 536
39 파이썬 장고와 워드프레스 연동의 간단한 방법 : Simple django wordpress integration with Django WordPress API library 졸리운_곰 2019.10.28 1200
38 Django의 세션을 이용한 단계별 페이지 만들기 file 졸리운_곰 2019.02.02 880
37 Django 템플릿 (Template) 졸리운_곰 2019.02.02 606
36 python django 기본 file 졸리운_곰 2018.09.02 1097
35 PyCharm과 함께 DJango와 RestFramework를 활용한 웹 사이트 구축하기 file 졸리운_곰 2018.05.22 563
34 Installing Python and Django on WampServer file 졸리운_곰 2018.02.18 740
33 python django 개요 다이어그램 file 졸리운_곰 2018.02.10 937
32 웹서버 중에서 Django를 선택한 이유 졸리운_곰 2017.08.22 1306
31 Django App 생성 file 졸리운_곰 2017.03.06 472
30 Django - 설치 및 Hello World 웹 서비스 만들기 졸리운_곰 2017.03.05 549
29 Learning Django and AngularJS 졸리운_곰 2017.02.06 1694
28 [Django 17] Django 디버깅 file 졸리운_곰 2017.01.28 1185
27 [Django 16] Django - Site Deployment 졸리운_곰 2017.01.28 598
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED