[코엔엘파이(KoNLPy)의 설치 과정]


1) JAVA 1.7 이상의 설치

오라클(Oracle) 사이트(http://www.oracle.com/technetwork/java/javase/downloads/index.html)에서해당 OS에 맞는 JDK(Java Developement Kit)를 설치한다.

2) JAVA_HOME Path 설정

• JDK가 정상적으로 동작하기 위하여 JAVA_HOME 경로(Path)를 설정해야한다.

• [시스템 변수]에 path의 변수값 부분에 JDK가 설치되어있는 경로를 입력한다.

3) JPype1 (>=0.5.7) 설치

‘코엔엘파이’의 경우 JAVA로 작성된 모듈을 로드하여야 하기 때문에 JPype1 0.5.7 이상이 설치되어야 한다.

pip install jpype1

4) KoNLPy 설치

pip install konlpy

[용어]


품사 태깅(tag)


형태소의 뜻과 문맥을 고려하여 그것에 마크업을 하는 일입니다.

예를 들어: 가방에 들어가신다 -> 가방/NNG + 에/JKM + 들어가/VV + 시/EPH + ㄴ다/EFN

한국어 품사 태그 비교표 링크: https://docs.google.com/spreadsheets/d/1OGAjUvalBuX-oZvZ_-9tEfYD2gQe7hTGsgUpiiBSXI8/edit#gid=0

말뭉치(corpus)

Hannanum - KAIST 말뭉치를 이용해 생성된 사전

Kkma - 세종 말뭉치를 이용해 생성된 사전 (꼬꼬마)

Mecab - 세종 말뭉치로 만들어진 CSV형태의 사전

Komoran- Java로 쓰여진 오픈소스 한글 형태소 분석기

Twitter(Okt) - 오픈소스 한글 형태소 분석기

[기본 사용 방식]


ex1) 형태소 분석기별 메서드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from konlpy.tag import Hannanum
hannanum = Hannanum() 
 
hannanum.analyze  #구(Phrase) 분석
hannanum.morphs   #형태소 분석
hannanum.nouns    #명사 분석
hannanum.pos      #형태소 분석 태깅
 
# 사용예시
print(hannanum.analyze(u'롯데마트의 흑마늘 양념 치킨이 논란이 되고 있다.'))
[[[('롯데마트''ncn'), ('의''jcm')], [('롯데마트의''ncn')], [('롯데마트''nqq'), ('의''jcm')], [('롯데마트의''nqq')]], [[('흑마늘''ncn')], [('흑마늘''nqq')]], [[('양념''ncn')]], [[('치킨''ncn'), ('이''jcc')], [('치킨''ncn'), ('이''jcs')], [('치킨''ncn'), ('이''ncn')]], [[('논란''ncpa'), ('이''jcc')], [('논란''ncpa'), ('이''jcs')], [('논란''ncpa'), ('이''ncn')]], [[('되''nbu'), ('고''jcj')], [('되''nbu'), ('이''jp'), ('고''ecc')], [('되''nbu'), ('이''jp'), ('고''ecs')], [('되''nbu'), ('이''jp'), ('고''ecx')], [('되''paa'), ('고''ecc')], [('되''paa'), ('고''ecs')], [('되''paa'), ('고''ecx')], [('되''pvg'), ('고''ecc')], [('되''pvg'), ('고''ecs')], [('되''pvg'), ('고''ecx')], [('되''px'), ('고''ecc')], [('되''px'), ('고''ecs')], [('되''px'), ('고''ecx')]], [[('있''paa'), ('다''ef')], [('있''px'), ('다''ef')]], [[('.''sf')], [('.''sy')]]]
 
print(hannanum.morphs(u'롯데마트의 흑마늘 양념 치킨이 논란이 되고 있다.'))
['롯데마트''의''흑마늘''양념''치킨''이''논란''이''되''고''있''다''.']
 
print(hannanum.nouns(u'다람쥐 헌 쳇바퀴에 타고파'))
['다람쥐''쳇바퀴''타고파']
 
