한나눔한국어형태소분석기 사용자매뉴얼 (jhannanum 0.8.3 기반 ) 최종수정일 : 2011 년 6 월 5 일
목차 1. 들어가는말...2 2. 형태소분석기개요...3 3. 한나눔형태소분석기...4 3.1 한나눔 Workflow...4 3.2 한나눔 Plug-in 리스트...6 3.2.1 Phase 1. Plain Text Processing...6 3.2.2 Phase 2. Morphological Analysis...7 3.2.3 Phase 3. POS Tagging... 12 3.3 형태소사전... 16 3.4 태그집합... 18 4. 사용방법... 20 4.1 사용환경... 20 4.2 다운로드... 21 4.2.1 릴리즈다운로드... 22 4.2.2 Check Out from SVN Repository... 23 4.3 한나눔데모프로그램활용하기... 25 4.3.1 Eclipse 를이용한한나눔데모프로그램실행방법... 26 4.3.2 GUIDemo 실행하기... 28 4.4 한나눔라이브러리를이용한프로그램작성... 30 4.5 새로운한나눔 Plug-in 작성하여활용하기... 31 5. 라이센스... 32 6. 맺음말... 32 7 참고문헌... 33 1
1. 들어가는말 한나눔한국어형태소분석기는 KAIST Semantic Web Research Center 에서개발되어현재오픈소스로관리되고있다. 한국어형태소분석기를개발하기위해서는많은노력과시간이요구되기때문에오픈소스로공개된프로그램은높은활용성을지닌다. 이를통해더많은사람들이한국어분석기술에보다쉽게접근하여, 한국어자연언어처리기반기술이더욱발전할수있기를기대한다. 카이스트시맨틱웹첨단연구센터 : http://semanticweb.kaist.ac.kr KLDP 프로젝트커뮤니티 : http://kldp.net/projects/hannanum SourceForge.net 프로젝트커뮤니티 : http://sourceforge.net/projects/hannanum/ 본매뉴얼은한나눔자바버전 0.8.3 을기반으로하고있다. 목적에맞게다음과같이참조하기 를권장한다. 제일먼저프로그램의동작을확인하고싶습니다. 4. 사용방법, 4.3.2 GUIDemo 실행하기 한나눔라이브러리를이용한예제코드를보고싶습니다. 4.3 한나눔데모프로그램활용하기 분석결과에있는 ncn, jca 등은무엇을뜻하나요? 3.4 태그집합 한나눔은무엇을하는프로그램인가요? 2. 형태소분석기개요 한나눔이다른한국어형태소분석기와어떻게다른가요? 3. 한나눔형태소분석기 한나눔은어떤기능들을가지고있나요? 3.1 한나눔 Workflow 3.2 한나눔 Plug-in 리스트 프로그램을사용하는데지켜야할사항이있나요? 5. 라이센스 새로운 Plug-in 을직접개발할수있나요? 4.5 새로운한나눔 Plug-in 작성하여활용하기 2
2. 형태소분석기개요 자연언어처리과정에서하나의단어가여러품사를갖는모호성을가질수있으며이러한품사의모호성을해소하는과정을품사태깅 (Part-Of-Speech Tagging) 이라고한다.[2] 이를통해서문장에사용된형태소들의품사를파악하고문장의구조를파악할수있다. 한국어형태소분석기는한국어텍스트를입력으로하고그것을형태소단위로분석하여이를품사와함께출력해주는소프트웨어이다. 형태소분석을거쳐태깅된데이터는한국어자연언어처리에서기초적이면서도중요한역할을한다. 자연언어처리는대상언어의특성에따라서분석하는방법이상당히달라지게된다. 형태소분석의경우고립어에속하는영어는공백단위로구분한토큰을자르면쉽게형태소를구분할수있지만, 굴절어에속하는한국어는 1 개이상의형태소가어절을이루고, 이들형태소들은서로다른형태소에대한영향력을가지고있어형태소구분방법이보다복잡하다. Figure 1 형태소분석기의입출력예 지금까지이용된태깅방법은크게규칙을이용하는방법과말뭉치로부터추출된통계정보를이용하는방법으로나눌수있다. 규칙접근방법은규칙을기술하기가어렵고다른영역으로의적응성이떨어지므로일반적으로통계정보를이용하는방법이많이사용되고있다.[3] 자연언어처리시스템은하나의목적을위하여만들어지기때문에각시스템의구성요소들은전체시스템의목표를이루기위한가장효율적인방법으로설계되는것이일반적이다. 하지만범용적인자연언어처리도구를개발하기위해서는다양한요구를유연하게수용할수있는형태의설계가필요하다.[1] 기존의 C 버전에서발전한 Java 버전의한나눔형태소분석기는많은사람들이쉽고간편하게, 그리고다양한분야에서활용할수있도록설계되었다. 3
3. 한나눔형태소분석기 한나눔형태소분석기는플러그인컴포넌트아키텍처를적용하여보다유연하게사용될수있도록개선되었다. 사용자는한국어처리목적에따라기개발된 Plug-in 들을선택하여 Workflow 를구성하여사용하면되고, 개발자는새롭게필요한기능만을 Plug-in 으로개발하여기존의 Plug-in 들과함께활용할수있다. 3.1 한나눔 Workflow 플러그인컴포넌트아키텍처기반의한나눔의구성은다음과그림과같다. Workflow 는분석수준에따라서전처리단계, 형태소분석단계, 품사태깅단계의총 3 단계로구성되며, 각 Plugin 은그특성에따라서 Major Plug-in 과 Supplement Plug-in 으로분류된다. Figure 2 플러그인컴포넌트아키텍처기반의한나눔형태소분석기 한나눔 Workflow 에서각분석단계의역할과 Major Plug-in 과 Supplement Plug-in 의역할은다음과같다. - 각분석단계별역할 : Phase 1. Text Preprocessing : 문장경계인식, 필터링, 자동띄어쓰기등형태소분석이전에필요한전처리작업을수행한다. Phase 2. Morphological Analysis : 입력문장에대해서어절단위로발생가능한모든형태소분석결과를생성한다. Phase 3. POS Tagging : 가장유망한형태소분석결과들을선택하여입력문장에대한최종품사태깅결과를반환한다. 4
- Major Plug-in 과 Supplement Plug-in 의역할 Major Plug-in : 형태소분석, 품사태깅등각분석단계에서핵심이되는기능을수행한다. Major Plug-in 은입력형태와출력형태가서로다르기때문에각단계에서는단하나의 Major Plug-in 만배치할수있다. Supplement Plug-in : 문장경계인식, 필터링, 형태소태그변환, 명사추출등형태소분석과품사태깅이외의보조적인기능을수행한다. Supplement Plug-in 의입력과출력형태는서로같으므로각단계에서여러개의 Supplement Plug-in 을선택하여활용할수있다. 다음그림은한나눔 Workflow 의구성예를보여준다. Figure 3 Work flow 구성예 멀티프로세서환경에서보다효과적인동작을위해한나눔 Plug-in 들은 Workflow 상에서개별 적인 Thread 위에서동작가능하다. 다음그림은 Multi-thread mode 로구성된한나눔 Workflow 의동작을보여준다. Figure 4 Multi-thread mode 에서의 work flow 동작 5
3.2 한나눔 Plug-in 리스트 3.2.1 Phase 1. Plain Text Processing 3.2.1.1 Supplement Plug-in - InformalSentenceFilter InformalSentenceFilter 는약 9 만건의인터텟댓글자료를조사하여발견한비형식적패턴을기반으로한다. 비형식적패턴들은반드시세밀한분석이필요하지않음에도불구하고많은리소스를소비하여형태소분석기의성능을떨어트리기때문에경우에따라서는전처리과정이필요하다. 대표적인예는아래와같다. 이러한입력들은설정에따라서워크플로의이후단계에서분석되지않거나짧은단위로나뉘어분석된다. 특수기호의반복적인사용예 ) $$$$$$$$$$$$$ 일시 $$$$$$$$$$$$$$ 띄어쓰기없는짧은패턴의지속적인반복예 ) 서울시장서울시장서울시장서울시장서울시장... - SentenceSegmentor SentenceSegmentor 는문장의구분자역할을할수있는마침표, 물음표, 느낌표문장기호를기준으로전 후조건에따라문장구분을결정하는간단한방식으로구현되었다. 마침표에대해서는바로뒤에숫자가있는경우소수점으로, 마침표바로앞에영문자가있는경우영문약어로, 바로뒤에또다른마침표가있는경우말줄임표로, 앞단어의길이가 2 글자이하인경우말머리표로인식하여문장구분을하지않는다. 물음표와느낌표는다른특수기호와함께사용된경우에문장구분자로인식하지않는다. 문장을구분하는방법은위와같은단순한방법이외에도구문구조를이용한방법등보다복잡한방법이활용될수있으므로필요에따라서는새로운플러그인의개발이필요하다. 3.14 소수점으로인식 Ltd. 영문약어로인식 가. 일정말머리표로인식!@#?$% 다른특수기호와사용된경우일반특수기호로인식 6
3.2.2 Phase 2. Morphological Analysis 3.2.2.1 Major Plug-in - ChartMorphAnalyzer 차트기반형태소분석기는형태소분석을위한내부저장공간으로 Lattice 형태의차트를사용한다. 차트는 Morpheme Chart, Segment Position, Inverse Segment Position 으로구성되며 [5],[6] 의 CKY table 과 [4] 의격자구조를발전시킨형태이다. 사전검색모듈은시스템사전검색과사용자사전검색, 그리고숫자인식기로구성된다. 형태소분석기의기본사전내용은변경하지않고필요에따라서사용자사전을구축할수있고, 숫자처리또한사전검색과동일한관점에서처리할수있는장점이있다. 사전은형태소분석기를위해고안된사전구조인 TDBM(Trie based DBM) 의형태로이용된다. 음운변화처리는어미의탈락, 어간의탈락과같은자동적변화와불규칙용언에의한불규칙변화, 모음조화및축약과같은선택적변화로나누어처리한다. 미등록어에대한처리를위해서형태소분석결과가없는경우에는모든분할위치에 "unk" 품사를할당하고다시형태소분석을실시한다. 내부적으로사용하는한글인코딩방식은초성, 중성, 종성단위의 3 Character 인코딩방식으로삼보 KSSM 조합형코드와유사한형태이다. 유니코드와내부한글인코딩의상호변환은코드변환모듈을통해이루어진다. 형태소사전과태그셋, 결합규칙은쉽게편집가능한독립적인파일로존재하여형태소분석컴포넌트내에서도유연한변경이가능하다. Figure 5 Chart-based Morphological Analyzer 구성 7
3.2.2.2 Supplement Plug-in - UnknownMorphProcessor 현재미등록명사처리기는 unk" 로태깅된결과중유력한분석에대해서비서술성명사와고유명사로보정하는단순하면서도효과적인방법을사용하고있다. 형태소분석과정에서는사전에등록되어있지않은단어에대한처리를위해서 unk 태그를이용하고있다. 나는지금불닭을먹고있다. 라는예제문장에서 불닭 은형태소사전에등록되어있지않은단어로형태소분석기는다음과같은분석후보를생성한다. 불닭을 불닭 /unk+ 을 /jco 불닭을 /unk 여기에대해서미등록어처리기는 불닭 /unk 에비서술성명사 (ncn) 와고유명사 (nq) 를태깅한결 과를생성한다. 불닭을 불닭 /ncn+ 을 /jco 불닭 /nq+ 을 /jco - SimpleMAResult22 ChartMorphAnalyzer 는총 69 개의품사태그로구성된카이스트태그셋을기반으로하고있다. 세분화된태그셋을이용한형태소분석은보다상세한정보를제공하므로일반적으로유용하지만, 간단한분석결과를원하는사용자에게는오히려부담이될수있다. SimpleMAResult22 plugin 은기본적인형태소분석결과를 1 단계낮은단계의, 총 22 개의품사태그로구성된태그셋을사용한분석결과로변환시켜제공한다. 입력예 ) 학교에서조차도그사실을모르고있었다. 8
출력예 : ChartMorphAnalyzer + UnknownMorphProcessor 학교에서조차도 그 사실을 모르고 있었다. 학교 /ncn+ 에서 /jca+ 조차도 /jxc 학교 /ncn+ 에서 /jca+ 조차 /jxc+ 도 /jxc 그 /mmd 그 /npd 그 /npp 사실 /ncn+ 을 /jco 사 /pvg+ 아 /ecx+ 싣 /px+ 을 /etm 모르 /pvg+ 고 /ecc 모르 /pvg+ 고 /ecs 모르 /pvg+ 고 /ecx 있 /paa+ 었 /ep+ 다 /ef 있 /px+ 었 /ep+ 다 /ef./sf./sy 출력예 : ChartMorphAnalyzer + UnknownMorphProcessor + SimpleMAResult22 학교에서조차도 그 사실을 모르고 있었다. 학교 /NC+ 에서 /JC+ 조차도 /JX 그 /NP 그 /MM 사실 /NC+ 을 /JC 사 /PV+ 아 /EC+ 싣 /PX+ 을 /ET 모르 /PV+ 고 /EC 있 /PA+ 었 /EP+ 다 /EF 있 /PX+ 었 /EP+ 다 /EF./SF./SY 9
- SimpleMAResult09 ChartMorphAnalyzer 는총 69 개의품사태그로구성된카이스트태그셋을기반으로하고있다. 세분화된태그셋을이용한형태소분석은보다상세한정보를제공하므로일반적으로유용하지만, 간단한분석결과를원하는사용자에게는오히려부담이될수있다. SimpleMAResult09 plugin 은기본적인형태소분석결과를 2 단계낮은단계의, 총 9 개의품사태그로구성된태그셋을사용한분석결과로변환시켜제공한다. 입력예 ) 학교에서조차도그사실을모르고있었다. 출력예 : ChartMorphAnalyzer + UnknownMorphProcessor 학교에서조차도 그 사실을 모르고 있었다. 학교 /ncn+ 에서 /jca+ 조차도 /jxc 학교 /ncn+ 에서 /jca+ 조차 /jxc+ 도 /jxc 그 /mmd 그 /npd 그 /npp 사실 /ncn+ 을 /jco 사 /pvg+ 아 /ecx+ 싣 /px+ 을 /etm 모르 /pvg+ 고 /ecc 모르 /pvg+ 고 /ecs 모르 /pvg+ 고 /ecx 있 /paa+ 었 /ep+ 다 /ef 있 /px+ 었 /ep+ 다 /ef./sf./sy 10
출력예 : ChartMorphAnalyzer + UnknownMorphProcessor + SimpleMAResult09 학교에서조차도학교 /N+ 에서조차도 /J 그그 /N 그 /M 사실을사실 /N+ 을 /J 사 /P+ 아 /E+ 싣 /P+ 을 /E 모르고모르 /P+ 고 /E 있었다있 /P+ 었다 /E../S 11
3.2.3 Phase 3. POS Tagging 3.2.3.1 Major Plug-in - HmmPosTagger 한나눔형태소분석기에서구현한 HMM 품사태거는어절간의의존성과형태소간의의존성모두를반영하는은닉마르코프모델을기반으로한다.[3] 영어의경우는하나의문장을단어의열로볼수있지만한국어의경우는어절의열로보는것이합리적이다. 한국어의어절은그순서가자유롭지만통계적으로볼때규칙을발견할수있다. 어절간의의존성은구문정보로서태깅과정에서중요한역할을할수있다. 품사태깅은주어진문장 W=W0W1...Wn 에대한어절태그열 T=T0T1...Tn 을찾는문제로정의할수있으며어절태그열을구하는함수 Φ는다음과같이표현된다. 위확률식을기반으로마르코프독립가정을적용하여단순화시키면어절태그발생확률은 (a) 로표현되고어절내의형태소태그발생확률은 (b) 로표현된다. 3.2.3.2 Supplement Plug-in - NounExtractor 입력문장중에서명사만을추출하기위해형태소분석을수행하는경우가있다. NounExtractor 는품사태깅결과명사로인식된형태소만을추출한다. 입력예 ) 롯데마트가판매하고있는흑마늘양념치킨이논란이되고있다. 출력예 ) 롯데마트 /ncn,, 판매 /ncpa, 흑마늘 /ncn, 양념 /ncn, 치킨 /ncn, 논란 /ncpa 12
- SimplePOSResult22 ChartMorphAnalyzer 는총 69 개의품사태그로구성된카이스트태그셋을기반으로하고있다. 세분화된태그셋을이용한품사태깅은보다상세한정보를제공하므로일반적으로유용하지만, 간단한분석결과를원하는사용자에게는오히려부담이될수있다. SimplePOSResult22 plugin 은기본적인품사태깅결과를 1 단계낮은단계의, 총 22 개의품사태그로구성된태그셋을사용한태깅결과로변환시켜제공한다. 입력예 ) 학교에서조차도그사실을모르고있었다. 출력예 : ChartMorphAnalyzer + UnknownMorphProcessor + HmmPosTagger 학교에서조차도학교 /ncn+ 에서 /jca+ 조차 /jxc+ 도 /jxc 그그 /mmd 사실을사실 /ncn+ 을 /jco 모르고모르 /pvg+ 고 /ecc 있었다있 /px+ 었 /ep+ 다 /ef../sf 출력예 : ChartMorphAnalyzer + UnknownMorphProcessor + HmmPosTagger + SimplePOSResult22 학교에서조차도학교 /NC+ 에서 /JC+ 조차도 /JX 그그 /MM 사실을사실 /NC+ 을 /JC 모르고모르 /PV+ 고 /EC 있었다있 /PX+ 었 /EP+ 다 /EF../SF 13
- SimplePOSResult09 ChartMorphAnalyzer 는총 69 개의품사태그로구성된카이스트태그셋을기반으로하고있다. 세분화된태그셋을이용한품사태깅은보다상세한정보를제공하므로일반적으로유용하지만, 간단한분석결과를원하는사용자에게는오히려부담이될수있다. SimplePOSResult09 plugin 은기본적인품사태깅결과를 2 단계낮은단계의, 총 9 개의품사태그로구성된태그셋을사용한태깅결과로변환시켜제공한다. 입력예 ) 학교에서조차도그사실을모르고있었다. 출력예 : ChartMorphAnalyzer + UnknownMorphProcessor + HmmPosTagger 학교에서조차도학교 /ncn+ 에서 /jca+ 조차 /jxc+ 도 /jxc 그그 /mmd 사실을사실 /ncn+ 을 /jco 모르고모르 /pvg+ 고 /ecc 있었다있 /px+ 었 /ep+ 다 /ef../sf 출력예 : ChartMorphAnalyzer + UnknownMorphProcessor + HmmPosTagger + SimplePOSResult09 학교에서조차도학교 /N+ 에서조차도 /J 그그 /M 사실을사실 /N+ 을 /J 모르고모르 /P+ 고 /E 있었다있 /P+ 었다 /E../S 14
3.3 형태소사전 잘구축되어있는형태소사전은형태소분석과정에서매우중요한역할을한다. 한나눔형태소분석기에서는세가지형태의사전을활용한다. 사전의종류는다음과같다. 시스템사전 : 카이스트코퍼스를기반으로구축된사전으로한나눔형태소분석기에서기본적으로활용되는사전이다. 사용자사전 : 시스템사전은사용자가간단히수정하기어려운문제가있지만사용자사전은각사용자의목적에따라서간단히항목을추가 / 수정할수있기때문에유연하게사용될수있다. 숫자사전 : 오토마타를이용한프로그램이다. 숫자인식모듈을사전의형태로구현함으로써사전검색과동일한관점에서숫자를처리할수있다. Figure 6 시스템사전의일부 15
3.4 태그집합 한나눔형태소분석기에서는총 69 개의확장된카이스트태그셋을기본으로사용하고있다. 확장되기이전의카이스트태그셋은총 54 개의태그로구성되어있지만현재는 6 개상위태그에대해서 20 개의새로운태그를세분화하여사용하고있다. 새롭게추가된태그는파란색으로표시하였다.. 상위분류태그 기호 S sp 쉼표 sl 여는따옴표및묶음표 sd 이음표 su 단위기호 sf 마침표 sr 닫는따옴표및묶음표 se 줄임표 sy 기타기호 외국어 F f 외국어 보통명사 NC 서술성명사 ncp ncpa 동작성명사 ncps 상태성명사 비서술성명사 ncn ncn 비서술성명사 ncr 비서술성 -- 직위명사 체언 N 고유명사 NQ 의존명사 NB nqpa 성 nqpc 성 + 이름 nbu 단위성의존명사 nbn 비단위성의존명사 nqpb 이름 nqq 기타 - 일반 nbs 비단위성의존명사 -- 하다붙는것 대명사 NP npp 인칭대명사 npd 지시대명사 수사 NN nnc 양수사 nno 서수사 동사 PV pvd 지시동사 pvg 일반동사 용언 P 형용사 PA pad 지시형용사 paa 성상형용사 보조용언 PX px 보조용언 관형사 MM mmd 지시관형사 mma 성상관형사 수식언 M 부사 MA mad 지시부사 mag 일반부사 maj 접속부사 독립언 I 감탄사 II ii 감탄사 관계언 J 격조사 JC jcs jcc jcv jcj jcr 주격조사보격조사호격조사접속격조사인용격조사 Jco 목적격조사 jcm 관형격조사 jca 부사격조사 jct 공동격조사 16
보조사 JX jxc 통용보조사 jxf 종결보조사 서술격조사 JP jp 서술격조사 선어말어미 EP ep 선어말어미 어미 E 연결어미 EC ecc 대등적연결어미 ecx 보조적연결어미 ecs 종속적연결어미 전성어미 ET etn 명사형전성어미 etm 관형사형전성어미 종결어미 EF ef 종결어미 접두사 XP xp 접두사 xsnu 단위뒤 xsna 동작성뒤 명사파생접미사 xsn xsnca 일반명사뒤 xsncc 일반명사뒤 xsns 상태성뒤 xsnp 인명 1,3 뒤 접사 X 접미사 XS 동사파생접미사 xsv xsvv 동사뒤 xsvn 일반명사뒤 xsnx 모든명사뒤 xsva 동작명사뒤 형용사파생접미사 xsm xsms 상태명사뒤 xsmn 일반명사뒤 부사파생접미사 xsa xsam 형용사뒤 xsas 상태명사뒤 표 1 한나눔에서기본적으로사용하는카이스트형태소태그집합 17
4. 사용방법 4.1 사용환경 한나눔형태소분석기는자바프로그래밍언어로개발되었다. 따라서 JDK 6 이상의자바플랫폼이설치되어있다면어떤환경에서든지한나눔을사용하는것이가능하다. JDK 는 ORACLE 의자바다운로드페이지에서내려받을수있다. JDK 다운로드 : http://www.oracle.com/technetwork/java/javase/downloads/index.html Figure 7 JDK 다운로드웹페이지 18
4.2 다운로드 한나눔형태소분석기는 KLDP 에서제공하는공개소프트웨어프로젝트사이트에등록되어있다. 이곳에서다운로드가능하며문의사항이생기거나다른의견이있는경우게시판을자유롭게활용할수있다. 릴리즈된형태의프로그램을다운로드받을수있으며, SVN Repository 를통해현재개발중인가장최신버전의프로그램을이용할수있다. 한나눔프로젝트페이지 : http://kldp.net/projects/hannanum/ Figure 8 KLDP 한나눔프로젝트사이트 19
4.2.1 릴리즈다운로드 KLDP 한나눔프로젝트사이트의다운로드페이지에서릴리즈를다운로드받을수있다. 현재매뉴얼은 jhannanum 0.8.3 (java version) 을기반으로하고있다. 한나눔릴리즈다운로드 : http://kldp.net/projects/hannanum/download Figure 9 한나눔릴리즈다운로드 Jhannanum 0.8.3 릴리즈는다음과같이구성되어있다. Figure 10 jhannanum release 0.8.3 20
GUIDemo: GUI 기반의한나눔형태소분석기데모프로그램으로다양한 Workflow 를간단히구성하고테스트하는것이가능하다. 플랫폼에따라서간단히 execute.bat 또는 execute.sh 를실행하면된다. JHanNanum: 자바버전한나눔의프로젝트디렉토리로소스코드, JAVADOC, 데이터등모든것을포함하고있다. jhannanum-0.8.3.jar: 자바아카이브형태의라이브러리로자바응용프로그램에링크하여바로활용될수있다. 각플러그인의설정파일이포함되어있는 conf 디렉토리및형태소사전등의데이터파일이포함된 data 디렉토리를 PROJECT_ROOT/ 경로에위치시키지않는다면 API 사용시경로를정확히지정해줘야한다. conf.zip: 각플러그인의환경설정파일이포함되어있다. 환경설정파일은 json 포멧을 사용하는것을원칙으로하지만그내용은제한적이지않다. data.zip: 한나눔라이브러리를이용하여프로그램을개발하기위해서는 data.zip 에포함된데이터가필요하다. 사용자가직접형태소사전을수정하는등의편의성을제공하기위하여자바아카이브에포함시키지않았다. 압축파일의구성은다음과같다. - ke: 시스템사전, 기분석사전, 사용자사전, 태그셋, 결합정보를포함한다. - stat: HMMTagger 가사용하는어절태그기반확률정보를포함한다. README.txt: 릴리즈정보및한나눔이용에관한간략한설명이포함되어있다. 4.2.2 Check Out from SVN Repository 릴리즈다운로드이외에 SVN Repository 를통해서현재개발중인가장최신버전의한나눔을이용할수있다. SVN/trunk/ 에는 C 버전의한나눔과 Java 버전의한나눔이구분되어있으므로필요에따라서는한가지버전만체크아웃할수있다. SVN 정보페이지 : http://kldp.net/projects/hannanum/src 한나눔 Java 버전체크아웃 : svn checkout --username anonsvn http://kldp.net/svn/hannanum/trunk/java password: anonsvn 21
Figure 11 한나눔 SVN Repository 22
4.3 한나눔데모프로그램활용하기 한나눔을이용해서자바응용프로그램을개발하기위해서는한나눔릴리즈에포함되어있는라이브러리를사용하거나소스코드를직접이용하면된다. 현재자바버전의한나눔에는사용자의편의를위한다양한데모프로그램들이포함되어있다. 이번절에는데모프로그램을동작시키는방법이기술되어있다. 현재다음데모프로그램들이포함되어있다. Demo Package: kr.ac.kaist.swrc.jhannanum.demo.* GUIDemo.java: GUI 기반의데모프로그램으로 plug-in 들을 drag-and-drop 방식으로 work flow 배치시켜테스트할수있다. 다양한 work flow 를간단히구성하여테스트하는것이가능하다. ManualWorkflowSetUp.java: 한나눔라이브러리의가장기본적인활용방법을소개하는데모프로그램으로, plug-in 들을 work flow 에배치하여활성화시키고입력문장을분석하여결과를보여주는 API 를소개한다. WorkflowHmmPosTagger.java: 형태소분석이후에품사태깅을수행하는예제프로그램이다. WorkflowMorphAnalyzer.java: 품사태깅은하지않고형태소분석까지만수행하는 work flow 를이용한다. WorkflowNounExtractor.java: 형태소분석, 품사태깅이후에명사만을추출하여보여준다. WorkflowSimplePos09.java: 69 개의카이스트형태소태그를기반으로하는기존의품사태깅결과를 9 개의형태소태그기반의간단한분석결과로변환하여제공한다. WorkflowSimplePos22.java: 69 개의카이스트형태소태그를기반으로하는기존의품사태깅결과를 22 개의형태소태그기반의간단한분석결과로변환하여제공한다. 23
4.3.1 Eclipse 를이용한한나눔데모프로그램실행방법데모프로그램을동작시키기위한방법으로한나눔프로젝트를이클립스에등록시키고실행하는방법을소개한다. 이클립스는자바응용프로그램을개발하기위한 IDE 로가장많이사용되고있다. 본예제를위해사용된이클립스버전은 Eclipse Helios SR2 Win32 이다. 이클립스는다음웹페이지에서다운로드받을수있다. 이클립스다운로드 : http://www.eclipse.org/downloads/ Figure 12 이클립스다운로드페이지 A. 이클립스자바프로젝트생성다운로드받은한나눔릴리즈 ( 또는 SVN Repository 로부터다운로드받은프로그램 ) 을이용하여이클립스자바프로젝트를생성한다. Eclipse Java Workspace 에한나눔자바버전프로그램을위치시킨다. 예 ) JAVA_WORKSPACE/JHanNanum-0.8.3 Eclipse 상단메뉴에서 File > New > Java Project 선택. Java Workspace 가한나눔이위치한경로와일치하는지확인후, Project Name 에한나눔의디렉토리명을입력한다예 ) JHanNanum-0.8.3 Finish 버튼을눌러프로젝트생성을완료한다. 24
Figure 13 한나눔프로젝트생성 B. WorkflowHmmPosTagger 데모프로그램실행 - kr.ac.kaist.swrc.jhannanum.demo.workflowhmmpostagger - WorkflowHmmPosTagger.java 파일을열고 Menu > Run > Run 을클릭또는 Ctrl + F11 을입력하여프로그램을실행 C. 결과확인 이클립스 Console 창을통해서예제문장에대한분석결과화면을확인할수있다. 25
Figure 14 WorkflowHmmPosTagger 데모실행결과 4.3.2 GUIDemo 실행하기 KLDP 에등록된한나눔릴리즈는 GUIDemo 를포함하고있다. GUIDemo 의구성은다음과같다. Figure 15 GUIDemo 구성 플랫폼에따라 execute.bat 또는 execute.sh 를실행하면다음과같이 GUI 기반데모프로그램 이실행된다. 26
Figure 16 GUIDemo 실행예 사용방법은다음과같다. 1. Tree 형태의 Plug-in Pool 에등록된 plug-in 들을확인한다. Plug-in 을 click 하면 Plug-in Information 항목에간략한설명이나타나므로 work flow 구성시참고할수있다. 2. 선택한 Plug-in 을 drag-and-drop 방식으로 work flow 에배치시킨다. 이때 plug-in 의 phase 와 type 이일치해야하므로주의해야한다. 3. Work flow 설정이끝나면 Multi-thread mode 또는 Single-thread mode 를선택한다. 4. Activates the work flow 버튼을누르면설정한 work flow 가활성화된다. 5. Input Text 부분에분석하고자하는텍스트를입력또는복사하여붙여넣는다. File Open 메뉴를이용하는것도가능하다. 6. Analyze Text 버튼을눌러활성화된 work flow 를이용하여분석을수행한다. 7. Result 영역에나타난분석결과를확인한다. 8. 5~7 단계를반복하며활성화된 work flow 를반복적으로이용한다. 또는 Close the work flow 버튼을누르고 1 단계로돌아가새로운 work flow 를설정하여테스트한다. 27
4.4 한나눔라이브러리를이용한프로그램작성 한나눔릴리즈에포함된 jhannanum-0.8.3.jar 파일을라이브러리로등록시키면단몇줄의코드만으로형태소분석및품사태깅등의한국어분석결과를활용할수있다. 앞에서소개된데모프로그램들을확인한이후에 JAVADOC 을참고하면어렵지않게라이브러리를이용할수있을것이다. ManualWorkflowSetUp.java 에는 plug-in 을 work flow 에배치하여이용하는코드와상세한주석이기술되어있으니라이브러리이용시참고하면된다. WorkflowNounExtractor.java 에는분석결과를문자열이아닌객체형태로결과를받아오는프로그램코드가작성되어있다. 문자열로반환된결과를다시 parsing 하여이용하는수고를덜기위해서는이예제프로그램을참고하면된다. kr.ac.kaist.swrc.jhannanum.hannanum.workflowfactory 에는미리정의된대표적인 work flow 들이존재하므로간편한방법으로 work flow 를이용할수있다. Workflow***.java 예제프로그램들을참고하면된다. 28
4.5 새로운한나눔 Plug-in 작성하여활용하기 원하는기능의 plug-in 이존재하지않는다면직접 plug-in 을개발하여사용하는것이가능하다. 전체시스템의구성을분석할필요없이개발하고자하는플러그인의기능과입출력형태만고려하면되고, 또기존의플러그인들과함께 work flow 를구성하여활용할수있으므로효율적으로새로운기능을추가및테스트할수있다. 새로운플러그인을개발하기위해서는다음과같은단계를거치면된다. 1. 플러그인의분석단계와타입을결정한다. (3.1 한나눔 workflow 참조 ) 2. 분석단계와타입에맞는플러그인자바인터페이스를확인하여구현한다. ( 이미구현된플러그인및 JAVADOC 참고 ) Package kr.ac.kaist.swrc.jhannanum.plugin.* Phase 1. Supplement Plug-in: SupplementPlugin.PlainTextProcessor.PlainTextProcessor.java Phase 2. Major Plug-in: MajorPlugin.MorphAnalyzer.MorphAnalyzer.java Phase 2. Supplement Plug-in: SupplementPlugin.MorphemeProcessor.MorphemeProcessor.java Phase 3. Major Plug-in: MajorPlugin.PosTagger.PosTagger.java Phase 3. Supplement Plug-in: SupplementPlugin.PosProcessor.PosProcessor.java 예 ) ChartMorphAnalyzer (Phase 2. Major Plug-in MorphAnalyzer 구현 ) public class ChartMorphAnalyzer implements MorphAnalyzer { @Override public SetOfSentences morphanalyze(plainsentence ps) { } } 3. JSON 포멧의설정파일을작성한다. (conf/ 디렉토리내 *.json 파일참조 ) 4. 구현한 plug-in 을다른한나눔사용자들과공유하고싶다면 hudoni@world.kaist.ac.kr 로 메일을보낸다. 29
5. 라이센스 한나눔형태소분석기는 GPLv3 라이센스를따른다. GPLv3 라이센스 : http://www.gnu.org/licenses/gpl.html 6. 맺음말 본매뉴얼을통해서한나눔형태소분석기의목적, 구성, 동작원리및사용방법에대해서설명하였다. 현재한나눔형태소분석기는계속해서개발되고있으며, 보다유연하고확장성이좋은한국어자연언어처리도구로발전해나가는것을목표로하고있다. 그리고새로운분석방식을적용한다양한 plug-in 을개발하고배포할계획을가지고있다. 한나눔 KLDP 프로젝트홈페이지는누구나자유롭게사용할수있도록개방되어있다. 형태소분석기를사용하면서발견한문제점이나제시하고싶은새로운의견이있다면홈페이지의게시판을적극이용해주길바란다. 한나눔형태소분석기개발자들은한나눔프로젝트가공개소프트웨어산업및한국어자연언어처리분야에많은기여를할수있도록계속해서노력할것이다. 30
7 참고문헌 [1] 이운재, 김선배, 김길연, 최기선, 모듈화된형태소분석기의구현, 한국정보과학회언어공학연구회학술발표논문집, pp. 123-136, 1999. [2] 신중호, 한영석, 박영찬, 최기선, 어절구조를반영한은닉마르코프모델을이용한한국어품사태깅, 한글및한국어정보처리학술대회, pp. 389-394, 1994. [3] 이하규, 김영택, 통계정보에기반을둔한국어어휘중의성해소, 한국통신학회논문지 94-2 Vol.19 No.2, 1994 [4] 이상호, 김재훈, 조정미, 서정연, 부분분석결과를공유하는한국어형태소분석, 제 11 회음성통신및신호처리워크샵논문집, pp. 75-79, 1994. [5] 이은철, 이종혁, 계층적기호접속정보를이용한한국어형태소분석기의구현, 제 4 회한글및한국어정보처리학술대회논문집, pp. 95-104, 1992. [6] 김성용, TABULAR PARSING 방법과접속정보를이용한한국어형태소분석기, 석사학위논문, 한국과학기술원, 1987. [7] 언어자원은행, http://www.bora.or.kr/ 31