• 검색 결과가 없습니다.

형태소 생성을 통한 세종 형태분석 말뭉치의 오류 검출 및 수정 도구 개발

N/A
N/A
Protected

Academic year: 2022

Share "형태소 생성을 통한 세종 형태분석 말뭉치의 오류 검출 및 수정 도구 개발"

Copied!
50
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

공학석사 학위논문

형태소 생성을 통한 세종 형태분석 말뭉치의 오류 검출 및 수정 도구 개발

Developing a Tool for Detecting and Correcting Errors in Sejong POS Tagged Corpus

지도교수 김재훈

년 월 2012 7

한국해양대학교 대학원

컴퓨터공학과

최 명 길

(2)

을 최명길의 으로 함.

本 論文 工學碩士 學位論文 認准

위원장 신 옥 근 인

위 원 박 휴 찬 인

위 원 김 재 훈 인

년 월 일

2012 7 26

한 국 해 양 대 학 교 대 학 원

(3)

목 차

제 1 장 서론 ··· 1

제 2 장 관련 연구 ··· 3

말뭉치 오류 수정 방법 및 도구 2.1 ··· 3

형태소 생성 2.2 ··· 4

한국어 자동 띄어쓰기 2.3 ··· 4

세종 말뭉치 2.4 ··· 5

제 3 장 세종 형태분석 말뭉치의 오류 분석 및 수정 방법 ··· 7

세종 형태분석 말뭉치에서 발생된 오류 유형 3.1 ··· 8

오류 후보 검사 3.2 ··· 10

띄어쓰기 오류 검사 3.3 ··· 12

오류 수정 방법 3.4 ··· 14

제 4 장 세종 형태분석 말뭉치 오류 수정 도구 ··· 19

세종 형태분석 말뭉치 파싱 4.1 ··· 21

시스템 자료구조 4.2 ··· 24

데이터베이스 테이블 4.3 ··· 25

문장 분석 창 4.4 ··· 29

오류 수정 창 4.5 ··· 31

말뭉치 재배포 4.6 ··· 34

제 5 장 실험 및 평가 ··· 36

제 6 장 결론 ··· 38

참고문헌 ··· 39

부록 ··· 42

(4)

표 목차

표 2.1 세종 형태분석 말뭉치의 오류 유형 ··· 3

표 2.2 각 말뭉치별 표현 방법 ··· 6

표 3.1 세종 말뭉치에 포함되어 있는 오류들의 예제 ··· 8

표 4.1 sentence 테이블 ··· 25

표 4.2 word 테이블 ··· 26

표 4.3 morph 테이블 ··· 27

표 4.4 fileinfo 테이블 ··· 28

표 5.1 오류 수정 도구의 사용 유무에 따른 검사 속도 측정 결과 ··· 36

표 5.2 파일 수정에 따른 속도 변화 측정 ··· 37

(5)

그림 목차

그림 3.1 어절과 형태소 분석 결과를 이용한 오류 후보 검사 ··· 10

그림 3.2 오류 패턴 생성 개념도 ··· 11

그림 3.3 입력 문장과 자동 띄어쓰기 결과 비교 ··· 12

그림 3.4 띄어쓰기 학습 데이터 ··· 13

그림 3.5 철자오류의 검출 및 수정 ··· 14

그림 3.6 삭제오류의 검출 및 수정 ··· 15

그림 3.7 불필요한 음절 삽입 오류의 검출 및 수정 ··· 16

그림 3.8 재분석 방법 ··· 17

그림 3.9 어절 재분석 알고리즘 ··· 18

그림 4.1 오류 수정 도구의 전체 흐름도 ··· 19

그림 4.2 오류 수정 도구의 자료 흐름도 ··· 20

그림 4.3 시스템 자료구조 생성 알고리즘 ··· 21

그림 4.4 어절 리스트 생성 알고리즘 ··· 22

그림 4.5 형태소 리스트 생성 알고리즘 ··· 23

그림 4.6 시스템 자료구조 형태 ··· 24

그림 4.7 데이터베이스 E-R 다이어그램 ··· 28

그림 4.8 오류 후보 추천 ··· 29

그림 4.9 기존 문장과 수정된 문장과 비교 ··· 30

그림 4.10 오류 수정 창 ··· 31

그림 4.11 오류 후보 테이블 ··· 32

그림 4.12 문장 표시 창 ··· 32

그림 4.13 형태소 분석 표시 창 ··· 32

그림 4.14 오류 수정 패턴 표시 창 ··· 33

그림 4.15 동일 패턴 오류 표시 창 ··· 33

그림 4.16 Word 테이블 ··· 34

그림 4.17 Morph 테이블 ··· 34

그림 4.18 세종 형태분석 말뭉치 포맷 ··· 35

그림 4.19 말뭉치 재배포 UI ··· 35

그림 5.1 파일 수정에 따른 속도 변화 그래프 ··· 37

(6)

Developing a Tool for Detecting and Correcting Errors in Sejong POS Tagged Corpus

Choi Myung-gil

Department of Computer Engineering, Graduate School of Korea Maritime University

Abstract

Sejong Corpora are widely used for Korean Language Processing and contains POS(Part of Speech) tagged corpus, word sense tagged corpus, dependency tree tagged corpus, and Korean-English parallel corpus. However, it also contains many kinds of errors although the corpora had been built by well-trained annotators. In this thesis, we specially are interested in the errors which are involved in Sejong POS tagged corpus. The errors cause bad performance of the systems which are trained via the corpus, and should be minimized. It, however, is not easy to detect and correct the errors in the corpus because the proportion of the errors is large and the kinds of the errors are very diverse. Furthermore, detecting and correcting the errors are laborious, time-consuming and then spend large expense.

In this thesis, we propose the error correction tool for efficiently detecting and correcting the errors in the Sejong POS tagged corpus.

We automatically detect the errors using the methods for morphological generation and automatic word spacing. The former is used for insertion and deletion errors and spelling errors, and the latter is for word spacing errors. Also we semi-automatically correct the errors using graphical user interface (GUI), which is implemented in Java. The GUI consists of four major functions: the spelling error

(7)

reduce laborious tasks and repetitive behavior patterns.

We have observed that there’s been a nine-fold reduction in the duration for error detection and correction at the least when applying the proposed tool to Sejong POS tagged corpus. We have also shown that error correction speed has steadily increased through experiments.

As a result, the proposed tool is very promising for error detection and correction.

(8)

제 1 장 서 론

최근 인터넷과 기계학습(machine learning) 기술의 발전과 더불어 자연언어 처리 분야에서는 학습 자료인 말뭉치(corpus)를 매우 활발하게 사용하고 있다. 말뭉치는 대규모의 전산화된 언어자료의 집합으로 언어를 연구하는 각 분야에서, 필요로 하는 연구재료이며 언어의 본질적이고 다양한 변이를 총체적으로 보여, 줄 수 있는 텍스트 집합을 의미 한다1). 이러한 말뭉치는 언어 정보화의 가장 기 초적인 자료이므로 언어 정보화의 단계에서 가장 먼저 해야 될 일이 말뭉치의 구 축이다 대규모의 말뭉치를 통해서 자료를 추출하고 통계적인 방법을 통해서 규. 칙을 찾아내어 컴퓨터에 인식시킴으로써 컴퓨터가 사람과 같은 언어지식을 갖추 도록 하는 방법을 대부분의 자연언어처리 분야에서 채택하고 있다.

여러 국가에서 자국어 정보처리를 위해 말뭉치를 구축하고 있다 우리나라에도. 한국어 정보처리를 위해 다양한 말뭉치가 구축되었으며, 이 중에 한국어 정보처 리 연구자가 쉽게 이용할 수 있는 말뭉치가 세종 말뭉치이다 세종 말뭉치는 원. 시 말뭉치 형태분석 말뭉치 형태의미분석 말뭉치 그리고 구문분석 말뭉치를 포, , 함하고 있다 김흥규( 2007). 세종 말뭉치는 자연언어처리 연구 분야에서 매우 중 요한 정보로 사용되고 있으나 구축된 세종말뭉치는 몇몇 문제점을 가지고 있다.

말뭉치 텍스트 파일의 인코딩 문제 문자의 깨짐 현상 등의 있으며 이미경 외, ( , 특히 형태분석 말뭉치에는

2005), 형태소에 품사가 잘못 부착되었거나 문장 내, 에서 단어가 잘못 분리된 경우 그리고 불필요한 단어가 삽입된 경우나 단어가, 삭제되는 경우 등의 오류를 포함하고 있다 이러한 오류를 포함한 말뭉치는 자연. 언어처리 시스템에 그대로 적용할 경우 좋은 성능을 기대할 수 없다 그러므로. 말뭉치의 오류를 수정하는 일은 꼭 필요하다.

