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

KoNLPy 한국어 처리 패키지

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

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

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

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

한국어 말뭉치

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

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

(정의화의원 대표발의 )

 의 안
 번 호

9890

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

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

이

형태소 분석

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

  • Kkma
  • Hannanum
  • Twitter
  • Mecab
  • Komoran

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

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

명사 추출

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

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

형태소 추출

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

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

품사 부착

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

In:
hannanum.pos(c[:65])
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:
kkma.pos(c[:65])
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')]
In:
twitter.pos(c[:65])
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')]

질문/덧글

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

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