단어 의미의 역사적 변천을 추적하기

Posted by 적분 ∫2tdt=t²+c
2018.11.12 16:13 그냥 공부

이번 소개할 논문은 자연언어처리 기법을 응용하여, 라틴어의 각 단어들이 가지는 의미가 시기에 따라 어떻게 변화했는지 추적한 재미난 논문입니다. David Bamman과 Gregory Crane의 Measuring Historical Word Sense Variation이라는 논문[각주:1]인데요, 이 저자분들은 페르세우스 프로젝트의 선임 연구원들입니다. 페르세우스 프로젝트는 서양의 고전 문학 텍스트들을 수집하고 전산화하여 제공하는 프로젝트라고 할 수 있는데요, 이를 통해 다량의 고전 헬라어, 라틴어 텍스트들이 수집되고 공개되었습니다. 개인적으로 고전 인문학에 전산학을 접목한 아주 적절한 프로젝트라고 생각하는데요, 여기서 공개된 텍스트 데이터를 바탕으로 제 살아있는 라틴어 사전살아있는 헬라어 사전도 만들어질 수가 있었습니다. 아주 존경하는 프로젝트이지요.

이 논문도 페르세우스 프로젝트와 같은 맥락으로 고전 텍스트에 자연언어처리 기법을 적용하고 있습니다. 요즘 디지털 인문학이라고 여기저기서 말은 많지만, 실제로 디지털 인문학이 뭔지는 잘 모르겠는데, 이 분은 확실히 디지털도 하고 계시고 인문학도 하고 계시니, 디지털 인문학 분야를 연구하고 있다고 확실히 이야기할 수 있을것 같네요. 서론은 여기까지하고, 본격적으로 논문의 방향에 대해서 살펴봅시다.



저자들은 라틴어 단어의 의미 변천을 파악하기 위해 Word Sense Disambiguation 분류기를 사용했습니다. 사실 이 논문에서 사용한 분류기가 기존 기법보다 탁월하거나 혁신적인건 아니지만, 이 분류기를 사용해 의미변천을 추적하고자했다는 아이디어는 확실히 참신한 것 같습니다. 방법론을 요약하면 다음과 같습니다.

  1. Internet Archive 등을 통해 대량의 라틴어 코퍼스를 수집 (수집된 양은 총 약 3억8천 만 단어)
  2. 라틴어-영어로 쌍을 이룬 문헌 소수(129개)를 찾아내, Word Alignment를 실시, 각 라틴어에 대응하는 영어 단어를 발견해냄
  3. 여러 갈래의 영어 단어와 대응하는 라틴어 단어들을 대상으로, WSD 분류기를 학습시킴
  4. 3번에서 학습시킨 분류기를 이용하여, 전체 코퍼스 내의 단어들의 의미를 태깅하고, 그 단어들이 속한 시기를 바탕으로, 시기별 통계 산출

이런 과정을 통해 다음과 같은 의미 변화 동향을 확인할 수 있었다고 합니다.

위 그래프는 oratio라는 라틴어 단어가 시기에 따라 어떤 의미로 쓰였는지 한 눈에 보여줍니다. oratio는 고전 시기에는 '연설, 말할 수 있는 힘'이라는 뜻으로 쓰였지만, 중세 이후 '기도'라는 의미로도 쓰이게 되었다고 고전 학자들이 정리해놓았습니다. 위의 차트 역시 그 사실을 잘 보여주네요. 500~1000년대 사이에 기도라는 의미로 쓰이는 비중이 늘어났다는 것을 확인할 수 있습니다. 

이전에는 학자들이 일일히 고전 문헌을 살펴보면서 그 용례를 파악하여, 단어의 쓰임이 어떻게 변하였는지 수작업으로 추적하여야했다면, 이제는 자연언어처리 기술을 통해 컴퓨터가 자동으로 그 통계를 내주고, 코퍼스 내에서 prayer의 의미로 쓰인 예문이나 speech로 쓰인 예문을 추출해줄 수도 있게 되었습니다. 개인적으로는 고전 인문학자들에게 큰 도움이 되지 않을까 기대해봅니다.


결과 설명은 여기까지하고 이제 각 단계에 대해서 구체적으로 살펴보도록 하겠습니다.


코퍼스 수집