하지만 이러한 오류를 대용량의 말뭉치에서 수정하기란 쉽지 않다 다양한 패. 턴의 오류가 존재하고 오류의 개수 또한 매우 많기 때문이다 또한 오류를 수정. 하기 위해서는 많은 인력과 시간이 필요하며 결과적으로 많은 비용이 들게 된다, . 그리고 많은 인력을 동원하여 수정한 말뭉치에 또 다른 오류가 발생할 수 있다.

왜냐하면 여러 사람들이 동시에 작업하므로 수정의 일관성을 유지하기란 그다지

(9)

쉽지 않은 일이기 때문이다.

본 논문은 세종말뭉치 중에서 약 1,500만 어절로 구성된 형태분석 말뭉치에 포함된 오류를 수정하기 위해서 오류 검출 및 수정 방법을 제시한다 오류 는 형. 태소 생성과 자동 띄어쓰기 방법을 이용하여 자동으로 검출한다 형태소 생성을. 이용한 오류 검출 방법은 주어진 어절과 형태소 분석 결과의 형태소 생성 결과가 서로 다를 경우 해당 어절을 오류 가능 어절로 제시한다, . 자동 띄어쓰기를 이용 한 오류 검출 방법은 주어진 문장과 자동 띄어쓰기 결과를 비교하여 서로 다를 경우 띄어쓰기가 다른 어절을 오류 가능 어절로 제시한다 본 논문에서는 위에서, . 설명한 오류들을 GUI(graphical user interface)를 통하여 수동으로 수정한다. 수정 방법은 크게 철자오류 수정 형태소 삭제 수정 형태소 삽입 수정 어절 재, , , 분석을 통하여 수정되며 가능한 반복적인 작업은 수행하지 않도록 설계되었다.

논문의 구성은 다음과 같다. 2장에서 말뭉치 오류 수정 방법 및 도구 형태소, 생성 자동 띄어쓰기 세종 말뭉치 등의 관련 연구를 살펴보고, , , 3장에서 세종 형 태분석 말뭉치에는 어떤 오류들이 존재하고 이러한 오류를 어떤 방법으로 수정할 것인지에 대한 방법론을 제시하고, 4장에서 오류 수정 방법을 바탕으로 구현한 오류 수정 도구에 대하여 설명한다. 5장에서는 오류 수정 도구의 성능에 대하여 평가 한다 마지막으로. 6장에서 결론을 맺고 향후 연구 방안에 대하여 기술한다.

(10)

제 2 장 관련연구

2.1. 말뭉치 오류 수정 방법 및 도구

말뭉치 오류 수정 도구는 기본적으로 오류 검출(error detection)과 오류 수정 기능을 가지고 있다 오류 검출은 말뭉치 내에 포함된 오류 (error correction) .

를 찾아내는 것으로 다양한 방법들이 제안되었으며, Sparse Markov tranducer 를 이용하여 오류에 대한 변칙 탐지 방법(Eskin, 2000), SVMs(Support

을 이용한 검출 방법

Vector Machines) exceptional elements (Nakagawa and 을 이용한 오류 검 Matsumoto, 2002), Directed Treebank Refinement(DTR)

출 방법(Ule and Simov, 2004), Modular neural network를 이용한 오류 검출 방법(Ma et al., 2001) 등이 그것이다 한국어에 대해서도 세종 말뭉치에 포함. 된 오류를 검출하기 위해 이미경 외( , 2005)에서는 <표 2.1>와 같은 오류 유형 을 정의하여 오류를 검출하였고 이러한 오류들을 검출하기 위하여 모든 어절에 대하여 어절 분할 오류 검사 철자 오류 검사 표지 부착 오류 검사 일관성 오류, , , 검사를 실시하여 오류인지 아닌지 확인하였다.

유형 종류

어절 분할 오류 다어절 오류 형태소 분할 오류 철자 오류

어절 철자 오류 형태소 철자 오류 품사 태그 사용 오류 표지 부착 오류

어절 분할

특정 형태소 누락 특정 형태소 추가 형식 오류 형태소 품사 쌍 오류

형태소 분석 결과 일관성 오류 문맥 의존 오류

문맥 비의존 오류 표 세종 형태분석 말뭉치의 오류 유형

< 2.1>

오류 수정은 검출된 오류를 수정하는 방법으로 자동으로 수정하는 방법과 수동 으로 수정하는 방법이 있다. 자동으로 오류를 수정하는 방법으로 (Brants,

(11)

이블이 무엇인지 표시하는 주변 n개의 레이블에 대한 확률 정보를 사용하였고,

는 를 사용하여 오류 수정 문제를 해결하였다

(Schmid, 1997) Decision trees .

2.2. 형태소 생성

형태소 생성이란 일련의 형태소들로부터 어절을 생성하는 것이다 대부분의 형. 태소 생성은 단순한 형태소들의 연접(concatenation)으로 가능하다 그러나 일. 부 조사의 변이형이나 용언의 생성은 약간의 규칙을 가지고 있다 예를 들면. (‘학 교’, ‘을’ 은) "학교를"로 생성된다 이는 목적격 조사인. ‘을’은 받침 없는 명사 뒤 에서는 ‘를’로 생성되기 때문이다 용언의 경우에는 이보다 훨씬 더 복잡하다 예. . 를 들면 (‘아름답다’, ‘어’ 는) “아름다워 로 생성된다 이와 같은 복잡한 용언의” . 생성에 대한 연구로는 정승원 외( 1990)이 있다. 정승원 외( , 1990)은 어간과 어미의 접속 시 발생하는 음운규칙을 의미적인 분류는 배제한 채 형태적인 분류 로만 간주하여 추론하였고 이것을 바탕으로 올바른 접속을 통한 용언 어절 생성, 시스템을 구현하였다.

2.3. 한국어 자동 띄어쓰기

한국어의 자동 띄어쓰기 방법은 크게 규칙 기반 방법과 통계 기반 방법으로 나 눌 수 있다.

첫 번째 규칙 기반 방법으로 김계성, ( , 1998)에서는 띄어쓰기 단서 정보와 휴 리스틱 정보를 이용하여 분리하고 이 결과의 형태소를 분석하여 교정하며 마지, 막으로 음절수를 제한한 어절 간 결합을 시도하여 재교정하는 방법을 사용한 연 구가 있다 다른 방법으로는 어절 경계에 공백을 삽입하는. ‘어절 인식 접근법’ 과 알고리즘의 복잡도를 줄이고 오류를 최소화하기 위해 어절 블록을 추출하는 문장 분할 기법 을 사용한 연구가 있다 강승식 하지만 이러한 규칙

‘ ’ ( , 2002).

기반 방식은 통계 기반 방법에 비해 어휘 지식의 구축 관리 그리고 유지에 있어, 많은 비용이 든다.

두 번째로 통계 기반 방법에서는 최성자 외( , 2003)에서는 음절 n-gram과 어 절 통계를 이용하고 자료 부족 문제를 해결하기 위해, ‘최장일치법’을 사용했 다 그리고 다른 방법으로 이도길 외. ( , 2003)는 어절의 양을 늘리는 기존의 접근 과는 다르게 임계치를 정하고 추출한 어절 통계 정보를 기반으로 완화기법을 사,

(12)

용한 연구와 자동 띄어쓰기를 품사 부착과 같은 분류 문제로 간주하여 은닉 마르 코프 모델을 일반화함으로써 확장된 문맥을 고려하는 연구를 하였다 마지막으로.

심광섭 은 를 사용하여 문제를 해결하

( , 2010) CRF(Conditional Random Field)

였다 하지만 이러한 통계 기반 방식은 시스템 구축에 사용한 말뭉치에 포함된. 문장과 유사한 문장에 대해서는 높은 정확도를 보이는 반면 그렇지 못했을 때는 정확도가 떨어질 수 있다.

2.4. 세종 말뭉치

세종 말뭉치는 21세기 세종계획 프로젝트를 통해서 세계 수준의 국어 기초 자 료 구축을 통한 우리말 정보화 표준화된 전자 사전 구축을 통한 우리말 체계화, 그리고 언어 정보화 관련 규격 및 도구의 체계적 정리를 통한 우리말 표준화라는 목표를 가지고 구축된 방대한 양의 말뭉치이다 김흥규( , 2007).

세종 말뭉치는 현대 말뭉치 병렬 말뭉치 역사 말뭉치로 구성되어 있으며 본, , 논문에서 다루는 세종 형태분석 말뭉치는 현대 말뭉치에 포함되어 있는 형태분석 말뭉치를 의미한다. <표 2.2>을 보면 형태분석 말뭉치 이외에 원시 말뭉치 구문, 분석 말뭉치 형태의미분석 말뭉치 등 다양한 정보를 포함하는 말뭉치들로 구성, 되어 있다.

(13)

종류 예시

원시

형태분석

구문분석

형태의미분석

표 각 말뭉치별 표현 방법

< 2.2>

(14)

제 3 장 세종 형태분석 말뭉치의 오류 분석 및 수정 방법

본 논문에서는 세종 형태분석 말뭉치에서 오류를 분석하기 전에 말뭉치 전체에 얼마나 많은 오류가 포함되어 있는지 추정하기 위하여 전체 약 15,000,000 어절 을 샘플링하여 전체 어절 개수의 3% 정도인 450,000 어절에 대하여 오류가 몇 개나 포함되어 있는지 확인하였다. 450,000 어절에서는 총 29,253개의 오류가 발견되었고 이를 통해서 전체에 약 975,100개 정도의 오류가 포함되어 있음을 추정할 수 있었고 이는 전체 어절 수에 약 6.5%에 해당하는 양임을 알 수 있었 다.

본 장에서는 세종 형태분석 말뭉치의 오류를 분석하고 이를 수정하기 위한 방 법에 대하여 기술한다.

(15)

3.1. 세종 형태분석 말뭉치에서 발생된 오류 유형

표 에서 보는 바와 같이 세종 형태분석 말뭉치에는 여러 가지 종류의 오

< 3.1>

류가 있다.

오류 종류 어절 오류 예시

분석 오류

끔찍한 오류 끔직/XR+ /XSA+ /ETM 수정 끔찍/XR+ /XSA+ /ETM

웃으신다. 오류 /VV+으시/EP+시/EP+/EF+./SF 수정 /VV+으시/EP+/EF+./SF 찾아갔고, 오류 /VV+ /EC+ /VX+ /EC+,/SP

수정 /VV+ /EC+ /VX+았 /EP+ /EC+,/SP 한자 표기 오류 다소비 다소비( ) 오류 다소비(다소비)

수정 다소비(多消費)

특수문자 오류

오류 (/SS+ /NNG+)/SS 수정 ㈜/SS

다른

오류 "/SS 다른/MM 수정 /SS 다른/MM 대소문자 오류2) content 오류 Content/SL

수정 content/SL

다중품사 부착오류 여권에서 오류 /NNG+ /XSN/NNG 에서 + /JKB 수정 /NNG+ /NNG 에서 + /JKB

어절 철자 오류 헤택을 오류 헤택을

수정 혜택을

띄어쓰기 오류 디자인세계 수정 디자인 세계,

형태소 분리 오류 국내의 오류 /NNG+내의/NNG 수정 국내/NNG+ /NNG 표 세종 말뭉치에 포함되어 있는

< 3.1> 오류들의 예제

표 제시한 열 한가지의 오류 유형의 설명은 다음과 같다

< 3.1> .

(1) 기존에 끔찍한 이라는 단어가 형태소 분석되는 과정에서 끔직 하" " " + + "ᄂ 으로 변환이 되었는데 이것은 " "ᄍ 을 " "ᄌ 으로 잘못 타이핑하여 입력한 오류로 볼 수 있다.

(2) 웃으신다 라는 어절이" ." " +웃 으시 시+ +ᄂ다+."으로 분석되었는데 중간 에 으시 와" " "ᄂ다 사이에 불필요한 시 라는 음절이 삽입되어 있는 오류" " "

이다.

2) 이는 어절과 형태소 분석 결과에서 대소문자가 다른 경우의 오류이다.