print(hannanum.pos(u'웃으면 더 행복합니다!'))
[('웃''P'), ('으면''E'), ('더''M'), ('행복''N'), ('하''X'), ('ㅂ니다''E'), ('!''S')]
 
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from konlpy.tag import Kkma
kkma = Kkma()
 
kkma.morphs         #형태소 분석
kkma.nouns          #명사 분석
kkma.pos            #형태소 분석 태깅
kkma.sentences      #문장 분석
 
# 사용예시
print(kkma.morphs(u'공부를 하면할수록 모르는게 많다는 것을 알게 됩니다.'))
['공부''를''하''면''하''ㄹ수록''모르''는''것''이''많''다는''것''을''알''게''되''ㅂ니다''.']
 
print(kkma.nouns(u'대학에서 DB, 통계학, 이산수학 등을 배웠지만...'))
['대학''통계학''이산''이산수학''수학''등']
 
print(kkma.pos(u'다 까먹어버렸네요?ㅋㅋ'))
[('다''MAG'), ('까먹''VV'), ('어''ECD'), ('버리''VXV'), ('었''EPT'), ('네요''EFN'), ('?''SF'), ('ㅋㅋ''EMO')]
 
print(kkma.sentences(u'그래도 계속 공부합니다. 재밌으니까!'))
['그래도 계속 공부합니다.''재밌으니까!']
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from konlpy.tag import Komoran
komoran = Komoran(userdic='/tmp/dic.txt')
 
komoran.morphs    #형태소 분석
komoran.nouns     #명사 분석
komoran.pos       #형태소 분석 태깅
 
# 사용예시
print(komoran.morphs(u'우왕 코모란도 오픈소스가 되었어요'))
['우왕''코모란''도''오픈소스''가''되''었''어요']
 
print(komoran.nouns(u'오픈소스에 관심 많은 멋진 개발자님들!'))
['오픈소스''관심''개발자']
 
print(komoran.pos(u'혹시 바람과 함께 사라지다 봤어?'))
[('혹시''MAG'), ('바람과 함께 사라지다''NNP'), ('보''VV'), ('았''EP'), ('어''EF'), ('?''SF')]
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from konlpy.tag import Okt
okt = Okt()
 
okt.morphs     #형태소 분석
okt.nouns      #명사 분석
okt.phrases    #구(Phrase) 분석
okt.pos        #형태소 분석 태깅
 
# 사용예시
print(okt.morphs(u'단독입찰보다 복수입찰의 경우'))
['단독''입찰''보다''복수''입찰''의''경우']
 
print(okt.nouns(u'유일하게 항공기 체계 종합개발 경험을 갖고 있는 KAI는'))
['항공기''체계''종합''개발''경험']
 
print(okt.phrases(u'날카로운 분석과 신뢰감 있는 진행으로'))
['날카로운 분석''날카로운 분석과 신뢰감''날카로운 분석과 신뢰감 있는 진행''분석''신뢰''진행']
 
print(okt.pos(u'이것도 되나욬ㅋㅋ'))
[('이''Determiner'), ('것''Noun'), ('도''Josa'), ('되나욬''Noun'), ('ㅋㅋ''KoreanParticle')]
 
cs



ex2) Konlpy.utils 클래스에서 유용한 메서드

1
2
3
4
5
6
7
8
9
10
11
konlpy.utils.concordance(찾을 단어, 전체문장, show=False) 
#concordance 단어색인(해당 단어가 쓰인 부분(index) 찾음)
#show = True 인 경우 단어 색인과 함께 포함된 문장 반환
 
konlpy.utils.pprint(obj) #유니코드 문자 출력
 
konlpy.utils.read_json(filename, encoding=u'utf-8'# json 파일 읽음
konlpy.utils.read_txt(filename, encoding=u'utf-8')  # txt 파일 읽음
konlpy.utils.csvread(f, encoding=u'utf-8')          # csv 파일 읽음
konlpy.utils.csvwrite(data, f)                      # csv파일로 쓰기 가능
konlpy.utils.hex2char( h )                 #16진수 문자를 유니코드 문자로 변환
cs



+ Recent posts