Word Alignment이던, Word Sense Disambiguation이던 자연언어처리 기법이 잘 작동하기 위해서는 대량의 코퍼스가 필요합니다. 다행히도 라틴어의 경우 로마 제국이 탄생하던 시기부터 제국이 망하고 중세 유럽이 시작되었을때도 쓰였고, 근대까지도 학술어로 계속 쓰였기 때문에 그 문헌이 굉장히 많이 남아 있습니다. 또한 이 문헌들이 그냥 박물관에 박혀있는 것이 아니라,  여러 대학이나 기업들의 협업을 통해 꾸준히 전산화되어 누구나 접할 수 있게 공개되어 있습니다. Internet Archive라는 사이트가 이런 자료들을 제공하는 대표적인 곳인데요, 국내에서는 흔히 웹페이지의 옛날 모습을 보여주는 사이트로 여겨지고 있지만, 그것은 이 사이트의 한 부가기능일뿐, 진짜 매력은 방대한 양의 공개 전자 자료라고 할 수 있습니다. 언어를 라틴어로 설정하고 검색할 경우 2018년 11월 현재 약 12만건의 텍스트 자료가 확인됩니다. 저자들이 해당 연구를 할 당시에는 약 26,000 건 정도의 장서를 얻을 수 있었다고 합니다.


다 좋지만 문제가 하나 있는데, 이 자료들이 꽤나 부정확하다는 것입니다. 크게 세 가지 오류를 확인할 수가 있는데, 먼저 실제로 라틴어가 아닌데 라틴어로 분류되어 있거나 라틴어인데 라틴어가 아닌 경우로 분류된 경우가 꽤 있다는 것, 두번째로 제공되는 텍스트 데이터들이 OCR을 통해 자동으로 텍스트화 된것이기 때문에 오류가 많다는 것, 마지막으로 장서에 기입된 메타데이터가 부정확하거나 누락된 경우가 많다는 것이었습니다.


첫번째 문제의 경우 위키피디아 텍스트를 바탕으로 ngram 언어 식별기[각주:2]를 학습시켜 각 장서의 주 언어와 부 언어를 식별하도록 해서, 약 1만건의 비 라틴어 장서를 골라낼 수 있었고, 라틴어가 아니라고 분류됐지만 라틴어로 확인된 약 7천건의 장서를 추가하였다고 합니다. 두번째 문제에 대해서는 특별히 조치를 취하진 않은 것으로 보이구요, 일부 문헌들의 연도 정보가 누락된 문제의 경우 학부생 연구팀을 꾸려서 라벨링을 하는 방식으로 메타데이터를 보강했다고 합니다. (그리고 그때 개선된 메타데이터를 깃헙에 공개하여 누구나 사용하고 수정할 수 있도록 하였네요.)


단어 정렬

단어 정렬(Word Alignment)이란 같은 의미를 가지는 두 언어의 문장 쌍이 주어졌을때, 각 문장에서 서로 대응하는 단어를 찾는 문제입니다. 아래 그림을 보시면 바로 이해하실 수 있을 거에요. 이는 기계번역의 핵심 기법 중 하나인데, 여러 통계적 모델을 바탕으로 충분히 큰 양의 병렬 코퍼스(같은 의미를 지닌 텍스트를 두 언어로 써 놓은 코퍼스)를 학습시키는 방식으로 진행됩니다. 대표적인 모델로 IBM 모델이 있고, 이를 구현하는 오픈소스 소프트웨어로 GIZA++가 있습니다. 이에 대한 설명은 본 논문의 주제를 넘어가니 생략하도록 하겠습니다.

이 역시 단순히 단어 정렬 소프트웨어를 사용할 수 있었다면 간단하고 쉬웠겠지만, 129건의 라틴어-영어 문헌이 완벽하게 대칭적이지 않다는 문제가 있어서 그럴수가 없었다고 합니다. 번역쌍이 대칭적이라는 의미는 A언어의 속하는 문장들 전체가 B언어의 속하는 문장들의 전체와 같다는 것입니다. 즉 A언어에 있는 문장들을 완벽하게 B로 번역해놓은 경우가 대칭적인 것이죠. 반면 A언어에서 중요 부분만 일부 B로 번역해놓았다던가, 거꾸로 B언어에 있는 문장 중 일부만 A언어로 번역해놓았다던가, 혹은 A에도 일부 빠져있고, B에도 일부 빠져있는 비대칭적인 경우가 전체의 60% 이상이었다고 합니다.

이렇게 비대칭적인 경우라도 양쪽 언어에서 공통으로 등장하는 부분은 같은 순서로 등장했기 때문에, 이 문헌의 구조(순서 정보)를 이용하여 번역쌍을 구축하고, 단어 정렬을 실시할 수 있었다고 하네요. 그리고 단어 정렬을 실시할 때 라틴어 텍스트를 그대로 넣을 경우 변화무쌍한 라틴어 단어 특성상 제대로된 학습이 진행이 되기 어렵기 때문에 Perseus 프로젝트의 Latin lemmatizer를 이용하여 원형으로 복원하는 전처리를 사전에 실시해두었다고 논문에서는 밝히고 있습니다.


단어 의미 중의성 해소 분류기 학습