(16)

(3) 찾아갔고 라는 어절에서" ," " + + + +,"찾 아 가 고 라고 표시되었는데 올바르 게 표시한다면 찾 아 가 았 고" + + + + +,"라고 표현되어야 한다 이는 중간에.

았 이 삭제된 오류임을 알 수 있다

" " .

(4) 어절 다소비 다소비 에서 괄호안의 단어가" ( )" "多消費"가 아닌 한글로 다"

소비 라고 입력되어 발생한 오류이다 따라서 어절을 수정하여 다소비" . "

로 수정 되어야 한다 (多消費)" .

(5) 특수문자 오류 중에 " "㈜ 가 "(주 라고 분석되어 있다 이것은 앞에 나타)" . 난 " "㈜ 는 특수문자로 쓰이므로 "(주 와 차이가 있다 이와 같은 경우에)" . 의 품사는 특수문자를 의미하는 로 부착되어야 하는데 를 특

" "㈜ "SE" " "㈜ 수문자로 인식하지 않고 "(주 로 인식하여 이에 해당하는 분석인)" "(/SS

주 로 잘못 분석하여 발생한 오류이다

+ /NNG + )/SS" .

(6) 다른 형태의 큰 따옴표가 각각 어절과 형태소 분석에 쓰여 진 경우이다.

이와 같은 경우 어절의 정보를 형태소 분석에 그대로 반영해야 하므로 어 절의 큰 따옴표를 형태소 분석에 적용해야 한다.

(7) 영어의 대소문자가 잘못 변환되는 경우이다 어절에서는 소문자로 시작하. 는 "content" 이므로 분석결과의 대문자로 시작하는 "Content" 는 잘못 입력되었음을 알 수 있다.

(8) 권 의 품사가" " "/XSN/NNG"와 같이 다중 부착되었음을 알 수 있다 형태. 소에 하나의 품사만 부착해야 하므로 다중 부착된 품사는 하나의 품사로 수정해야 한다.

(9) 어절자체의 철자오류로써 혜택을 을 헤택을 이라 입력한 것이다 그러" " " " . 므로 어절의 정보를 수정해야 한다.

(10) 어절 디자인세계 에서 단어의 띄어쓰기 오류로 인하여 하나의 어절로" "

입력되었다 이 오류는 디자인 과 세계 와 같이 두 개의 어절로 분리. " " " "

되어야 하지만 이를 분리하지 않은 오류를 의미한다.

(11) 국내의 라는 어절이 국내" " " /NNG + 의/JKG"로 분석되어야 하는데 단어 분리가 잘못되어 국" /NNG + 내의/NNG"와 같이 분석되어졌다 이 오. 류 유형에 대한 오류 수정 방법은 본 논문에서는 다루지 않는다.

(17)

3.2. 오류 후보 검사

오류 후보는 어절과 형태소 분석 결과를 이용한 형태소 생성 정보를 각각 자소 분해한 문자열을 비교한다 이 때 어절의 자소 분해 결과와 형태소 생성 정보의. 자소 분해 결과가 일치하지 않을 경우 오류일 가능성이 높은 어절이라고 가정하 고 오류 패턴을 생성한다 오류 후보를 검사하여 오류 패턴을 생성하는 과정은.

그림 과 같다

< 3.1> .

그림 어절과 형태소 분석 결과를 이용한 오류 후보 검사

< 3.1>

그림 은 기존 말뭉치에 입력되어 있는 형태소 분석 결과에서 품사를 분

< 3.1>

리한 뒤에 형태소 생성을 하여 형태소 생성 정보를 얻을 수 있다. 어절과 형태소 생성 정보를 각각 자소 분해하여 비교하는 과정을 거친다. <표 3.1>에서와 같이 어절과 형태소 생성 정보를 자소 분해하여 비교하면 ‘ᄍ’이 ‘ ’ᄌ 으로 변화되 었음을 알 수 있다 이것을 하나의 오류 패턴으로 구성하게 되며. "<>"을 구분자 로 사용하여 "ᄍ <> ᄌ"로 표시한다 이 방법은. <표 3.1>의 띄어쓰기 오류 형태, 소 분류 오류를 제외한 모든 오류에 대하여 적용할 수 있다.

(18)

그림 는 어절의 자소 분해 결과와 형태소 생성 정보의 자소 분해 결과를

< 3.2>

통해서 오류 패턴을 생성하는 개념도이다.

그림 오류 패턴 생성 개념도

< 3.2>

어절과 형태소 생성 정보를 각각 자소 분해하고 각각의 자소 분해 결과에 정방 향 비교와 역방향 비교를 이용하여 서로 다른 문자일 때 해당 인덱스 와i k를 저 장한다 각각의 자소 분해 결과에서 앞에서 결정된 인덱스를 이용하여 부분문자. 열을 추출하여 "<>"의 오른쪽에는 어절 자소 분해 결과의 부분문자열을 왼쪽에, 는 형태소 생성 정보 자소 분해 결과의 부분문자열을 삽입하여 "A <> B" 형식의 패턴을 생성할 수 있다.

(19)

3.3. 띄어쓰기 오류 검사

띄어쓰기 오류는 앞에서 언급한 오류 후보 검사 방법으로는 찾아낼 수 없다 그. 래서 본 절에서는 띄어쓰기 오류를 검사하기 위한 방법을 제시한다.

