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

KoNLPy 한국어 처리 패키지

KoNLPy(코엔엘파이라고 읽는다)는 한국어 정보처리를 위한 파이썬 패키지이다. 자세한 내용은 다음 웹사이트를 참조한다.

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

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

  • 한국어 말뭉치
  • 형태소 분석 및 품사 태깅

한국어 말뭉치

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

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

(정의화의원 대표발의 )

 의 안
 번 호

9890

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

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

이

형태소 분석

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

  • Kkma
  • Hannanum
  • Twitter
  • Mecab
  • Komoran

이 클래스들은 다음과 같은 메서드를 공통적으로 제공한다.

  • morphs : 형태소 추출
  • nouns : 명사만 추출
  • pos : 품사 부착(POS tagging)
In [5]:
from konlpy.tag import *
hannanum = Hannanum()
kkma = Kkma()
twitter = Twitter()

명사 추출

문자열에서 명사만 추출하려면 noun 명령을 사용한다.

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

형태소 추출

명사 뿐 아니라 모든 품사의 형태소를 알아내려면 morphs라는 명령을 사용한다.

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

품사 부착

pos 명령을 사용하면 품사 부착을 한다. 다만 이 때 출력되는 품사의 정의 및 기호는 형태소 분석기마다 다르므로 각 형태소 분석기에 대한 문서를 참조한다.

In [13]:
kkma.pos(c[:66])
Out:
[('대한민국', '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'),
 ('하', 'XSV'),
 ('ㄴ', 'ETD')]
In [12]:
hannanum.pos(c[:66])
Out:
[('대한민국헌법', '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 [14]:
twitter.pos(c[:66])
Out:
[('대한민국', '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'),
 ('한', 'Josa')]

질문/덧글

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 오후

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