작성자: admin 작성일시: 2016-06-14 23:10:31 조회수: 1039 다운로드: 40
카테고리: Python 태그목록:

konlpy 한국어 처리 패키지 소개

konlpy는 한국어 정보처리를 위한 파이썬 패키지이다.

konlpy는 다음과 같은 다양한 형태소 분석, 태깅 라이브러리를 파이썬에서 쉽게 사용할 수 있도록 모아놓았다.

konlpy 는 다음과 같은 기능을 제공한다.

  • 한국어 corpus
  • 한국어 처리 유틸리티
  • 형태소 분석 및 품사 태깅

한국어 corpus

In [4]:
from konlpy.corpus import kolaw
kolaw.fileids()
Out[4]:
['constitution.txt']
In [6]:
c = kolaw.open('constitution.txt').read()
print(c[:100])
대한민국헌법

유구한 역사와 전통에 빛나는 우리 대한국민은 3·1운동으로 건립된 대한민국임시정부의 법통과 불의에 항거한 4·19민주이념을 계승하고, 조국의 민주개혁과 평화적 통일의
In [9]:
from konlpy.corpus import kobill
kobill.fileids()
Out[9]:
['1809895.txt',
 '1809894.txt',
 '1809898.txt',
 '1809896.txt',
 '1809890.txt',
 '1809899.txt',
 '1809891.txt',
 '1809892.txt',
 '1809893.txt',
 '1809897.txt']
In [11]:
d = kobill.open('1809890.txt').read()
print(d[:100])
지방공무원법 일부개정법률안

(정의화의원 대표발의 )

 의 안
 번 호

9890

발의연월일 : 2010.  11.  12.  

발  의  자 : 정의화․이명수․김을동 

이

한국어 처리 유틸리티

In [7]:
x = [u"한글", {u"한글 키": [u"한글 밸류1", u"한글 밸류2"]}]
print(x)
[u'\ud55c\uae00', {u'\ud55c\uae00 \ud0a4': [u'\ud55c\uae00 \ubc38\ub9581', u'\ud55c\uae00 \ubc38\ub9582']}]
In [8]:
from konlpy.utils import pprint
pprint(x)
[한글,
 {한글 키: [한글 밸류1, 한글 밸류2]}]
In [14]:
from konlpy.utils import concordance
idx = concordance(u'대한민국', c, show=True)
0	대한민국헌법 유구한 역사와
9	대한국민은 3·1운동으로 건립된 대한민국임시정부의 법통과 불의에
98	총강 제1조 ① 대한민국은 민주공화국이다. ②대한민국의
100	① 대한민국은 민주공화국이다. ②대한민국의 주권은 국민에게
110	나온다. 제2조 ① 대한민국의 국민이 되는
126	의무를 진다. 제3조 대한민국의 영토는 한반도와
133	부속도서로 한다. 제4조 대한민국은 통일을 지향하며,
147	추진한다. 제5조 ① 대한민국은 국제평화의 유지에
787	군무원이 아닌 국민은 대한민국의 영역안에서는 중대한
1836	파견 또는 외국군대의 대한민국 영역안에서의 주류에
3620	경제 제119조 ① 대한민국의 경제질서는 개인과
In [15]:
idx
Out[15]:
[0, 9, 98, 100, 110, 126, 133, 147, 787, 1836, 3620]

형태소 분석

konlpy는 tag 서브패키지에서 형태소 분석을 위한 5개의 클래스를 제공한다.

  • Kkma
  • Hannanum
  • Twitter
  • Komoran
  • Mecab

이 클래스는 다음과 같은 메서드를 대부분 제공한다.

  • morphs : 형태소 추출
  • nouns : 명사 추출
  • pos : pos 태깅
In [41]:
from konlpy.tag import *
hannanum = Hannanum()
kkma = Kkma()
twitter = Twitter()

명사 추출

In [27]:
pprint(hannanum.nouns(c[:65]))
[대한민국헌법,
 유구,
 역사,
 전통,
 빛,
 우리,
 대한국민,
 3·1운동,
 건립,
 대한민국임시정부,
 법통,
 불의,
 항거]
In [33]:
pprint(kkma.nouns(c[:65]))
[대한,
 대한민국,
 대한민국헌법,
 민국,
 헌법,
 유구,
 역사,
 전통,
 우리,
 국민,
 3,
 1,
 1운동,
 운동,
 건립,
 대한민국임시정부,
 임시,
 정부,
 법통,
 불의,
 항거]