세종 형태분석 말뭉치에 포함된 문장은 띄어쓰기가 잘못 되어 있는 오류들이 포함되어있다 이러한 오류를 줄이기 위하여 자동 띄어쓰기 시스템을 사용하여. 기존의 문장과 이것을 입력으로 다시 띄어쓰기한 결과를 <그림 3.3>과 같이 사 용자에게 보여주고 사용자가 확인하도록 하였다.

그림 입력

< 3.3> 문장과 자동 띄어쓰기 결과 비교

자동 띄어쓰기에 사용된 기계학습 알고리즘으로는 CRF를 사용하였다 띄어쓰. 기 모델을 생성하기 위해 CRF++(Ver. 0.64)를 사용하고 기계학습에 사용된 학 습 말뭉치는 ETRI 말뭉치를 <그림 3.4>과 같이 학습데이터로 변환하여 사용하 였다.

(20)

그림 띄어쓰기 학습 데이터

< 3.4>

띄어쓰기 문제에서는 어절 경계를 중심으로 전 후 몇 음절만 참조하였다 이것, . 은 어절 경계에서 멀리 떨어진 음절은 띄어쓰기 문제 해결에 도움이 되지 않으므 로 본 논문에서는 전후 두 음절의 범위의 음절 정보만을 이용하였다 자질의 수. 는 총 8개(  ,   , ,   ,   ,     ,   ,   )의 자질을 사용 한다 이 자질을 사용하여 띄어쓰기를 한 결과 약. 97.70%의 정확도를 보여주었 다.

자동 띄어쓰기로 기존의 문장을 다시 띄어쓰기 모델을 통하여 기존의 어절과 비교할 수 있으며 만약 잘못 띄어쓰기된 어절이 있을 경우 현재 문장에서 띄어쓰 기를 수정하고 앞 절에서 언급한 문장 재분석 기능을 사용함으로써 새로운 분석 정보를 생성할 수 있다.

(21)

3.4. 오류 수정 방법

앞에서 언급한 여러 유형의 오류를 수정하기 위하여 본 논문에서는 네 가지 방 법을 제안한다 이 방법들은 사람이 직관적으로 오류를 보았을 때 어떻게 수정할. 지에 대하여 고려하였다.

첫 번째 방법은 철자오류 수정 방법이다 이 방법은. <그림 3.5>과 같이 어절의 음절 개수와 형태소 생성결과의 음절 개수가 동일할 때 사용한다. 이 방법은 주 로 단순 철자오류를 수정할 때 적용할 수 있는데 예를 들어 <그림 3.5>에서 어절 백원 과 형태소 생성결과 천원 을 비교해 보면 두 문자열의 길이는 동일하며

"7 " "7 "

백 을 천 으로 잘못 분석하였기 때문에 발생한 오류이다 오류를 수정하는 입장

" " " " .

에서 이러한 문제를 해결하기 위해서는 단순하게 형태소 분석 정보의 천 에 해" "

당하는 형태소를 백 으로" " 수정하기만 하면 된다.

그림 철자오류의 검출 및 수정

< 3.5>

이와는 다른 유형의 오류를 예를 들면 <표 3.1>의 특수문자 오류 중에 "“다른 에 대하여 적용하면 이 어절의 형태소 분석 결과는 다른 이고 어절

" ""/SS+ /MM"

의 " 와 형태소 분석결과의" ‘"’가 다름을 알 수 있다 이 경우에도 형태소 분석결. 과의 ‘”’를 ‘ ’로 수정 하면 문제를 해결할 수 있다. 또한 대소문자 오류도 마찬가

(22)

지로 어절에 따라 형태소 분석 결과의 대문자에서 소문자로 또는 소문자에서 대 문자로 수정하면 문제를 해결할 수 있다 그리고 어절만 수정하면 되는 한자 오. 류 어절 철자 오류도 동일한 방법을 적용할 수 있다, .

두 번째 방법은 삭제오류 수정 방법이 있다 삽입 수정 방법은. <그림 3.6>처럼 형태소 분석 결과에 형태소가 삭제된 경우 적용할 수 있다. <그림 3.6>의 경우 어절의 " "갔 이 형태소 분석에서 " /VX"가 로 분석되었는데 올바른 분석은 "가 았 로 분석되어야 한다 이는 형태소 았 이 삭제된 오류로 이를 수 /VS+ /EP" . " /EP"

정하기 위해 가" /VX+ /EC"고 사이에 았" /EP"을 삽입하여 수정할 수 있다.

그림 삭제 오류의 검출 및 수정

< 3.6>

세 번째 수정 방법은 삽입오류 수정 방법이 있다 삭제 수정 방법은. <그림 처럼 어절의 음절 개수가 형태소 생성결과의 음절 개수보다 작을 때 사용한 3.7>

다 이 같은 경우 우리가 원하는 것은 단순하게 시. " /EP"를 삭제하는 것이다 당연. 히 이 부분만 삭제하면 올바른 분석이라고 할 수 있다 다른 예로. <표 3.1>에서 특수문자 오류의 예시 중에 특수문자 " "㈜ 가 형태소 분석을 하였을 때 "(/SS+주 로 변환되는 오류는 모든 형태소들에 대한 분석이 잘못되었으므로 /NNG+)/SS"

(23)

수정할 수 있다.

그림 불필요한 음절 삽입 오류의 검출 및 수정

< 3.7>

네 번째 수정 방법은 재분석 방법이 있다 재분석 방법은 문장에서 어절의 띄어. 쓰기가 잘못되어 문장을 수정해야 하는 경우나 문장 자체의 내용을 수정해야 할 경우에 사용한다 이 때 기분석 사전을 사용하여 형태소 분석을 하는 방법. 3)을 사 용하였다 세종 형태분석 말뭉치는 약. 1,500만 어절에 대한 형태소 분석 정보가 포함되어 있으므로 이것을 기분석 사전으로 사용하였다. <그림 3.8>의 경우 문 장에서 불편해도 라는" " 어절을 불편한 으로 변경한 경우의 예제이다 이 경우 변" " . 경된 어절에 대한 새로운 형태소 분석이 필요하다 데이터베이스의. word 테이블 에서 불편한 이라는 어절의 정보가 있을 경우 해당 어절의 형태소 분석정보를" "

그대로 사용한다 만약 어절 정보가 없을 경우 음절을 하나씩 줄여가면서. morph 테이블에서 검색을 하고 동일한 형태소 정보가 있을 경우 이에 대한 형태소 정보 를 사용하는 방법을 사용하였다 이에 대한 알고리즘은. <그림 3.9>와 같다.

3) 기분석 사전을 이용한 형태소 분석방법은 이미 분석된 어절의 형태소 정보를 사전으로 가지고 있으며 특정 어절에 대하여 분석이 필요할 경우 해당 어절이 사전에 있는지 확인하고 있으면 미리 분석해 놓은 형태소 분석 정보를 결과로 내어놓는 분석 방법이다.

(24)

그림 재분석 방법

< 3.8>

(25)

ArrayList<Morpheme> search_morph(MorphList, Lword, Rword, index){

데이터베이스 테이블에서 형태소 검색

MorphData = DatabaseSearch(Lword) // Morph if(!Lword.equals("") && MorphData.OK ){

오른쪽 문자열 검색 MorphList = search_morph(MorphList, Rword, "")//

형태소 정보가 데이터베이스에 없을 경우 if(MorphList.size() == 0){ //

Morpheme tempMorph = new Morpheme(Lword+Rword, "NNP");

MorphList.add(tempMorph)

형태소 정보가 데이터베이스에 있을 경우

}else{ //

Morpheme tempMorph = new Morpheme(Lword, MorphData.tag);

형태소 정보를 추가 MorphList.add(tempMorph)//

}

}else if(index ! = 1){

의 마지막 를 제외한 부분문자열

// Lword index

redLword = Lword.substring(0, index-1)

위에서 제외된 음절과 의 결합 문자열

// Rword

incRword = Lword.substring(index-1)+Rword

MorphList=search_morph(MorphList, redLword , incRword, index-1);

}

return MorphList;

}

그림 어절 재분석 알고리즘

< 3.9>

(26)

제 4 장 세종 형태분석 말뭉치 오류 수정 도구

그림 은 말뭉치 오류 수정 도구에서 말뭉치가 데이터베이스에 저장된 내

< 4.1>

용을 수정하여 오류가 없는 말뭉치를 재배포하는 과정이다 세종 형태분석 말뭉. 치의 오류를 검출하여 데이터베이스에 말뭉치를 적재하고 적재된 말뭉치에 대하, 여 오류를 수정하여 데이터베이스에 저장한다 그리고 말뭉치 정보가 저장된 데. 이터베이스를 재배포하여 수정된 말뭉치를 얻는다.

그림 오류 수정 도구의 전체

< 4.1> 흐름도

