for textmining

형태소란 무엇인가

|

이번 포스팅에서는 언어학과 자연언어처리 분야 기본 중 하나인 형태소(形態素morpheme)에 대해 다뤄보려고 합니다. 형태소 정의와 분석방법 등에 대해 알아보겠습니다. 이번 글은 이선웅 경희대 교수, 최형용 이화여대 교수께서 쓰신 글들을 참고해 작성했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

형태소의 정의

형태소란 의미를 가지는 최소 단위로 정의됩니다. 더 쪼개면 뜻을 잃어버리는 말의 단위라고 할 수 있죠. 이때의 ‘의미’는 어휘적인 것뿐 아니라 문법적인 것도 포함한다는 사실을 염두에 두고 아래 예문을 통해 개념을 살펴보기로 하죠. 예시에서 ‘철수’를 ‘철’과 ‘수’로 쪼개면 ‘철수’라는 사람을 지칭하는 의미가 없어집니다. 마찬가지로 ‘밥’을 ‘ㅂ’과 ‘압’으로 나누면 먹는 밥(rice)의 뜻이 사라지게 되죠. 이런 점에서 ‘철수’와 ‘밥’은 형태소 후보에 오를 수 있겠습니다.

철수가 밥을 먹었다.

형태소를 분석하는 기준으로는 계열관계(系列關係paradigmatic relation)통합관계(統合關係sytagmatic relatation)이 있습니다. 계열관계는 종적인 것으로서 그 자리에 다른 형태소가 ‘대치’될 수 있는가를 따지는 것이고, 통합관계는 횡적인 것으로서 그 형태소가 다른 형태소와 ‘결합’할 수 있는가를 고려하는 것입니다. 이 가운데 형태소 분석에서 더 중요한 역할을 담당하는 것은 계열관계인데요, 계열관계만으로도 형태소 자격을 부여할 수 있습니다.

일단 먼저 계열관계를 살펴볼까요? ‘철수’ 자리에 ‘영희’와 같은 말이 대치될 수 있습니다. ‘밥’ 대신에 ‘빵’을 쓸 수 있죠. 따라서 ‘철수’와 ‘밥’은 형태소 자격을 갖습니다. 그럼 ‘가’는 어떨까요? ‘가’는 그 자체로 어휘적 의미를 가지지는 못하지만 그 말이 결합한 말을 주어가 되게 하므로 문법적 의미를 갖습니다. 또 ‘가’는 ‘는’이나 ‘도’와 계열관계를 이루므로 형태소로서의 자격을 갖습니다.

그런데 ‘가’는 조금 더 세밀히 살펴야 합니다. 그 말을 주어가 되게 하는 것이 ‘가’만 있는 것은 아니기 때문인데요. 선행하는 말이 ‘철수’가 아니라 ‘책’과 같이 받침이 있는 말이라면 ‘가’ 대신 ‘이’가 선택됩니다. 이처럼 ‘이’가 되거나 ‘가’가 되는 것은 ‘이’나 ‘가’가 서로 다른 (문법적)의미를 가지기 때문이 아니라 단지 선행하는 말이 받침을 가지고 있느냐 여부에 있으므로 ‘이’나 ‘가’는 모양은 다르지만 서로 같은 형태소라고 할 수 있습니다. 바꿔 말하면 ‘이’와 ‘가’는 같은 형태소의 다른 형태라고 할 수 있는 셈이죠. 이처럼 같은 형태소의 다른 형태들을 이형태(異形態allomorph)라고 합니다.

‘밥’을 조금 더 살펴보겠습니다. 앞서 언급했듯 ‘밥’은 형태소이지만 ‘밥만’과 같은 예에서는 ‘밤’으로 실현됩니다. ‘밥’과 ‘밤’이 이형태라는 말이지요. 하지만 이것은 표기에서는 구분되지 않습니다. 이것은 한국어의 표기체계가 이형태 가운데 대표적인 기본형(基本形basic form)을 밝혀 적은 원칙을 따르고 있기 때문입니다. 한편 ‘을’은 ‘가’와 상황이 비슷합니다. 주로 선행하는 말과 결합하여 그 말을 목적어가 되게 해주고 ‘은’이나 ‘도’와 계열관계를 이루고 있으므로 하나의 형태소입니다. 그러나 선행어가 받침을 가지느냐 여부에 따라 ‘를’을 이형태로 갖습니다.