In [38]:
pprint(twitter.nouns(c[:65]))
[대한민국,
 헌법,
 유구,
 역사,
 전통,
 우리,
 대한,
 국민,
 운동,
 건립,
 대한민국,
 임시정부,
 법,
 통과,
 불의,
 항거]

형태소 추출

In [29]:
pprint(hannanum.morphs(c[:65]))
[대한민국헌법,
 유구,
 하,
 ㄴ,
 역사,
 와,
 전통,
 에,
 빛,
 나는,
 우리,
 대한국민,
 은,
 3·1운동,
 으로,
 건립,
 되,
 ㄴ,
 대한민국임시정부,
 의,
 법통,
 과,
 불의,
 에,
 항거]
In [39]:
pprint(kkma.morphs(c[:65]))
[대한민국,
 헌법,
 유구,
 하,
 ㄴ,
 역사,
 와,
 전통,
 에,
 빛나,
 는,
 우리,
 대하,
 ㄴ,
 국민,
 은,
 3,
 ·,
 1,
 운동,
 으로,
 건립,
 되,
 ㄴ,
 대한민국,
 임시,
 정부,
 의,
 법통,
 과,
 불의,
 에,
 항거]
In [42]:
pprint(twitter.morphs(c[:65]))
[대한민국,
 헌법,
 유구,
 한,
 역사,
 와,
 전통,
 에,
 빛나는,
 우리,
 대한,
 국민,
 은,
 3,
 ·,
 1,
 운동,
 으로,
 건립,
 된,
 대한민국,
 임시정부,
 의,
 법,
 통과,
 불의,
 에,
 항거]

품사 태깅

In [28]:
pprint(hannanum.pos(c[:65]))
[(대한민국헌법, N),
 (유구, N),
 (하, X),
 (ㄴ, E),
 (역사, N),
 (와, J),
 (전통, N),
 (에, J),
 (빛, N),
 (나는, J),
 (우리, N),
 (대한국민, N),
 (은, J),
 (3·1운동, N),
 (으로, J),
 (건립, N),
 (되, X),
 (ㄴ, E),
 (대한민국임시정부, N),
 (의, J),
 (법통, N),
 (과, J),
 (불의, N),
 (에, J),
 (항거, N)]
In [43]:
pprint(kkma.pos(c[:65]))
[(대한민국, NNG),
 (헌법, NNG),
 (유구, NNG),
 (하, XSV),
 (ㄴ, ETD),
 (역사, NNG),
 (와, JC),
 (전통, NNG),
 (에, JKM),
 (빛나, VV),
 (는, ETD),
 (우리, NNM),
 (대하, VV),
 (ㄴ, ETD),
 (국민, NNG),
 (은, JX),
 (3, NR),
 (·, SP),
 (1, NR),
 (운동, NNG),
 (으로, JKM),
 (건립, NNG),
 (되, XSV),
 (ㄴ, ETD),
 (대한민국, NNG),
 (임시, NNG),
 (정부, NNG),
 (의, JKG),
 (법통, NNG),
 (과, JC),
 (불의, NNG),
 (에, JKM),
 (항거, NNG)]
In [44]:
pprint(twitter.pos(c[:65]))
[(대한민국, Noun),
 (헌법, Noun),
 (유구, Noun),
 (한, Josa),
 (역사, Noun),
 (와, Josa),
 (전통, Noun),
 (에, Josa),
 (빛나는, Verb),
 (우리, Noun),
 (대한, Noun),
 (국민, Noun),
 (은, Josa),
 (3, Number),
 (·, Foreign),
 (1, Number),
 (운동, Noun),
 (으로, Josa),
 (건립, Noun),
 (된, Verb),
 (대한민국, Noun),
 (임시정부, Noun),
 (의, Josa),
 (법, Noun),
 (통과, Noun),
 (불의, Noun),
 (에, Josa),
 (항거, Noun)]

질문/덧글

from konlpy.utils import concordance moon*** 2016년 10월 17일 10:34 오후

from konlpy.utils import concordance
idx = concordance(u'대한민국', c, show=True)

에서 concordance 의 기능은 첫번째 인수값을 갖고 있는 c를 가져오는 것인가요?

답변: from konlpy.utils import concordance 관리자 2016년 10월 20일 3:07 오후

문서내의 형태소 위치를 찾는 함수입니다.