그림 는 오류 수정 도구의 자료 흐름도이다 세종 형태분석 말뭉치를 시

< 4.2> .

스템 자료구조에 넣기 위하여 말뭉치를 파싱4)하는 작업이 필요하다 말뭉치는. 파싱을 하여 시스템 자료구조를 통해서 데이터베이스에 적재하도록 설계되었다.

사용자는 말뭉치 텍스트 파일이름을 매개변수로 데이터베이스에 접근하여 해당

(27)

파일이름을 가지고 있는 데이터를 시스템 자료구조에 적재할 수 있다 그리고 사. 용자가 작업할 수 있는 작업환경을 구축한다 말뭉치 정보를 저장하는 과정은. 1 차적으로 시스템 자료구조에 저장하고 이 후에 데이터베이스를 수정한다 마지막. 으로 데이터베이스에 저장되어 있는 말뭉치 정보를 파일이름 단위로 데이터베이 스에 접근하여 기존의 텍스트 파일 형태의 말뭉치로 재구축할 수 있다.

그림 오류 수정 도구의 자료

< 4.2> 흐름도

본 절에서는 세종 형태분석 말뭉치의 오류 수정 도구를 구현하기 위하여 말뭉 치를 파싱하는 방법과 파싱된 정보를 저장할 자료구조와 데이터베이스 테이블에 대하여 설명한다 그리고 사용자가 수정 작업을 하기 위한 환경인 문장 분석 창. 에 대한 정보와 수정된 데이터를 재배포하기 위한 과정에 대하여 다룬다.

(28)

4.1. 세종 형태분석 말뭉치 파싱

기존의 텍스트파일로 구축된 세종 형태분석 말뭉치를 본 논문에서는 데이터의 수정과 저장이 용이하게 하기 위하여 데이터베이스 테이블들에 말뭉치를 파싱하 여 저장하였다. <그림 4.3>는 세종 형태분석 말뭉치를 파싱하여 시스템 자료구 조와 데이터베이스를 구성하는 알고리즘이다.

한문장을 이루는 어절들의 리스트를 저장하는 변수 public static wordData; //

문장 복원에 사용될 변수 public static Sentence; //

사용자가 선택한 파일들이 저장된 변수 public static filelist; //

Sejong_Obj () {

파일리스트 크기 만큼 반복 for(i = 0 ; i < filelist.length ; i++) //

{

파일리스트에서 하나의 파일을 선택하여 읽어옴 file = filelist[i]; //

while( file.readLine() != null ) {

라인을 로 분리한 결과 splitedLine = '\t'

분석된 라인이고 처음 문장 시작 루프일 경우

if( )

{

wordData = new ArrayList<Word>();

문장 초기화 Sentence = ""; //

파일이름 문장번호 어절번호 어절리스트 추가 작업

set_word( , , , splitedLine);//

}

분석된 라인이고 처음 문장 시작 루프가 아닐 경우

else if( )

{

파일이름 문장번호 어절번호

set_word( , , , splitedLine);

}

한 문장에 대한 루프가 종료될 경우

else if( )

{

시스템 자료구조.Add(완성된 한 문장에 대한 정보);

} }

시스템 자료구조 데이터베이스에 삽입 UtilsDB(filename, );//

시스템 자료구조 초기화 }

}

그림 시스템 자료구조 생성 알고리즘

< 4.3>

사용자는 UI를 통해서 말뭉치를 다중 선택할 수 있고 선택되어진 파일들의 경 로와 이름이 각각 filelist에 저장된다. <표 2.2>에서 보여주는 바와 같이 세종 형

(29)

렇게 세 가지로 분리한 정보를 splitedLine에 저장하고 현재 라인이 분석된 라, 인이고 처음 문장 시작 루프일 경우 Sentence(문장 을 초기화하고) set_word() 를 통해서 문장을 구성하는 어절리스트를 생성한다 어절리스트를 생성하는 알고. 리즘은 <그림 4.4>와 같다.

파일이름 문장번호 어절번호

set_word( , , , splitedLine[]) {

배열이며 번째는 어절의 코드이고 //splitedLine[3] 0

번째는 어절을 의미

//1 ,

번째는 분석된 형태소를 의미 //2

문장 복원 //

Sentence += splitedLine[1]+" ";

에서 태그가 부착된 형태소 부분들만 분리 Morphemes = splitedLine

어절번호 = 어절번호+1;// 어절번호 증가 한 어절을 이루는 형태소 리스트 //

문장번호 어절번호

morphlist = Morph_info( , , Morphemes);

형태소의 생성 결과를 저장 morphSum = "";//

for( i = 0; i < morphlist.size(); i++ ) {

morphSum+=morphlist.get(i).getMorpheme();

}

기존 어절과 형태소 생성 결과와 비교 //

어절

pattern = diff.diffpattern( , morphSum);

완성된 한 어절에 대한 정보

wordData.Add( );

}

그림 어절 리스트 생성 알고리즘

< 4.4>

함수는 말뭉치 파일에서 문장이 시작되면서 끝날 때 까지 매번 호 set_word()

출되는 함수이다. set_word()함수가 호출되면 매개변수로 받은 splitedLine의 어절 정보를 이용하여 Sentence에 붙여서 문장을 복원하고 형태소 분석 정보만 따로 분리하여 어절을 구성하는 형태소 리스트를 생성하기 위하여

함수를 호출하며 이는 그림 와 같다 Morph_info() < 4.5> .

(30)

문장번호 어절번호

ArrayList<Morpheme> Morph_info( , , Morphemes[]) {

한 어절을 구성하는 형태소에 대한 정보를 저장하는 배열 //

morphemeList= new ArrayList<Morpheme>();

형태소번호 = 0;

for(i = 0; i < Morphemes.length; i+=2) {

형태소번호 += 1;

형태소와 품사로 분리 //

spMorph = Mor[i].split("/");

는 형태소를 의미 은 품사를 의미

//spMorph[0] , spMorph[1]

어절에 포함된 하나의 형태소에 대한 정보

morphemesList.add( );

}

return morphemesList;

}

그림 형태소 리스트 생성 알고리즘

< 4.5>

그림 를 통해서 어절의 형태소 분석 정보를 리스트로 생성하고 해당 리

< 4.5>

스트를 반환한다 반환된 형태소 리스트를 사용하여 형태소 생성결과를 만들고. 어절과 형태소 생성 결과를 비교하여 오류 패턴을 생성한다 이 모든 어절에 대. 한 정보를 담아서 어절 리스트에 추가하는 작업을 한다 그리고. <그림 4.3>에서 문장의 시작과 끝이 아닐 경우 계속 앞에서 언급한 동작을 반복하며 문장의 마지 막 어절에 대한 어절 리스트 추가 작업을 마친 후 시스템 자료구조에 복원된 문 장과 어절 리스트 등 한 문장을 구성하는 정보를 삽입하게 된다 이러한 동작을. 반복적으로 수행하며 하나의 말뭉치 텍스트 파일에 대한 문장 정보를 저장한 시 스템 자료구조를 데이터베이스에 적재하고 시스템 자료구조에 포함된 정보를 모 두 비우고 다음 파일의 문장정보를 다시 추가하는 작업을 반복한다.

(31)

4.2. 시스템 자료구조

본 시스템은 <그림 4.2>에서 보는 바와 같이 시스템 자료구조를 통해서 모든 데이터가 이동한다 시스템 자료구조는. <그림 4.6>과 같다.

그림 시스템 자료구조 형태

< 4.6>

기본적으로 시스템 자료구조는 JAVA의 HashMap으로써 Key값으로 파일이 름과 문장번호의 조합으로 설정된다 예를 들면. Sejong1이라는 파일의 10번 문 장에 대한 Key값은 "Sejong"+" "+"10"처럼 문자열 조합으로 이루어진다 시스. 템 자료구조의 Value값은 Sentence 객체로 이루어져 있으며, Sentence 객체는 문장 번호 파일 이름, , 문장 작업 시간 어절 리스트로, , 구성되어 있다 어절 리스. 트는 한 문장을 이루고 있는 각 어절들의 정보를 포함하고 있다 각 어절은.

객체로 저장되며 어절 번호 어절 형태소 조합 오류 패턴

Word , , , , , 형태소 리스트

들로 구성되어 있다 형태소 리스트 또한 어절을 구성하고 있는 형태소들의 정보. 를 가지고 있다 각각의 형태소 정보는. Morpheme 객체에 저장되며 해당 형태소 가 속해 있는 문장의 번호 어절번호 형태소 품사정보들을 가지고 있다, , , .

(32)

4.3. 데이터베이스 테이블

칼럼 설명

fname 파일 이름 sent_id 문장번호 sent 문장 status 수정 상태 utime 수정 시간

user_id 수정한 사용자 ID comment 주석

표 테이블

< 4.1> sentence