이제 ‘먹었다’를 분석해볼까요? 우선 ‘먹-‘은 그 자체로 어휘적인 의미를 가지면서 그 자리에 ‘잡-‘과 같은 말이 대치될 수 있으므로 하나의 형태소입니다. ‘-었-‘은 ‘과거’를 나타내주는 문법적 의미를 가지고 있으면서 ‘-겠-‘과 같은 말과 계열관계를 이루고 있으므로 역시 형태소입니다. 마지막으로 ‘-다’도 문법적인 의미를 가지면서 ‘-어’와 같은 다른 어미와 대치될 수 있으므로 형태소입니다. ‘먹-‘은 ‘먹는[멍는]’과 같은 예에서도 알 수 있듯 이형태로 ‘멍’과 같은 걸 가지지만 표기로는 반영되지 않습니다. ‘-었-‘은 선행모음이 음성모음이냐 양성모음이냐에 따라 ‘-았-‘이라는 이형태를, 선행어가 ‘하-‘일 경우에는 ‘-였-‘이라는 이형태를 갖습니다. ‘-다’는 ‘-더-‘와 결합할 때는 ‘-라’를 이형태로 가집니다.

형태소 정의에 관한 다양한 이견들

형태소는 앞서 언급한 바와 같이 의미를 가지는 최소 단위입니다. 더 쪼갤 수는 있으나 그렇게 하면 스스로 의미를 가지지 못한다는 걸 뜻합니다. 이때 의미는 어휘적 의미는 물론 문법적 의미를 포함합니다.

그런데 여기서 문제가 되는 것은 한국어의 ‘오솔길’, ‘아름답다’, ‘착하다’, 영어의 ‘cranberry’ 등에서 보이는 ‘오솔-‘, ‘아름-‘, ‘착-‘, ‘cran-‘과 같은 이른바 특이형태소(unique morpheme)라 불리는 존재들입니다. 이들은 분포가 극도로 제약되어 있기 때문에 원래 쓰이던 단어에서 분리하면 그 의미를 제대로 알기 어려운 것들입니다.

그러나 이들도 형태소임은 분명합니다. ‘오솔길’, ‘아름답다’, ‘착하다’, ‘cranberry’의 의미는 ‘오솔-‘, ‘아름-‘, ‘착-‘, ‘cran-‘을 빼면 확 달라지기 때문입니다. 다시 말해 ‘오솔-‘, ‘아름-‘ 같은 어구의 의미를 제대로 알기 어렵다고 해서 의미가 없는 것은 아니라는 얘기입니다. 또한 ‘오솔-‘을 ‘오’와 ‘솔’로 나누는 것처럼 이들을 더 쪼개면 분리하기 전 있었던 의미가 사라지기 때문에 이 자체로 ‘의미를 가지는 최소의 단위’, 즉 형태소가 됩니다.

이 때문에 최근의 국어학자들은 형태소를 ‘최소의 의미 단위’라는 굴레에서 벗어나 일정한 음운론적 특징을 가진 단위(소리가 비슷한 말들)까지 확대해 분석하는 경향이 있습니다. 의미를 잘 모르겠다고 해서 형태소 분석 대상에서 빠지는 말들이 없도록 하자는 취지입니다.

이보다 더 골치 아픈 개념이 바로 공형태(소) 개념입니다. 말 그대로 ‘의미가 없는 형태소’라는 뜻이죠. 최소의 의미 단위라는 정의 자체에 반하는 것이어서, 국어학자들 사이에서도 꽤나 논란이 되고 있습니다. 장윤희(1999)에 따르면 중세 한국어에서 ‘거맃-[濟]’과 동일한 의미의 ‘거리치-‘에서 나타나는 ‘-이-‘가 공형태라 볼 수 있습니다. 즉 ‘-이-‘가 없어도 뜻 변화에 영향이 없다면 그 의미가 없는(empty) 형태소라는 말이죠. 한국어에 공형태소가 있느냐, 있다면 그 개념을 채택할 수 있느냐에 이르기까지 수많은 논의가 이뤄지고 있습니다.

영형태(소)는 공형태(소)와 반대 개념입니다. 의미는 있으나 형태는 없는 형태(소)를 가리키는 말이죠. 영접사 등 체계적인 문법 기술(desciption)을 위해 도입된 개념으로, 이 역시 인정하는 쪽과 그렇지 않은 쪽 사이에 논란이 있습니다.

어기, 어근, 어간

컴퓨터에 한국어 단어를 가르쳐줄 때 어근이나 어간 위주로 알려주는 것이 여러모로 편리할 것입니다. 한국어는 조사나 어미 등이 붙어 수많은 의미 분화가 이뤄지는 교착어(첨가어)이기 때문입니다. 그럼 단어의 뿌리에 해당하는 어기, 어근, 어간에 대해 살펴보겠습니다.

어기(語基) : 어근과 어간을 아우르는 용어

어근(語根) : 복합어의 형성에 나타나는 실질형태소. 한편으로는 규칙어근과 불규칙어근으로, 다른 한편으로는 단순어근과 복합어근으로 나뉜다.

어간(語幹) : 활용어미가 직접 붙을 수 있는 부분. 문장 형성의 요소로서 단어형성의 요소인 ‘어근’과 층위를 달리한다.

규칙어근이란 어근의 품사가 분명하고 다른 말과 자유롭게 통합될 수 있는 말을 뜻합니다. ‘집’, ‘신’, ‘드높-‘에서의 ‘높-‘ 등이 여기에 해당합니다. 불규칙어근은 품사가 명백하지 않고 다른 말과의 통합에 제약이 있는 말입니다. ‘아름-‘과 ‘따뜻-‘은 단독형으로 말할 수 없고 조사와의 통합도 제약됩니다. (*아름, *아름이, *아름을;*따뜻, *따뜻이, *따뜻을) 단순어근복합어근은 어근의 종류가 단일한가 아닌가로 나뉘는 개념입니다. ‘신선(新鮮)하다’에서의 ‘신’과 ‘선’은 단순어근이며 ‘신선’은 복합어근입니다. 어간의 예를 들어보겠습니다. ‘높다, 높고, 높으니, 높습니다…‘에서의 ‘높-‘이 바로 어간입니다. 어미가 붙어 그 의미가 분화합니다.

말뭉치 분석 결과

이상 논의한 내용을 실제 말뭉치를 가지고 이야기해 보겠습니다. 왓챠의 영화 리뷰 657만2288건을 대상으로 분석을 했는데요. 우선 서울대 김현중 박사과정이 개발한 띄어쓰기 알고리즘로 띄어쓰기 교정한 뒤 띄어쓰기 기준으로 어절을 나누었습니다. 어절 첫 두 글자가 같으면 같은 단어군(群)으로 묶었는데요, 그 결과는 아래와 같습니다.

잊었다고, 잊었던, 잊었어도, 잊었다, 잊었나, 잊었지만

원동력, 원동력이란, 원동력만으로만, 원동력으로, 원동력이, 원동력을, 원동력은

쓸쓸, 쓸쓸한, 쓸쓸했다, 쓸쓸해졌다, 쓸쓸함, 쓸쓸하다, 쓸쓸함도, 쓸쓸하지만은, 쓸쓸히, 쓸쓸해진다, 쓸쓸해져온다, 쓸쓸하지, 쓸쓸해보이는, 쓸쓸하게, 쓸쓸하여, 쓸쓸함을, 쓸쓸함이란, 쓸쓸해서, 쓸쓸하고도, 쓸쓸했고, 쓸쓸함이, 쓸쓸하며, 쓸쓸해도, 쓸쓸했지만, 쓸쓸하고

단순 띄어쓰기, 어절 첫 두 글자로 분석한 내용이기에 절대 엄밀한 결과가 될 수는 없지만 어절 첫 두 글자를 단어의 뿌리로 보고 이를 같은 집단으로 보는 방법론이 어느 정도 활용 가능성이 있을 것이라는 희망을 갖게 됐습니다.

다만 이렇게 단어를 합쳐서 보는 데도 단어 수가 6~7만개 안팎으로 많아서(현재 연구용 PC로는 5만개 이상 단어는 메모리 한계로 분석 어려움) 단어 수를 효과적으로 줄이는 방법을 좀 더 연구해보려고 합니다. 단어를 합쳐서 보는 데 따른 정보량 손실을 최소화하면서도 계산효율성을 최대한 유지하는 방안을 고민 중입니다.

마치며

이상으로 형태소의 정의와 어기, 어근, 어간 등에 대해 살펴보았습니다. 형태소 분석은 자연언어처리 분야에서도 아주 중요하게 취급되는 분야인데요, 국어학에서 이룬 성취를 최대한 반영해 모델링을 하고 싶은 게 제 소망입니다. 현재는 어절 첫 두 글자만 잘라 보는 조악한 방법론을 쓰고 있는데요, 차차 개선해보려고 합니다. 질문이나 의견 있으시면 언제든 이메일이나 댓글로 알려주시기 바랍니다. 여기까지 읽어주셔서 진심으로 감사드립니다.



Comments