단어의 의미
이번 장에서는 자연어 처리 분야에서 가장 기초이자 근간이 되면서도 가장 어려운 문제인 단어의 의미word sense와 의미의 유사성, 모호성에 대해 다루어보겠습니다. 단어는 겉으로 보이는 형태 내에 의미를 갖습니다. 하나의 형태에 여러 의미가 있기도 하고, 다른 형태의 단어들이 서로 같은 의미를 공유하기도 합니다. 게다가 사람의 언어는 마치 생명체처럼 효율성을 추구하도록 진화해왔기 때문에 모호성이 굉장히 두드러집니다. 이처럼 언어의 가장 기본을 이루는 단어의 모호성 문제는 컴퓨터가 인간의 언어를 이해하고 처리할 때 매우 큰 과제로 작용합니다. 장 후반부의 '단어 중의성 해소'로 본격적으로 나아가기에 앞서, 자연어 처리에서 단어와 의미의 관계부터 살펴보고 넘어가겠습니다.

단어와 의미의 관계

단어는 겉으로 보이는 형태인 표제어lemma 안에 여러 의미를 담고 있습니다. 실제로 우리가 단어를 소리 내어 말하거나 글자로 적을 때는 겉으로 보이는 하나의 형태를 사용하지만, 상황에 따라 각각 다른 의미로 쓰입니다. 이때 대부분의 사람은 주변 정보context에 따라서 그 숨겨진 의미를 파악하고 이해합니다. 하지만 주변 정보가 부족하여 모호성이 증가하거나, (자신의 과거 기억 등으로 인하여) 주변 정보를 다르게 해석할 경우에는, 사람이라 해도 본래의 의미를 잘못 이해하기도 합니다.
다음은 국립국어원에서 '차'라는 단어를 검색한 결과입니다.
연관 의미
세부 의미
풀이
차#1
차1-1
좋은 향기나 맛이 있는 식물의 잎이나 뿌리, 열매 등을 달이거나 우려서 만든 마실 것.
차#2
차2-1
바퀴가 달려 있어 사람이나 짐을 실어 나르는 기관.
차2-2
사람이나 물건을 차에 실어 그 분량을 세는 단위.
차2-3
장기의 말 중에서 ‘車’ 자를 새긴 말.
차#3
차3-1
둘 이상을 비교했을 때 서로 다르게 나타나는 수준이나 정도.
차3-2
어떤 수나 식에서 다른 수나 식을 뺀 나머지.
차#4
차4-1
어떤 일의 차례나 횟수를 나타내는 말.
차4-2
어떠한 일을 하던 기회나 순간.
차4-3
일정한 주기나 기간이 지난 해당 시기를 나타내는 말.
'차' 자체도 크게 4가지 의미로 나뉘며, 해당 의미들은 다시 세부적으로 다른 의미를 가집니다. 이해를 돕기 위해 그림으로 나타내면 다음과 같습니다.
단어의 형태들과 내부 의미들이 갖는 관계
이처럼 단어는 그 형태는 공유하더라도 서로 다른 뜻을 가진 의미로 구성될 수 있습니다. 경우에 따라 서로 비슷한 의미로 쓰일 수도, 전혀 다른 의미로 쓰일 수도 있습니다. 또한 어떤 의미 는 다른 형태의 단어에서도 사용될 수 있습니다. 사람은 머릿속으로는 대부분 파란선 안쪽의 '의미'를 받아들이지만, 실제로 사용할 때는 파란선 바깥쪽의 '단어'를 매개체로 활용해 그 의미를 전달합니다.
이처럼 한 가지 형태의 단어에 여러 의미가 포함되어 생기는 '중의성' 문제는 자연어 처리에서 매우 중요한 위치를 차지합니다. 특히, 이후에 다룰 기계번역에서는 단어의 의미에 따라서 해당 번역 단어의 형태가 완전히 바뀌기 때문에 매우 중요합니다. 결국 인공지능이란 사람을 돕거나 사람처럼 동작해야 하므로, 바깥의 '단어'라는 형태의 매개체를 이해하고 안쪽의 '의미'로 (명시적이든 명시적이지 않든) 변환하여 사용해야 할 것입니다.

동형어와 다의어