표 의 테이블은 문장에 대한 정보를 가지고 있다 이 테이블의

< 4.1> Sentence .

주요 필드로는 PRIMARY KEY로 설정된 fname(파일이름), sent_id(문장번호) 필드가 있다. fname과 sent_id를 이용하여 Word 테이블과 Morph 테이블에 접 근하여 어절과 형태소에 대한 정보를 가져올 수 있도록 설계하였다. 그리고 문장 필드는 문장을 저장하는 필드이며 필드는 해당 문장을 사용

sent( ) status

자가 확인하고 이상이 있는지 없는지에 대하여 체크하는 필드이다 기본적으로. 라는 상태로 저장되어 있으며 가령 문장이 이상이 없다거나 오류를 수

Untagged ,

정하였을 때 Tagged라는 상태로 변환하여 저장하고 사용자가 수정하기가 까다 로운 경우 Asked라는 상태로 변환하여 전문가(expert)권한의 계정을 가지고 있 는 사용자에게 요청하여 질의를 할 수 있도록 하였다. utime(작업시점 은 데이터) 가 입력되거나 수정될 당시의 시간정보를 입력하는 필드로 사용자가 수정한 날짜 와 시간이 입력되어 관리자(administrator)권한의 계정을 가지고 있는 사용자가 데이터베이스에서 언제 해당 데이터가 수정되었는지 확인할 수 있도록 하였다.

사용자 필드는 어떤 사용자가 해당문장을 수정하였는지 계정이 등록 user_id( ID)

되도록 하는 기능을 가지고 있다 사용자가 문장을 수정하는데 있어서 어려움이. 있을 경우 expert 권한의 계정을 가지고 있는 사용자에게 질의를 할 수 있으며 질의를 남기는 필드로 comment(주석 를 사용한다) .

(33)

칼럼 설명

fname 파일 이름

sent_id 문장번호 word_id 어절번호

word 문장

utime 수정 시간

comment 주석

sum_morph 형태소 생성 정보 pattern 오류 패턴

pass 오류 인지 아닌지 표시 patterncomment 패턴에 대한 주석

표 테이블

< 4.2> word

표 의 테이블은 문장의 각 어절에 대한 정보를 포함하고 있다 이

< 4.2> Word .

테이블의 PRIMARY KEY로는 fname(파일 이름), sent_id(문장 번호), 어절 번호 로 설정하였다 어절 필드는 어절을 저장하는 필드이 word_id( ) . word( )

며 sum_morph(형태소 생성 정보 필드는 어절이 포함하고 있는 각각의 형태소) 를 통해서 형태소 생성 정보 문자열을 저장하는 필드이다. pattern필드는 앞서 언급한 어절과 sum_morph의 값을 통해서 비교한 결과 값이 들어가는 필드이며

필드는 오류인지 아닌지를 표시하는 필드로 사용한다

pass . patterncomment

필드는 패턴에 대한 주석을 입력하는 필드이다.

(34)

칼럼 설명

fname 파일 이름

sent_id 문장번호 word_id 어절번호 morph_id 형태소번호

morph 형태소

r_morph 형태소의 사전형 정보

tag 품사

ctag 구묶음 품사

ptag 기반구 품사

sem 형태소 의미코드

csem 구묶음 의미코드

psem 기반구 의미코드

utime 수정 시간

user_id 수정한 사용자 ID comment 주석

phrase 기반구 정보

chunk 구묶음 정보

r_chunk 사전형 구묶음 정보

표 테이블

< 4.3> morph

표 의 테이블은 로 파일 이름

< 4.3> morph PRIMARY KEY fname( ), sent_id

문장 번호 어절 번호 형태소 번호 로 설정하였다

( ), word_id( ), morph_id( ) .

필드는 표층형 형태소 정보를 저장하는 필드이며 필드는 형태

morph r_morph

소의 사전형 정보를 입력하는 필드이다. tag 필드는 형태소의 품사를 입력하는 필드이며 ctag, ptag는 각각 구묶음 품사와 기반구 품사정보를 입력하는 필드이 다. sem 필드는 형태소의 의미코드를 입력하는 코드로 예를 들면 사자 라는 형" "

태소의 의미코드는 동물이라는 의미코드가 될 수 있다. csem과 psem은 구묶음 의미코드와 기반구 의미코드를 삽입하는 필드를 의미하며 phrase 필드는 기반구 정보를 입력하는 필드, chunk는 구묶음 정보를 입력하는 필드, r_chunk는 사전 형 구묶음 정보를 입력하는 필드로 morph 테이블이 구성되어 있다.

(35)

칼럼 설명

fname 파일 이름

sent_no 문장 개수 word_no 어절 개수

user_id 수정한 사용자 ID

utime 수정 시간

tagged_all 작업 완료 여부

표 테이블

< 4.4> fileinfo

표 의 파일 정보 테이블은 말뭉치가 여러 텍스트파일로 구성되

< 4.4> fileinfo( )

어 있으므로 각 파일의 정보를 담고 있다 기본적으로. fname(파일 이름 정보를) 가지고 있다. sent_no 필드와 word_no 필드는 파일에 포함되어 있는 문장의 수 에 대한 정보와 어절의 수에 대한 정보를 입력하는 필드이며 말뭉치를 데이터베 이스에 적재하는 과정에 문장수와 어절의 수를 계산하여 입력하도록 되어 있다.

필드는 현재 파일을 어떤 사용자가 수정 작업을 하고 있는지에 대한 사 user_id

용자 정보를 입력하는 필드이며 utime 필드는 언제 작업이 마지막으로 이루어졌 는지 시간정보를 표시할 수 있는 필드이다 마지막으로. tagged_all 필드는 해당 파일의 작업이 모두 완료되었을 경우 1로 표시되며 완료되지 않을 경우 0으로 표시된다.

데이터베이스 테이블간의 관계는 <그림 4.7>과 같다. sentence, word,

테이블은 문장 분석과 연관 이 있으며 테이

morph (relation) sentence, fileinfo 블은 파일을 선택함으로써 해당 파일에 포함된 문장을 불러옴으로 파일 선택 기 능과 연관이 있다.

그림 데이터베이스 다이어그램

< 4.7> E-R

(36)

4.4. 문장 분석 창

문장 분석 창은 시스템 자료구조로부터 한 문장에 대하여 어절 형태소 분석된, 결과 오류 후보 등에 대한 정보를 표시해주는 창으로 사용자가 직접 문장을 수, 정하는 기능을 가지고 있다.

오류 후보는 Word 테이블에 입력되어 있는 오류 패턴 정보를 이용하여 패턴이 있을 경우 <그림 4.8>과 같이 문장 분석 창에 오류 후보가 아닌 어절과 다른 색 으로 표시하여 작업자가 최대한 빠르게 오류일 확률이 높은 어절을 볼 수 있도록 하였다.

그림 오류 후보 추천

< 4.8>

문장에서 띄어쓰기 오류와 같은 문제가 발생하여 오류를 수정하기 위해 현재 문장을 변경하면 변경된 문장에 대한 새로운 형태소 분석이 필요하다 본 논문에. 서는 형태소 분석을 하기 위해 대용량의 세종 형태분석 말뭉치를 기분석 사전으 로 사용하여 형태소를 분석하는 방법을 사용하였다.

문장을 재분석하는 방법은 수정한 문장의 어절이 기존 문장에 포함되어 있는 어절일 경우 해당 어절의 분석된 정보를 최대한 사용하고 수정한 문장의 어절이 기존 문장에 포함되지 않을 경우 해당 어절을 새롭게 분석하는 방법을 사용한다.

기존 문장과 수정된 문장을 어절 단위로 분리하여 배열에 삽입하고 수정 문장

(37)

문장에 포함될 경우 시스템 자료구조에 해당 어절에 대한 분석정보가 있으므로 그대로 사용하고, <그림 4.9>의 ⓒ와 같이 기존문장에 포함되지 않을 경우 데이 터베이스의 Word 테이블에서 동일한 어절이 있는지 검색한다 어절이. Word 테 이블에 있으면 해당 어절의 형태소 정보를 Morph 테이블로부터 읽어서 재분석 을 한다. Word 테이블에 어절의 정보가 없을 경우 앞에서 언급한 <그림 3.9>의 재분석 알고리즘을 통하여 품사를 결정한다 예로 제품은 이라는 어절의 정보가. " "

테이블에 없을 경우 어절의 음절을 하나씩 줄여나가면서 테이블에

Word Morph

서 검색하여 있을 때 까지 검색하고 Morph 테이블에 분석 정보가 있다면 해당 형태소의 분석 정보를 사용한다 만약 제품 에 대한 정보가 있다면 은 에 대한. " " " "

