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

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

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
47 [python] 파이썬 f-string (파이썬 스트링 앞에 f') file 졸리운_곰 2021.07.17 446
46 [Python] 파이썬으로 복리 계산하기 file 졸리운_곰 2021.07.17 562
45 [python, 파이썬] 연습 문제: 복리 이자 계산 졸리운_곰 2021.07.17 925
44 [python] 파이썬 기초 문법 정리 졸리운_곰 2021.05.17 861
43 [python] [GPU]GPU 사용 Python 코드 실행 졸리운_곰 2021.04.21 567
42 [python] 파이썬 스케줄 수행 - schedule, apscheduler file 졸리운_곰 2020.07.26 454
41 파이썬 스크립트 스케줄링하기 file 졸리운_곰 2020.07.26 1011
40 Python Scheduler 만들기(APScheduler) 졸리운_곰 2020.07.26 1089
39 [python] 주피터 노트북에서 패키지 설치 졸리운_곰 2018.12.06 1225
38 Data Structures and Algorithm In python 파이썬으로 자료구조와 알고리즘 : 출처 인터넷 file 졸리운_곰 2018.08.27 514
37 Mastering Basic Algorithms in the Python Language 이북 출처 인터넷 file 졸리운_곰 2018.08.27 629
36 python dev 사용자 입력과 출력 졸리운_곰 2018.03.01 471
35 APScheduler 사용기 file 졸리운_곰 2018.02.09 1070
34 [파이썬, 조각코드] 스케쥴러 만들기. 졸리운_곰 2018.02.09 795
33 Python virtualenv 정리 (Linux/Windows) 졸리운_곰 2018.01.23 486
32 [Python] 코드난독화 file 졸리운_곰 2018.01.19 1001
31 Python - Way to recursively find and replace string in text files 졸리운_곰 2017.08.30 478
30 Python Coding for Minecraft 마인크래프트를 위한 파이썬 프로그래밍 file 졸리운_곰 2017.05.05 1794
29 Atom을 Python 개발 툴로 사용하기 file 졸리운_곰 2017.03.06 938
28 IPython Notebook을 통한 데이터 분석 #3 file 졸리운_곰 2017.03.05 754
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED