형태 분석
형태 분석(形態分析)은 단어를 보고 형태소 단위로 분리해내는 과정을 말한다. 수작업으로 하기도 했으나 컴퓨터의 발달로 점차 자동화되어 정확도가 높아지고 있다. 형태 분석은 자연어 처리의 가장 기초적인 절차로 이후 구문 분석이나 의미 분석으로 나아가기 위해 먼저 이루어져야 하는 과정으로 볼 수 있다.
형태 분석을 할 때에는 어떤 언어나 중의성의 문제가 발생한다. 중국어는 띄어쓰기와 그에 따른 중의성 해소라는 문제를 가지고 있고, 영어에서도 특정 어휘를 어떤 품사로 놓을 것인가에 따라 문장의 의미가 바뀔 수 있다. 하지만 이러한 문제는 한국어나 일본어 같은 교착어에서 특히 복잡한 양상을 드러낸다. 조사와 어미가 결합되는 경우의 수가 천 개 이상 될 수 있기 때문이다. 그러다보니 하나의 어절이 서너가지로 분석되는 경우도 많고 그 과정에서 오분석되는 경우도 많다.
한국어에서 형태 분석이 어려운 것은 몇 가지 이유가 있다.
한국어 형태 분석의 중의성의 유형은 아래와 같다.
어근 유형 중의성에서는 '-적'으로 끝나는 명사-관형사 중의성이 많은데 이 경우는 '-적' 뒤에 조사가 붙느냐 안붙느냐에 따라 명사냐 관형사냐 구분할 수 있다. 체언-용언 중의성은 쉽게 해결하기 어려워 좌우 문맥 정보를 이용하는 것이 최선으로 보인다. 형태소 길이 중의성에서는 길이가 길고 빈도수가 높은 쪽에 가중치를 둔다. 미등록어는 대부분 체언으로 두면 괜찮다.
한국어의 교착어적인 특성들 때문에 한국어 형태 분석은 주로 규칙에 기반하되 사전정보를 상세하게 기술하는 방식으로 이루어졌다. 이 외에도 기계학습을 통해 확률 정보를 쌓아 활용하는 방법이 중의성 해소의 한 장치로 활용되고 있다.
한국어 어절은 대략 아래와 같은 구성을 가진다.
하지만 이것은 매우 단순화한 구성이고 개별 어미나 조사가 결합할 때는 그 어미나 조사가 사용될 수 있는 고유한 환경이 존재한다.
형태소분석 절차에서 먼저 이루어져야 하는 것은 문법 형태소의 분리과정이다. 문법형태소를 어디에서 자를 것인가도 문제가 되는데 이 역시 1음절 조사, 2음절 조사 등의 빈도정보를 통해 우선순위를 결정할 수 있다. 잘라내어 먼저 문법 형태소 사전을 거쳐 후보를 얻어낸다. 이후 음절정보와 비교를 통해 후보를 제약할 수 있다.
어미나 조사가 용언과 결합될 수 있는 경우의 수는 그 제약을 고려하지 않을 때 2000여 가지다. 하지만 이중 상당수가 현실적으로 사용되지 않는 후보들이며 그 후보들의 개수를 줄이기 위해 여러가지 방법론이 제안되었다. 그 중 가장 유용한 것은 한글 음절특성을 고려하는 것이다. 예를 들어 조사의 첫 음절로 사용되는 것은 48개인데 이중 저빈도 음절과 고빈도 음절에 대한 정보를 가지고 있는 것이다. 마찬가지로 용언의 마지막 음절로 사용된 것은 300여 개라는 정보도 만들 수 있고 이러한 제약에서 벗어나는 것들은 형태 분석 후보에서 제외할 수 있다.
형태론적 변형을 복원하는 단계에서는 불규칙 용언과, 탈락, 축약 등의 현상이 있었는지 체크하여 원형을 복원한다.
사전탐색-접사분리 단계에서는 문법형태소를 제외한 나머지를 사전과 음절정보를 이용해 찾아나간다. 어휘 형태소 사전에 있는 것들인 경우라면 금방 찾아지지만 복합어의 경우 여러 번 반복해야 한다. 빈도수가 높은 복합어라면 기분석 사전에 넣어둘 수도 있고 또 필요에 의해 분석자가 직접 작성한 사용자 정의사전을 이용해도 좋다.
이 과정에서 미등록어가 다수 발생하며 이러한 미등록어는 은닉 마르코프 모델(hidden Markov model) 등을 이용해 통계적으로 처리 하기도 하지만 사용자가 직접 관찰하여 다양한 사전에 추가 정보를 삽입하는 것이 중요하다.
일반화 할 수는 없지만 후보 수를 줄이기 위한 경향성을 적어보자면 아래와 같다.
미등록어의 오분석 사례도 많이 있다. '벨기에는'이 '벨기'+'-에는'으로 분석되거나 '문서내의'가 '문서'+'내의'로 분석되는 사례가 그것이다. 이런 경우는 열심히 발견해서 사용자 사전이나 기분석 사전에 추가하는 것이 좋다.
문장 단위로도 규칙을 찾아볼 수 있다. 문장의 첫 어절은 용언이 아니고 마지막 어절은 용언, ~이다, 명사구이다. 관형사 다음에는 체언이 오고 부사 다음에는 수식언 혹은 용언이 온다. 인접한 두 어절에 모두 어미가 있으면 그 둘은 용언과 보조 용언 관계이다.
형태 분석의 정확도를 높이려면 어휘 단위의 사전으로는 부족하다. 기존 어학사전에서는 다루지 않던 다어절 단위까지도 사전정보로 담아야 한다. 관용구 혹은 빈도수 높은 연어표현도 상당수 넣어야 할 뿐만 아니라 '~에 대해서', '~에 관하여' 등과 같은 문법적 연어까지도 조사사전에 담을 필요가 있다. 이것은 형태소 분석을 할 때 명사가 아닌 체언으로 동사가 아닌 용언으로 처리하는 것과 유사한 것이다. 품사 정보보다는 문장 성분 쪽이 유용하다. 그리고 이런 문법적인 정보를 담으면서 앞뒤의 제약이 오기도 하는데 그런 정보까지 형태소 분석 사전에 넣어두면 정확도나 속도가 매우 빨라진다.
형태 분석은 기본적으로 구문 분석의 전 단계로 간주되어왔으나 웹 검색 수요가 폭발하면서 형태 분석의 필요성도 급격하게 높아졌다. 구문 분석의 전 단계로서의 형태 분석이라면 다뤄야 할 문서량이 적으므로 속도보다는 정확성이 중요했다. 그러나 웹 검색의 전 단계로서의 역할이 필요해지면서 정확도보다는 속도가 더욱 중요해졌다. 그리고 웹문서의 갱신 주기가 빨라지면서 자주 색인을 하게 되었는데 색인 과정에서 매번 형태 분석을 새로 해야 했기 때문에 초고속 형태 분석기의 개발은 필수가 되었다.
속도 향상의 노력은 사전 탐색 횟수를 줄이는 방향, 사전 구조를 발전시키는 방향, 고빈도 어휘에 대한 기분석 사전을 효과적으로 만드는 방향 등으로 이루어지고 있는데 이중 속도의 향상을 비약적으로 높인 것은 음절-음소변환과정을 없애고 음절 단위에서 끝내되 사전 의존도를 높이는 방향으로 진행한 것이다.
기존의 사전정보는 '돌보/동사' + 'ㄴ다/어미'와 같은 식이어서 먼저 경계 찾는 것부터 어려울 뿐 아니라 그 과정에서 음소 연산을 했어야 했다. 그러나 '돌본 : 돌보/동사 + ㄴ' + '다 : ㄴ다/어미' 이런 식으로 구축되어 있으면 음절경계에서 사전 검색을 끝내고 곧바로 분석 결과를 가져올 수 있어 속도가 빨라진다. 그리고 이 방식은 사전정보에 다양한 제약조건들을 넣을 수 있어 불필요한 후보군을 생성하지 않고도 형태 분석이 가능하다. 제약조건에는 음운 제약조건, 형태 제약조건, 품사 제약조건 등이 있는데 이 모든 정보를 사전정보에 담을 수 있다. 그럼 이러한 제약조건을 통과한 것들만 서로 비교하면 되므로 중의성이 많이 줄어들 수 있다.
단 이 방식은 기존 방식에 비해 사전 의존도를 매우 높인 경우이기 때문에 사전의 복잡도도 증가할 뿐 아니라 사전의 양 자체가 늘어나서 한번에 메모리에 많이 올리거나 아니면 사전을 초고빈도와 고빈도, 저빈도로 잘 구분하여 효과적으로 처리할 수 있게 시스템을 구성해야 한다.
한국어 형태분석은 지속적으로 발전했지만 아직 넘어야 할 산들이 상당수 존재한다. 가장 큰 것은 웹에서의 언어파괴 현상으로 수많은 축약형과 의미조차 명시적으로 파악되지 않는 여러 명사/동사들의 존재 그 자체이다. 어떤 경우인지 알 수 조차 없는 상태에서 통용되는 무의미한 말들도 상당히 존재하며 심지어 '~삼'처럼 이것이 의문형인지, 청유형인지 구분하기도 어려운 어미까지 생겨난 형편이다. 이것은 복수 표준이 허용될 뿐만 아니라 의존명사나 복합명사 등에서 일관성없이 사용되는 띄어쓰기 문제의 더욱 심화된 형태로도 볼 수 있다.
또 여전히 중의성 문제는 난제로 남아있다. 아무리 사전으로 해결한다 하더라도 해결할 수 없는 중의성 문제가 존재할 뿐 아니라 수많은 이형태를 어떻게 처리할 것인가 또한 난제이다. 예를 들어 '가난 구제는 나라[나라님/임금]도 못한다[어렵다]'는 속담의 경우 사전 표제어 상에서도 6가지의 이형태가 가능하다. 게다가 문장 형식이므로 활용이 가능한데 그렇게 되면 경우의 수는 훨씬 늘어날 수밖에 없다. 이런 것들을 어떻게 하나의 단위로 잘 묶어서 형태 분석을 해줄 것인가는 간단하지 않은 문제이다.