정보를 Morph 테이블에서 검색하여 같은 방법으로 형태소 분석 정보를 가져온 다. 결과적으로 제품은 에 대한 정보를" " Morph 테이블에서도 찾지 못한다면 임 의의 "NNP"(고유명사) 품사로 분석한다.

그림 기존문장과 수정된 문장과 비교

< 4.9>

(38)

4.5. 오류 수정 창

그림 의 오류 수정 창은 오류를 수정하기 위해 구현한 인터페이스이다

< 4.10> .

그림 오류 수정 창

< 4.10>

띄어쓰기 오류를 제외한 모든 오류를 이 인터페이스에서 수정가능 하며 불규, 칙 활용에 대한 오류 패턴일 경우 오류 수정 창의 불규칙 활용 버튼을" " 클릭하 여 데이터베이스의 모든 동일 패턴에이 오류 후보로 추천되지 않도록 한다.

그림 의 오류 후보 테이블은 데이터베이스에서 동일한 오류 패턴을 가지

< 4.11>

고 있는 모든 후보를 보여준다 오류 후보 테이블에서 한. row를 클릭하면 <그림 과 같이 해당 어절이 문장에서 어떻게 쓰여졌는지 알 수 있고 그림

4.12> < 4.13>

와 같이 어절이 어떻게 분석되어 있는지 알 수 있다.

(39)

그림 오류 후보 테이블

< 4.11>

그림 문장 표시 창

< 4.12>

그림 형태소 분석 표시 창

< 4.13>

그림 는 사용자가 직접 형태소의 정보를 수정하는 부분으로써 어절에

< 4.13>

대한 형태소 분석의 수정 전 과 수정 후 에 대한 정보를 보여준다" " " " . "수정 전 에"

해당하는 형태소 분석 정보 테이블은 사용자가 임의로 수정할 수 없으며 오직 "

(40)

수정 후 테이블만 접근하여 편집할 수 있다" . 수정 후 테이블에서 형태소를 삭" "

제하거나 삽입하는 기능과 어절을 편집 재분석할 수 있고, , "오류 수정 버튼을"

클릭함으로써 수정된 정보를 저장할 수 있다.

그림 오류 수정 패턴 표시 창

< 4.14>

그림 은 그림 에서 정보를 수정하였을 때 그림 의 수정

< 4.14> < 4.13> < 4.13> "

전 테이블과 수정 후 테이블을 비교하여 기존의 정보를 어떠한 형태의 패턴으" " "

로 수정하였는지에 대한 정보를 보여주는 창이다 오류 수정 패턴 창은 오류를. 하나씩 수정한 후 동일한 패턴이 없을 경우 추가되며 수정 패턴을 선택하면 오류 후보 테이블에서 해당 수정 패턴으로 수정 가능한 어절을 <그림 4.15>과 같이 동일 패턴 오류 창에 보여 준다.

(41)

사용자는 동일 패턴 오류 표시 창을 확인하고 <그림 4.10>에서 패턴 전체 수정"

버튼을 클릭하면 동일한 방법으로 동일 패턴 오류 테이블의 모든 목록의 어절을

"

수정 가능하다.

4.6. 말뭉치 재배포

말뭉치 재배포는 데이터베이스에 저장되어 있는 <그림 4.15>의 Word 테이블 과 <그림 4.16>의 Morph 테이블의 정보를 이용하여 기존의 말뭉치 형태로 복원 하는 작업이다.

그림 테이블

< 4.16> Word

그림 테이블

< 4.17> Morph

세종 형태분석 말뭉치는 <그림 4.18>과 같은 포맷으로 구성되어 있다 각 라인. 은 어절코드 파일이름과 어절고유번호 와 어절 그리고 형태소 분석 결과로 구성( ) 되어 있다 또한 문장과 문장을 구분하기 위하여 그 사이에 특별 태그. 5)로 표시되 어 있다.

5) 문장의 시작은<P>, 문장의 끝은 </P>로 표시

(42)

그림 세종 형태분석 말뭉치 포맷

< 4.18>

그림 은 말뭉치 재배포 이다 파일 목록에서 현재 데이터베이스에 저

< 4.19> UI .

장되어 있는 파일을 사용자가 원하는 파일을 선택하여 말뭉치 텍스트 파일 형태 로 출력할 수 있다.

그림 말뭉치 재배포

< 4.19> UI

(43)

제 5 장 실험 및 평가

본 장에서는 오류 수정 도구의 성능에 대하여 실험 및 평가를 하였다 실험은. 총 두 가지 방법을 사용하였다 첫 번째 실험은 오류 수정 도구를 사용하였을 경. 우와 말뭉치 텍스트 파일에서 오류를 검사하는 속도를 측정하였다 두 번째 실험. 은 오류 수정 도구를 사용하여 10개의 말뭉치 텍스트 파일의 문장을 수정하는데 걸리는 시간을 측정하여 파일 수정에 따른 속도 변화를 측정하였다.

첫 번째 실험에서 검사 방법은 실제 말뭉치 텍스트 파일에서는 직접 오류를 찾 는 것이 매우 어렵고 시간이 오래 걸리므로 100 문장에 대하여 검사하는 시간을 측정하였고 100 문장은 말뭉치 텍스트 파일에서 약 2000줄 정도의 분량을 의미 하며 3명의 실험자를 대상으로 측정하였다.

실험자 말뭉치 텍스트 파일 검사 오류 수정 도구 사용 검사

A 35 min 3 min 33 sec

B 45 min 5 min 08 sec

C 32 min 4 min 21 sec

평균 소요 시간 37 min 4 min 20 sec 표 오류 수정 도구의 사용 유무에 따른 검사 속도 측정 결과

< 5.1>

표 을 보는바와 같이 말뭉치 파일을 직접 검사하는 경우 평균 약 분

< 5.1> 37

정도 소요되었으며 오류 수정 도구를 이용한 평균 검사 시간은 약 4분 정도 소요 되었음을 알 수 있다 이 결과를 통해 오류 수정 도구를 사용하는 것이. 9배 정도 빠르게 검사할 수 있었으며 말뭉치 텍스트 파일을 직접 검사할 경우 오류를 찾지 못하는 경우도 발생하였다.

(44)

순번 말뭉치 파일 이름 걸린 시간 1 BTBF0269 24 min 2 BTHO0365 18 min 3 BTAA0015 16 min 4 BTJO0444 18 min 5 BTHO0366 15 min 6 BTBE0238 14 min 7 BTHO0442 17 min 8 BTBE0242 14 min 9 BTEO0327 15 min 10 BTAE0204 15 min 총 걸린 시간 168 min 표 파일 수정에 따른 속도 변화 측정

< 5.2>

두 번째 실험은 약 400 문장으로 이루어진 말뭉치 텍스트 파일 10개에 해당하는 말뭉치를 수정하는데 걸리는 시간을 측정하고 이를 관찰해 보았다. <표 5.2>는 두 번째 실험 결과이다 총 걸린 시간은. 2시간 48분이 걸렸으며 약 4000 문장을 보고 수정하였다. <그림 5.1>을 보면 파일을 수정할 때 마다 시간이 줄어드는 것 을 확인할 수 있었다 맨 처음 파일을 수정할 때 발생하였던 패턴에 대하여 이미. 오류를 수정하였기 때문에 다음 파일을 수정할수록 오류를 수정하는 횟수가 줄어 들며 그만큼 시간도 단축됨을 알 수 있다.

(45)

제 6 장 결론 및 향후 연구과제

본 논문의 목적은 빠르고 쉽게 작은 비용을 들여서 세종 형태분석 말뭉치를 효, 과적이고 일관성 있게 수정하는 방법을 제시하는 것이다 세종 형태분석 말뭉치. 에서 발생하는 철자 오류 및 품사 부착 오류 등을 빠르고 일관성 있게 수정하기 위한 오류 수정 도구를 구현하였다 이러한 오류 수정 도구를 구현하기 이전에. 텍스트로 구축된 세종 형태분석 말뭉치를 데이터베이스로 재구축하였으며 재구, 축한 데이터베이스를 서버에 두고 클라이언트 형태로 오류 수정 도구를 사용하여 다수의 사용자들이 데이터베이스에 접근하여 파일을 수정할 수 있도록 하였다.

본 논문에서는 오류를 수정하기 위하여 일반 수정 방법 삭제 수정 방법 삽입, , 수정 방법을 제시하였고 여러 오류 유형들을 수정할 수 있음을 확인하였다 오류. 수정 도구를 사용하는 것이 말뭉치 텍스트 파일을 직접 수정하는 것보다 약 9배 가량 빠르게 오류를 검사하고 수정할 수 있었다 그리고 사용자가 오류 수정작업. 을 진행할수록 수정 속도가 빨라짐을 실험을 통해 확인하였다.