단어 의미 중의성을 해소하기 위한 분류기에 대해서는 이미 널리 연구가 되었습니다. (이에 관해서는 예전 포스팅을 확인해보시길 바랍니다.) 본 연구에서는 5-gram LM, 6-gram LM, Bayes, Token Unigram LM, Token Bigram LM, TF/IDF, kNN 분류기를 실험해 보고 이 중 가장 높은 성능을 보이는 분류기를 선택하기로 했습니다.

10-fold cross validation을 실시한 결과 5-gram LM이 가장 높은 성능(69%)을 보이긴했는데, 베이스라인인 가장 흔한 갈래뜻만 고르는 분류기의 성능(66%)보다 살짝 높은 정도에 그쳤다고 합니다. 또한 수작업으로 gold standard를 구성하여 평가를 실시한 결과 베이스라인이 가장 높은 성능을 보이는 것으로 확인되었다고 합니다. 즉, 다시 말해 분류기를 통한 의미 중의성 해소는 생각보다 잘 작동하지 못했다고 할 수 있겠네요.


그런데 좌절하기는 이릅니다. 본 연구의 목적은 시기에 따른 단어의 의미 변화를 추적하는 것이지, 단어 의미 중의성를 정확하게 수행하는 것이 아니기 때문입니다. 가장 흔한 갈래뜻만 고르는 분류기가 높은 성능을 보였다고 하지만, 실제로 이 분류기는 아무 쓸모가 없습니다. 항상 하나의 갈래뜻만을 선택하는 분류기기 때문에 그 단어의 의미가 시기별로 어떻게 변했는지를 보여줄 수 없기 때문입니다. 따라서 시기별 의미 변화를 잘 추적하는 분류기를 찾기 위해서는 다른 평가 방법이 필요합니다. 

이를 위해 저자들은 6개의 단어에 대해 0년부터 2000년 사이의 용례를 뽑아, 그 의미별 비중이 어떻게 변하였는지 수작업을 계산하였습니다. 그리고 이 비중 변화와 가장 차이가 적은 곡선을 생성하는 분류기를 찾는 것으로 평가 방법을 바꾸었습니다. 그 결과 6-gram LM 분류기가 MSE값이 0.02 ~ 0.05로 가장 적은 오차를 보였고, 베이스라인의 경우 0.03~0.17로 큰 오차를 보였습니다.


의미 변화 추적

앞서 만들어진 6-gram LM 분류기를 이용하여 의미를 분류하고, 그 통계를 내면 그 단어의 연도별 의미변화를 쉽게 추적할 수 있습니다. 이를 통해 위에 제시한것처럼 하나의 라틴어 단어가 어떤 영어 단어의 의미로 쓰이는지 비중을 보는 것도 가능하고, 거꾸로 영어 단어 하나를 어떤 라틴어 단어로 번역할 것인지 그 비중을 보는 것도 가능합니다. 혹은 전체 단어의 전체 의미별 2000년간 사용 트렌드도 볼수 있겠구요.


정말 흥미로운 연구 아닌가요? 라틴어 사전 사이트를 만들면서 이런 단어 통계도 제시할 수 있으면 좋겠다는 생각을 많이 했었는데, 이미 2011년에 이런 연구를 하고 있었네요. 한 가지 아쉬운 점이라면 역시 OCR 결과물에 노이즈가 너무 많아서(특히 중세, 전근대 텍스트의 특이한 글자체를 오인식하는 경우가 많은 듯합니다) 전반적인 정확도를 많이 잃지 않았을까 염려가 된다는 겁니다. 

중세 텍스트용 OCR 모델을 만들고 언어 모델과 결합하면 좀더 정밀한 OCR이 가능하지 않을까 생각하는데, 관련 부분에서 개선이 없는 점이 한 가지 아쉬운 점이었고, 또 다른 아쉬운 점은 WSD 성능이 너무 낮았다는 겁니다. 물론 시기별 의미 변화를 분석하는데에는 문제가 없다고 저자들이 충분히 입증했지만, 이는 분류오류끼리 서로 상쇄되어 그렇게 보인것이고, 실제 해당 의미로 분류된 용례를 살펴보면 30~40%는 잘못된 경우가 보일테니깐요. 해당 기법이 단순히 시기별 의미 변화뿐만 아니라, 그 시기의 특정 의미에 해당하는 용례까지 보여주려면, 정확도 향상이 필요할 것입니다.

  1. Bamman, D., & Crane, G. (2011, June). Measuring historical word sense variation. In Proceedings of the 11th annual international ACM/IEEE joint conference on Digital libraries (pp. 1-10). ACM. [본문으로]
  2. ngram 언어 식별기의 개념에 대해서는 https://bab2min.tistory.com/503 를 참조 [본문으로]
이 댓글을 비밀 댓글로