앞에서 다루었듯이 형태는 같으나 뜻이 서로 다른 단어를 동형어homonym라고 부릅니다. 앞으로 다룰 다의어polysemy가 동형어와 다른 점은, 다의어의 경우 한 형태의 단어가 여러 의미를 지니면서도 그 의미들이 서로 관련이 있는 뜻을 갖는다는 점입니다. 그와 달리, 동형어는 아예 어원이 다른 의미들이 같은 형태를 띠는 단어입니다.
종류
단어 형태
의미1
의미2
다의어
다리
사람 다리(leg)
책상 다리(跏, desk leg)
동형어
마시는 차(茶, tea)
달리는 차(車, car)
이렇게 한 형태 내에서 여러 의미를 지니는 동형어 또는 다의어의 경우에는 단어 중의성 해소word-sense disambiguation(WSD)라는 방법을 통해 단어의 의미를 더 명확히 하는 과정이 필요합니다. 특히, 딥러닝 이전의 전통적인 자연어 처리 방식에서는 여러 서브 모듈이 합쳐져 하나의 큰 문제를 해결하는 경우가 많았기 때문에, 서브 모듈들의 처리 과정 중에 단어 중의성 해소 모듈을 포함하여 같이 처리하기도 했습니다. 이때 단어의 중의성을 해소하고자 주변 문맥을 통해 원래 단어의 의미를 파악하는 방법을 가장 많이 사용합니다.
다행히 딥러닝의 시대에 들어서는 end-to-end 학습 방법이 선호되고, 자연어 처리 분야에서 주로 사용하는 딥러닝 모델 구조가 순환 신경망(RNN)이 되면서, 단어 중의성 해소에 대한 필요도가 낮아졌습니다. 하지만 여전히 단어의 모호한 의미로 인해 문제 해결이 어려운 경우가 많아 풀지 못한 숙제 중 하나입니다.
사용 빈도가 높은 대부분의 단어는 동형어 또는 다의어일 가능성이 높습니다. 이렇게 여러 뜻을 가진 단어로 자연어 처리를 할 때 문제가 어려워지곤 합니다. 특히 동형어의 경우에는 단어의 의미가 완전히 달라질 수 있기 때문에 문장 자체를 잘못 이해하고 처리할 가능성도 있습니다.

동의어

이번에는 의미가 같은 단어를 살펴보겠습니다. 단어는 그 의미가 다양하게 구성되는 만큼 다른 형태의 단어와 의미가 서로 겹치는 경우도 발생합니다. 이렇게 다른 형태이지만 의미가 같은 단어를 동의어synonym라고 합니다.
물론 그 의미라는 것이 '형태'처럼 온전히 딱 떨어지지는 않으므로, 완벽하게 똑같지 않을 수도 있습니다(하지만 어느 정도 비슷할 경우에 동의어라고 칭한다, 라고 하는 일종의 동의consensus 가 있을 것입니다). 그리고 이런 동의어가 여러 개 존재할 때 이들의 집합을 동의어 집합synset이라고 부릅니다. 즉, 다음과 같이 하나의 단어 형태 안에 여러 의미가 있을 것이고, 의미별 동의어 집합이 존재할 것입니다.
형태
의미
동의어 집합
home
home#1
place#7
home
home#2
dwelling#1, domicile#2, abode#2, habitation#2, ...
home
home#3
home
home#4
home plate#1, home base#1, plate#1
home
home#5
base#14
...
place
place#7
home#1
place
place#8
position#6, post#3, berth#1, office#7, spot#8, billet#3, place#8
...

상위어와 하위어

사람이 사용하는 단어는 하나의 추상적 개념을 나타냅니다. 이때 그 개념들을 포함하는 상위 개념 또는 하위 개념이 존재할 수 있습니다. 상위 개념을 가리키는 단어를 상위어hypernym라 하고, 하위 개념을 표현하는 단어를 하위어hyponym라고 합니다.
상위어
하위어
동물
포유류
포유류
코끼리
코끼리
아프리카코끼리
사물
전화기
전화기
핸드폰
사물
컴퓨터
컴퓨터
노트북
이러한 단어들의 어휘 분류taxonomy에 따라 단어 간 관계 구조를 계층화할 수 있겠지요. 계층화된 단어 간의 관계를 활용하면 자연어 처리에도 유용하게 사용할 수 있습니다. 단어 간의 유사도를 구할 수 있고, 부족한 정보를 비슷한 관계의 다른 단어로부터 얻어올 수도 있습니다.

모호성 해소

이처럼 사람이 쓰는 언어는 그 특징상 겉의 형태는 불연속적 심볼이지만, 내부적으로는 어떤 의미를 가집니다. 그리고 여러 의미는 하나의 형태를 공유하기도 합니다. 그 의미들은 매우 다르기도 하고 비슷하기도 합니다.
하지만 컴퓨터가 가진 것은 텍스트뿐이므로, 그 텍스트가 내포한 진짜 의미를 파악하는 과정이 필요합니다. 내포된 의미를 이해해야 제대로 된 자연어 처리를 진행할 수 있을 것입니다. 즉, 단어의 겉 형태인 텍스트만으로는 모호성이 매우 높습니다. 모호성을 제거함으로써 자연어 처리의 성능을 높일 수 있을 것입니다. 이렇게 단어가 가지는 모호성을 제거하는 과정을 단어 중의성 해소(WSD)라고 합니다.
Last modified 2yr ago