오류 수정 도구를 통하여 오류를 수정하는 작업이 더 쉽고 빨라졌으나 여전히 오류가 존재할 수 있다 그 이유는 사용자가 결과적으로 직접 확인하고 수정하는. 과정을 거치기 때문에 사용자의 실수로 인하여 다른 오류를 발생 시킬 수도 있고 아직 확인하지 못한 오류 유형이 여전이 존재할 수 있기 때문이다 이를 해결하. 기위해 더 많은 오류 분석이 필요하고 사용자의 실수로 인한 오류를 방지할 수 있도록 프로그램을 개선해야 한다.

(46)

참고문헌

Brants, Thorsten (2000), "TnT – A statistical part-of-speech tagger", Proceedings of the Sixth Applied Natural Language Processing Conference (ANLP 2000). Seattle, WA, pp. 224 231.–

Eskin, Eleazar (2000), "Automatic corpus correction with anomaly detection", Proceedings of the First Conference of the North Am eri can Chapter of the As soci at ion for Comput at iona l Linguistics (NAACL-00). Seattle, Washington, pp. 148 153.–

Indurkhya, Nitin and Fred J, Damerau. (2010), Handbook of Natural Language Processing, Chapman and Hall/CRC.

Ma, Qing, Bao-Liang Lu, Masaki Murata, Michnori Ichikawa and Hitoshi Isahara (2001), "On-line error detection of annotated corpus using modular neural networks", Proceedings of the International C o n f e r e n c e o n A r t i f i c i a l N e u r a l N e t w o r k s (ICANN2001). Vienna, Austria, pp. 1185 1192.–

Nakagawa, Tetsuji and Yuji Matsumoto (2002), "Detecting errors in corpora using support vector machines", Proceedings of the 17th International Conference on Computational Lingusitics (COLING 2002). Taipei, Taiwan, pp. 709 715.–

Schmid, Helmut (1997), "Probabilistic part-of-speech tagging using decision trees", Proceedings of D.H. Jones and H.L. Somers (eds.), New Methods in Language Processing, London: UCL Press, pp. 154 164.–

(47)

Ule, Tylman and Kiril Simov (2004), "Unexpected productions may well be errors", Proceedings of Fourth International Conference on Language Resources and Evaluation (LREC 2004). Lisbon, Portugal, pp. 1795 1798.–

강승식 (1998), "한글 문장의 자동 띄어쓰기", 제10회 한글 및 한국어 정보 처리 학술대회 발표 논문집, pp. 137-142.

강승식 (2000), "한글 문장의 자동 띄어쓰기를 위한 어절 블록 양방향 알고 리즘", 정보과학회논문지 : 소프트웨어 및 응용 제, 27권 제 호, 4 , pp.

441-447.

김계성 이현주 이상조, , (1998), "연속 음절 문장에 대한 3단계 한국어 띄어 쓰기 시스템", 정보과학회논문지(B), 제25 ,권 제12 , 1998.12,회 pp. 1838-1844.

김흥규 (2007), 21세기 세종계획 국어기초자료 구축 국립국어원 연구보고서, .

심광섭 (1996), "음절간 상호 정보를 이용한 한국어 자동 띄어쓰기", 정보과 학회논문지 제23권 제 호, 9 , pp. 991-1000.

심광섭 (2010), "CRF를 이용한 한국어 자동 띄어쓰기", 인지과학 제, 22권 제2 호, pp. 217-233.

심광섭 양재형, (2004), "인접 조건 검사에 의한 초고속 한국어 형태소 분석", 정보과학회논문지 : 소프트웨어 및 응용 제, 31권 제 호1 , pp. 89-99.

신준철 옥철영, (2012), "기분석 부분 어절 사전을 활용한 한국어 형태소 분석 기", 정보과학회논문지 소프트웨어 및 응용 제, , 39권 제 호5 , pp.

415-424.

(48)

양승현 김영섬, (2000), "부분 어절의 기분석에 기반한 고속 한국어 형태소 분 석 방법", 정보과학회논문지 소프트웨어 및 응용 제, 27권 제 호3 , pp.

290-301.

이도길 이상주 임희석 임해창, , , (2003), "한글 문장의 자동 띄어쓰기를 위한 두 가지 통계적 모델", 정보과학회논문지 : 소프트웨어 및 응용 제, 30 ,권 제 호4 , pp. 358-371.

이미경 정한민 성원경 박동인, , , (2005), "품사 표지 부착 말뭉치 검증", 제17회 한글 및 한국어 정보처리 학술대회 발표논문집, pp. 145-150.

이호준 박종철, (2002), "음절단위 결합범주문법을 이용한 한국어 문장의 자동 띄어쓰기 제" 14회 한글 및 한국어 정보처리 학술대회 발표논문집, pp.

47-54.

정승원 김태완 황도삼 박동인, , , (1990), "영한기계번역시스템(MASES / EK) 에 있어서 통합관리 시스템에 관한 연구", 대한전자공학회 특정연구 결과 발표회 논문집, pp. 10-13.

최성자 강미영 허희근 권혁철, , , (2003), "음절 n-gram과 어절 통계 정보를 이용한 한국어 띄어쓰기 시스템", 2003년도 제 15회 한글 및 한국어 정보처리 학술대회 발표논문집, pp. 47-53.

최성자 강미영 권혁철, (2004), "통계 정보를 이용한 한국어 자동 띄어쓰기 시 스템의 성능 개선", 한국정보과학회 2004년도 봄 학술발표논문집, pp.

883-885.

태윤식 박성배 이상조 박세영, , , (2006), "자기 조직화 n-gram모델을 이용한 자

(49)

부 록

대분류 소분류 세분류

체언 (1)

명사NN

일반명사NNG 고유명사NNP 의존명사NNB

대명사NP 대명사NP

수사NR 수사NR

용언 (2)

동사VV 동사VV

형용사VA 형용사VA

보조용언VX 보조용언VX

지정사VC 긍정지정사VCP

부정지정사VCN

수식언 (3)

관형사MM 관형사MM

부사MA 일반부사MAG

접속부사MAJ 독립언

(4) 감탄사IC 감탄사IC

관계언 (5)

격조사JK

주격조사JKS 보격조사JKC 관형격조사JKG 목적격조사JKO 부사격조사JKB 호격조사JKV 인용격조사JKQ

보조사JX 보조사JX

접속조사JC 접속조사JC

의존형태 (6)

어미E

선어말어미EP 종결어미EF 연결어미EC 명사형전성어미ETN 관형형전성어미ETM

접두사XP 체언접두사XPN

접미사 XS

명사파생접미사XSN 동사파생접미사XSV 형용사파생접미사XSA

어근XR 어근XR

부록 세종 형태분석 말뭉치 테그셋

< 1>

(50)

기호 (7)

마침표 물음표 느낌표, , SF 쉼표 가운뎃점 콜론 빗금, , , SP 따옴표 괄호표 줄표, , SS

줄임표 SE

붙임표 물결 숨김 빠짐( , , ) SO

외국어 SL

한자 SH

기타 기호 논리 수학기호( ,

화폐 기호) ) SW

명사추정범주 NF

용언추정범주 NV

숫자 SN

분석불능범주 NA

부록 세종 형태분석 말뭉치 테그셋 계속

< 1> ( )

참조

관련 문서

수정 완료 후

본 연구에서는 한국어 보조사 ‘도, 까지, 조차, 마저’의 의미․통사적 특징을 살피고, 한국어 학습자들의 사용 오류 양상 및 한국어 교재 분석을 토대로 이들

프린팅은 모델링 과정에서 제작된 3D 도면을 이용하여 물체를 만 드는 단계로, 적층형 또는 절삭형 등으로 작업을 진행하는 것이다.. 이때

성현(成俔)의 수필집 『용재총화(慵齋叢話)』에는 세종 때의 어기(御器)는 백자만을 전용한다.”고 기록하고 있으며, 앞에서 살펴보 았듯이 세종 시기에 명나라

본 연구는 초등 3-4학년 일반아동, 읽기장애위험군아동, 그리고 언어장애위험군아동 을 대상으로 읽기유창성과제를 실시하여 집단에 따른 읽기유창성 특성과

본 절에서는 인식률 측정방법에 대해 설명하고 앞서 취득한 얼굴 데이터베이스 를 이용하여 제안된 다선형 주성분 분석 방법의 실험 방법과 비교 대상인 주성분

적으로 작업별 지식, 기능, 도구를 종합하기 위하여 작업/ 지식・기 능・도구 행렬표를 추가로 삽입해서 절차를 보완하였으며, 셋째, 문헌 분석과 전문가

1) 계약 상대자는 발주기관의 승인을 받아 작성한 도서라 할지라도, 계약상대자의 잘못으로 발생된 과오나 오류 등 과업수행상 모든 하자에 대하여 계약상대자의