학술지 검색
Download PDF Export Citation Korean Bibliography PMC Previewer
ISSN : 2982-4737(Print)
ISSN : 2982-4745(Online)
Journal of Applied Studies on Sinograph and Literary Sinitic Vol.1 No.1 pp.127-163
DOI : https://doi.org/10.36523/HERC.2022.1.127

Universal Dependencies와 BERT/RoBERTa 모델을 통한 고전 중국어 정보처리

YASUOKA Koichi**
*Professor, Center for East Asian Humanities and Informatics, affiliated with Institute of Humanities, Kyoto University

* 이 논문은 2022년 11월 24일에 개최된 단국대학교 부설 한문교육연구소 초청강연 “Universal Dependencies와 BERT/RoBERTa 모델을 통한 고전 중국어 정보처리”의 강연 자료로서 「Universal Dependenciesと BERT/RoBERTa/DeBERTaモデルによる多言語情報処理」의 2022년 10월 25일판의 일부를 발췌 번역한 것 을 토대로 논문화한 것이다.


; ;

Abstract


야스오카 고이치**
*교토대학 인문과학연구소 부속 동아시아인문정보학연구센터 교수

초록


    Ⅰ. 개요

    이 논문에서는 Universal Dependencies(이하 UD)1)라고 불리는 다언어 의존관계 말뭉치2)를 사용 한 자연어 처리 중 특히, 품사 태그 부여(품사 태깅)와 의존관계 분석에 관해 자세하게 소개한다. 사실 이런 분석기법의 뒤에는 복잡한 수식이 존재하지만, 여기서는 가능한 한 수식을 사용하지 않고 설명하 도록 한다. 한편 현대의 자연어 처리는 그 대부분이 BERT3)·RoBERTa4)·DeBERTa5) 등의 사전학습 모델을 활용하기 때문에 이 사전학습모델에 대해서도 개요를 소개한다. 그리고 각 방법을 독자가 실제 로 시도해 볼 수 있도록 Google Colaboratory6)를 사용한 프로그래밍 사례도 같이 설명한다. 프로그래 밍 사례는 이해하기 쉽도록 또 그대로 따라 하기 쉽도록 길어도 25줄 정도로 끝나도록 신경 썼다. 파이썬(python) 등의 기초지식이 없어도 일단 시도해 볼 수 있을 것이다.

    이 논문은 제1장이 언어횡단적인(cross-lingual) ‘개요’이며 제2장부터는 각 언어별로 방법을 설명 한다. 어느 장부터 읽기 시작해도 괜찮지만, 의문이 생긴다면 반드시 제1장으로 돌아가는 것을 추천한 다. 또한 각각의 분석기법에 대해서는 가능한 선에서 원 논문과 URL을 실었다. 그리고 이 논문에서 다 다루지 못한 언어에 대해서는 deplacy7)의 서포트 페이지8)에 Google Colaboratory 사용 사례를 제시했다(표1). 응용을 검토할 때 도움이 되기를 바란다.

    1. Universal Dependencies와 CoNLL-U

    UD는 서사언어의 품사·형태소 속성·의존구조를 언어에 관계없이 분석하는 기법이다. 구 구조를 고려하지 않고 의존관계를 분석함으로써 언어횡단성을 높이고 모든 문법구조를 단어간 관계(링크)로 설명하는 것이 특징이다.

    의존구조 분석 자체는 Tesnière의 구조적통어론9)에서 출발하여 Мельчук의 방향 그래프 기술10) 에 의해 어느 정도 완성이 된 기법이다. 가장 큰 특징은 이른바 동사중심주의로 언어횡단적인 분석이 가능하다는 점이며, Мельчук 의존문법이 컴퓨터용으로 다듬어진 UD에서도 언어에 상관없이 쓸 수 있다는 장점을 전면에 내세우고 있다. UD에서의 문법구조 기술은 구 구조를 고려하지 않고 모든 것을 단어 사이의 링크로 표현한다. 이에 따라 언어횡단적인 문법구조 분석이 가능하다.

    UD 의존관계 말뭉치의 교환용 포맷으로는 CoNLL-U라고 불리는 탭으로 구분되는 텍스트(문자코드 는 UTF-811))가 규정되어 있다. CoNLL-U의 각 행은 각 단어에 대응하여 표2처럼 10개의 탭으로 구분되는 필드로 구성된다. ID·FORM·LEMMA는 단어 그 자체에 관한 필드이다. UPOS·XPOS·FEATS는 단어의 품사와 형태소 속성에 관한 필드이다. HEAD·DEPREL·DEPS는 단어의 의존관계와 관련된 필드이다.

    UD에서의 의존관계는, 단어 사이의 방향 그래프를 HEAD와 DEPREL로 나타낸다. HEAD는 그 단어로 향하는 링크의 원 ID를 나타내고, DEPREL은 이 링크가 보여주는 의존관계 태그이다. 다만 HEAD가 0이라면, HEAD로 들어오는 링크는 존재하지 않는다. 링크의 개수는 단어의 개수와 같으며, 각 링크가 향하는 곳은 전부 다르다. 즉, 각 단어에서 나오는 링크는 복수일 가능성이 있지만, 각 단어 로 들어가는 링크는 하나뿐이다. 또한 링크는 양방향이 될 수 없다.

    UD의 의존관계 링크는 Мельчук 의존문법의 후예로, 이른바 동사중심주의이다. 동사를 중심으로 주어나 목적어로 링크된다. 수식관계에서 보면 피수식어에서 수식어로 링크된다. 다만 전치사와 후치 사를 체언의 수식어로 간주한다는 점12)이 Мельчук과는 다르다. 그리고 계사문에서는 동사중심주의 를 채택하지 않고 보어를 중심으로 주어나 계사(코퓰러)로 링크된다.

    UD의 언어횡단성을 보여주는 실제 사례로 고전중국어(한문) 문장 ‘人莫知其子之惡’와 일본어 문 장 ‘人は其の子の悪しきを知らない’와 영어 문장 ‘A man doesn’t know the evil of his son’의 CoNLL-U를 그림1에서 비교해 보자. 이 CoNLL-U는 각 언어 UD에 관계없이 수작업으로 쓴 것으로 FEATS·DEPS는 사용하지 않았다. 가시화에는 deplacy를 사용했다. 한문, 일본어, 영어는 어순은 다르 지만 nsubj(주어)와 nmod(명사관형어)와 obj(목적어)와 ccomp(보문)의 링크가 각각에 대응한다고 할 수 있다.

    그리고 계사문에 대한 UD의 예시로 러시아어 문장 ‘Это ручка’와 프랑스어 문장 ‘C’est un stylo’와 일본어 문장 ‘これはペンです’의 CoNLL-U를 그림2에서 비교해 보자. 러시아어, 프랑스어, 일본어 전부 보어에서 주어로 nsubj가 연결되어 각각에 대응하고 있다고 할 수 있다. 또한 프랑스어와 일본어에서는 계사가 cop로 연결되어 있다.

    2. 의존문법이론과 Universal Dependencies

    UD의 의존구조는 Мельчук의 방향 그래프 기술을 이론적 지주로 삼으면서도 실천적인 면에서는 Reed-Kellogg의 문법구조13)를 적용한다. 이 부분에 대해서 간단히 소개한다.

    Reed-Kellogg의 문법구조표는 ‘주어-술어-목적어’라는 구조를 기본으로 영문을 시각화한다. 주문 (main sentence)은 굵은 선으로, 이 이외의 절(clause)은 얇은 선으로 표시한 다음, 수식어를 사선으로 나타냈다. 예를 들어 ‘Those who labour with their minds rule others’라는 영어 문장에서는 ‘Those rule others’라는 주문의 ‘Those’를 ‘who labour’이라는 절이 수식하고, 이 ‘labour’을 ‘with minds’가 수식하고, ‘minds’를 ‘their’가 수식하기 때문에 그림3처럼 된다. Reed-Kellogg의 문법구조표는 영어에 특화되어 설계되었기 때문에 반드시 다른 언어에 적용되는 것은 아니다.

    Tesnière는 슬라브어파의 연구를 통해 후에 의존문법이라고 불리게 되는 언어횡단적인 기술 기법 을 생각해 낸다. 문장 안의 단어는 서로 의존관계에 있다는 것이 의존문법의 기본적인 생각이다. 단어 와 단어 사이의 의존관계에서는 상위항(régissant)이 하위항(subordonné)을 지배하고 하위항이 상위항 에 의존한다. 예를 들어 영어 문장 ‘Those who labour with their minds rule others’에서는 ‘rule’이 ‘Those’와 ‘others’를 지배하고, ‘Those’와 ‘others’가 ‘rule’에 의존한다. 다만 전용(轉用)이 이루어진 경우는 이들 단어 사이에 의존관계는 없으며 병치하는 형태로 표현한다. 그림4의 왼쪽을 보면 명사 ‘minds’가 ‘with’로 인해 E전용(연용수식어로 전용)되고, 동사 ‘labour’가 ‘who’로 인해 A전용(연체수 식어로 전용)되었다.

    Tesnière의 의존문법은 문장 안에서 단어의 순서에 관계없이 단어의 의존관계를 나타내기 때문에 고전중국어에도 응용이 가능하다. 그러니까 ‘勞心者治人’에서 ‘心’가 ‘勞’에 의존하고, ‘勞’가 ‘者’로 인해 O전용(체언으로 전용)되어 ‘治’에 의존한다. 이를 그림4의 오른쪽처럼 표시해 보면 ‘Those who labour with their minds rule others’와 언어를 뛰어넘어 비교도 가능하다.

    Tesnière의 의존문법은 그 후에 Robinson14)과 Hudson15) 등이 Chomsky의 구 구조 문법16)과의 융합을 시도했다. 한편 Мельчук은 단어의 의존관계의 방향 그래프로 의존문법을 형식화하면서 Chomsky의 구 구조 문법과 결별했다.

    Мельчук의 의존문법은 문장 안의 단어 X와 Y에 대해 의존관계 ‘X→Y’로 문장을 분석한다. ‘X →Y’는 X는 Y를 지배한다, 또는 Y는 X에 의존한다고 읽는다. 각 화살표에는 의존관계에 관한 적절한 태그가 부여된다. 각 단어가 의존하는 단어는 하나이며 의존관계가 상호적인 경우는 없다. 의존관계는 어디까지나 단어와 단어 사이의 관계로, 설사 절(clause)이나 구(phrase)와 관련된 것이라도 딱 잘라 단어와 단어 사이의 관계로 기술한다. 그 결과로 Мельчук의 의존문법은 언어횡단적인 문법구조 기 술이 되었다. 영어 문장 ‘Those who labour with their minds rule others’와 일본어 문장 ‘心を労する 者は人を治める’와 고전중국어(한문) ‘勞心者治人’을 Мельчук의 의존문법으로 문법구조를 표시 한 것이 그림5이다. 태그 가운데 subjectival과 direct-objectival은 과거에는 predicative와 1st completive가 사용되었으며, Мельчук 자신도 태그가 몇 종류 필요한지는 확실히 밝히지 않았다17).

    UD의 의존구조는 Мельчук의 의존문법의 태그를 표4의 37종류로 한정하는 야심적인 시도로 볼 수 있다. 그림5의 subjectival·direct-objectival·modificative·determinative가 그림6에서 nsubj·obj·acl·det 가 되었다고 생각할 수도 있다. 그런데 UD의 전신인 Stanford Typed Dependencies18)가 초기에는 Bresnan 어휘기능문법19)에서 시작되었고 그 후에 의존문법으로 이행되었기 때문에 몇 가지 특이한 개념이 섞여 들어갔다. 그중 하나가 절(clause)이다.

    Мельчук는 절이라는 개념을 의존문법에서 배제했지만, UD는 이것을 재도입했다. 표4의 nsubj 와 csubj는 전부 주어를 나타내는 UD 의존관계 태그이며, 링크가 향하는 곳이 절이라면 csubj를, 그 렇지 않으면 nsubj를 사용한다. obj와 ccomp에 대해서도 마찬가지, advmod와 advcl에 대해서도 마 찬가지, amod와 acl에 대해서도 마찬가지이다. case와 mark에 대해서는 링크가 나오는 곳이 절이라 면 mark를, 그렇지 않으면 case를 사용한다.20)

    영어에서 절이라는 개념은 어느 정도 공감대가 형성되었다고 생각된다. 하지만 다른 언어에서 절 이라는 개념은 반드시 명확한 것은 아니다. UD는 언어횡단적이지만 꽤 영어에 치우쳐 있다는 점은 기억해 두면 좋다.

    3. BERT/RoBERTa/DeBERTa 모델과 빈칸 채우기 게임

    Google AI Language가 발표한 BERT는 대량의 문장을 기계가 통째로 암기하도록 할 때 어떤 방 법이 유효할지 단적으로 보여주는 사전학습모델이다. 단순히 문장을 다 외우게 하는 것이 아니라 글 안의 문장과 문장의 연결 또는 문장 안의 토큰(단어 또는 단어보다 짧은 문자열)과 토큰의 연결을 효 과적으로 학습할 수 있도록 여러 장치가 마련되어 있다.

    토큰과 토큰의 연결을 학습시키기 위해 사용되는 것이 바로 ‘빈칸 채우기 게임’이다. ‘This [MASK] a pen.’의 [MASK]에 대해 ‘This is a pen.’이라는 답을 얻을 수 있는 빈칸 채우기 게임(그림 7)을 생각해 보자. bert-base-cased21)에서 각 토큰의 입출력은 문자코드(UTF-8)로 이루어지는데 내부 적으로는 768차원의 벡터(수치의 열)로 표현된다. 입력측에서는 각 입력 토큰에 대응하는 벡터를 그대 로 사용하고, 출력측에서는 각 출력 토큰에 가까운22) 벡터가 되도록 학습시킨다. ‘This [MASK] a pen.’의 열에서 보면, ‘This’, ‘a’, ‘pen’, ‘.’은 입력 벡터 거의 그대로 통과되고, ‘is’에 가까운 출력 벡터를 얻을 수 있도록 내부의 기억소자를 조작한다. 이런 빈칸 채우기 게임을 대량의 문장에서 실행 하여 토큰과 토큰의 연결을 학습23)할 수 있다는 것이 BERT의 특징 중 하나24)이다.

    Google Colaboratory상의 Transformers25)를 사용하여 bert-base-cased가 영문을 어느 정도 학습할 수 있는지를 시험해 보자(그림8). ‘This [MASK] a pen.’에서 빈칸을 채워보면 ‘was’가 48.2퍼센트, ‘is’가 40.2퍼센트로, 출력되는 벡터가 ‘was’와 ‘is’의 중간으로 ‘was’에 조금 더 가깝다는 사실을 알 수 있다.

    BERT를 다언어로 확장할 때 문제가 되는 것은 모델의 입출력에 문장이라는 단위를 가정한다는 점이다. 언어에 따라서는(예를 들면 고전중국어) 문장이라는 단위가 꼭 명백한 것은 아니다. 그리고 SNS상의 ‘트윗’ 등 문장의 경계가 확실하지 않은 경우도 많이 있다. 이에 비해 RoBERTa나 DeBERTa는 문장이라는 단위를 가정하지 않고 토큰의 나열에 빈칸 채우기 게임에만 특화된 학습을 실행한다. 이에 따라 문장이라는 단위에 얽매이지 않고 대량의 문장을 통째로 암기할 수 있다.

    roberta-classical-chinese-base-char26)는 고전중국어의 한자를 토큰으로 간주하여 한자 단위의 빈 칸 채우기 게임(그림9)을 학습한 모델이다. 각 한자(문자의 종류 약 26,000개)의 입출력은 UTF-8이지 만, 내부적으로는 768차원의 벡터로 표현한다. Google Colaboratory상의 Transformers로 만든 ‘勞 [MASK]者治人’의 빈칸을 채우는 프로그램과 그 결과가 그림10이다. ‘心’이 19.9퍼센트로 ‘人’의 32.7퍼센트보다 낮다는 사실을 알 수 있다.

    BERT, RoBERTa, DeBERTa 등의 사전학습모델은 출력부를 바꾸는 것으로 다양한 용도로 응용 이 가능하다. 출력 벡터를 품사 정보라고 간주하면 품사 태깅에 사용할 수 있다. 의존관계 태그라고 보면 의존관계 분석에도 사용할 수 있다. UD에서는 계열 레이블링이나 의존관계 분석에 사전학습모 델을 응용할 수 있다.

    4. Universal Dependencies의 의존관계 분석

    의존관계 분석은 UD를 이용한 언어처리의 핵심이며, 많은 분석 알고리즘이 난립하고 있다. 이런 의존관계 분석 알고리즘을 상태전이형 알고리즘과 인접행렬형 알고리즘으로 나눠서 해설한다.

    arc-swap27)으로 대표되는 상태전이형 알고리즘은 단어열의 앞쪽에서 뒤쪽으로 향해 ‘담장(stack-buffer boundary)’을 이동시키는 이미지로 처리를 한다. ‘담장’이 하는 전이는 다음의 6종류로 규정한다.

    • Shift ‘담장’을 오른쪽으로 한 단어만큼 이동한다.

    • Reduce ‘담장’의 바로 왼쪽 단어를 제거하고 분석 결과로 간다.

    • Left-Arc ‘담장’의 바로 오른쪽 단어에서 바로 왼쪽 단어로 링크를 연결한다.

    • Right-Arc ‘담장’의 바로 왼쪽 단어에서 바로 오른쪽 단어로 링크를 연결한다.

    • Unshift ‘담장’을 왼쪽으로 한 단어만큼 이동한다.

    • Swap ‘담장’의 바로 오른쪽 단어와 바로 왼쪽 단어를 바꾼다.

    단어가 모두 Reduce되어 ‘담장’만 남게 되는 시점에서 상태전이형 알고리즘은 종료된다. 분석 사 례를 그림11에서 확인할 수 있다. 분석 결과에서 링크가 들어오지 않는 단어가 일반적으로 root가 된 다. 또한 6종류 가운데 Unshift·Swap을 사용하지 않는 경우는 링크에 교차가 있는 UD는 사용할 수 없다. 그리고 현실에서는 Left-Arc의 직후에는 Reduce를, Right-Arc의 직후에는 ShiftReduce를, 각 각 같이 전이시키는 방법이 주류이다.

    Biaffine28)로 대표되는 인접행렬형 알고리즘은 UD 의존구조를 방향 그래프로 보고 그 인접행렬을 구한다. 예를 들어, 그림11의 오른쪽 아래 ‘Who did you wait for?’의 방향 그래프라면,

    HERC-1-1-127_A1.gif

    라는 6×6의 인접행렬을 찾는다(그림12). 구체적으로는 인접행렬의 각 열별로 요소를 하나씩 고르 고 대각성분상의 root에서 하나를 선택하는 것을 확률적으로 실행한다. 그런데 루프가 발생하는 경우 가 있기 때문에 적절하게 Chu-Liu-Edmonds 등29)을 사용하여 이를 해소한다.

    상태전이형 알고리즘은 BERT·RoBERTa·DeBERTa 등의 사전학습모델을 사용하여 정밀도 향상 을 기대할 수 있지만30), 이것은 실제로 적용이 쉽지 않다. 한편 인접행렬형 알고리즘은 사전학습모델 과 궁합이 좋아서 실제 적용도 간단한 편이다. Google Colaboratory상의 Transformers를 사용하여 roberta-base-english-ud-goeswith31)로 ‘Who did you wait for?’의 인접행렬 로짓32)을 구하는 프로그 램과 그 결과가 그림13이다. 그림13의 예시에서는 각 열마다 로짓 최대의 요소를 선택하기만 하면 ‘Who did you wait for?’의 의존구조 그래프를 정확하게 도출할 수 있지만, 현실의 처리에서는 Chu-Liu-Edmonds 등을 사용하게 된다.

    Ⅱ. 고전중국어(한문)

    1. 고전중국어 UD의 품사 태깅과 문장 구분

    고전중국어(한문)는 단어과 단어 사이에 구분이 없고 문장과 문장 사이에도 구분이 없다. 이것이 백문(白文)이라고 불리는 고전중국어의 서사 형태이며, 모르는 사람이 본다면 그저 한자가 연속적으 로 나열되어 있을 뿐이다.

    고전중국어 UD의 품사 태깅은 단적으로 말하자면 백문의 각 한자에 UPOS를 부여하는 작업이다. 그런데 고전중국어에서 단어(漢語)는 1자 이상도 있기 때문에 그 경우는 복수의 한자를 합쳐서 UPOS 를 부여한다. Transformers의 계열 레이블링을 사용한다면 1자의 한어에는 UPOS를 레이블로 부여하 고 2자 이상의 한어에는 첫 글자에 ‘B-’를 붙인 UPOS를, 그 이후의 글자에 ‘I-’를 붙인 UPOS를 각각 부여하는 방법을 생각할 수 있다. 이렇게 원리적으로는 복수의 한자를 한어로 합치면서 UPOS를 부여 하는 것이 가능하다.

    Google Colaboratory상의 Transformers를 사용하여 roberta-classical-chinese-base-upos33)로 ‘子 曰學而時習之不亦説乎有朋自遠方來不亦樂乎人不知而不慍不亦君子乎’에 UPOS를 부여하는 프 로그램과 그 결과가 그림14이다. ‘君子’는 2자의 한어이며, ‘君’에 B-NOUN가, ‘子’에 I-NOUN가 부여 된다. ‘君子’ 이외에는 한자 1자가 한어 1자로 판정되어 각각에 UPOS가 부여된다.

    Transformers의 계열 레이블링은 다른 용도로도 적용이 가능하다. roberta-classical-chinesebasesentence- segmentation34)은 고전중국어의 문장 구분에 Transformers의 계열 레이블링을 사용한다. 구체적으 로는 문두의 한자에 대한 레이블을 B, 문말의 한자에 대한 레이블을 E로 하고, B·M·E3·E2·E를 사용하여 각 문장을 나타낸다. 1자로만 구성된 문장은 레이블을 S로 한다. 2자로 구성된 문장의 레이블은 B·E로 한다. 3자로 구성된 문장의 레이블은 B·E2·E로 한다. 4자로 구성된 문장의 레이블은 B·E3·E2·E로 한다.

    Google Colaboratory상의 Transformers를 사용하여 roberta-classical-chinese-base-sentence-segmentation 으로 ‘子曰學而時習之不亦説乎有朋自遠方來不亦樂乎人不知而不慍不亦君子乎’를 문장으로 구분 하는 프로그램과 그 결과가 그림15이다. ‘子曰’, ‘學而時習之’, ‘不亦説乎’, ‘有朋自遠方來’, ‘不亦樂 乎’, ‘人不知而不慍’, ‘不亦君子乎’의 7개의 문장으로 나눠진 것을 알 수 있다. 그런데 계열 레이블링으로 문장을 나눌 때는 Bellman-Ford35)와 Conditional Random Fields36)를 응용하는 것이 더 높은 정밀도를 달성할 수 있을 것이라 생각된다(그림16).

    2. 고전중국어 UD의 의존관계 분석

    SuPar-Kanbun37)은 인접행렬형 의존관계 분석 알고리즘을 고전중국어에 실제로 적용한다. UPOS 품사 태깅과 문장 구분에도 동시에 적용하여 roberta-classical-chinese-base-char를 바탕으로 한 ‘올인 원 설계’라고 할 수 있다. Google Colaboratory상의 SuPar-Kanbun를 사용하여 ‘子曰學而時習之不 亦説乎有朋自遠方來不亦樂乎人不知而不慍不亦君子乎’를 품사 태깅, 문장 구분, 의존관계 분석을 하는 프로그램과 그 결과가 그림17이다. 각 문장의 분석 결과를 순서대로 살펴보자.

    ‘子曰’는 동사 ‘曰’의 주어가 ‘子’가 되는 문장이고 주어를 나타내는 nsubj로 연결되어 있다. ‘學 而時習之’는 병렬접속사 ‘而’로 인해 ‘學’과 ‘習’이 병치되어 ‘學’과 ‘習’이 conj로, ‘習’과 ‘而’가 cc로 연결되어 있다. ‘之’는 ‘習’의 목적어로 obj로 연결되어 있다. ‘時’는 ‘習’의 사격보어로 본래는 obl로 연결되어야 하지만, 고전중국어 UD에서는 obl을 확장한 obl:tmod(시간에 관한 사격보어)를 도 입했다. ‘不亦説乎’는 ‘不’과 ‘亦’ 모두 ‘説’을 연용수식하여 전부 advmod로 연결되어 있다. ‘乎’는 문장 전체를 수식하는 구 끝의 종조사(sentence particle)인데, 이를 나타낼 수 있는 UD 의존관계 태그 가 표4에 없기 때문에 discourse:sp를 도입38)했다. ‘有朋自遠方來’는 ‘有朋’과 ‘自遠方來’의 2개의 구로 구성되어 parataxis로 연결되어 있다. ‘朋’은 ‘有’의 목적어로 obj로 연결되어 있다. ‘遠方’은 ‘來’의 사격보어로 본래는 obl로 연결되어야 하지만, 고전중국어 UD에서는 obl을 확장한 obl:lmod (장소에 관한 사격보어)를 도입했다. ‘遠方’은 동사 ‘遠’(고전중국어 UD에는 형용사라는 분류가 없고 동사로 취급39)한다)이 명사 ‘方’을 연체수식하여 amod로 연결되어 있다. 또한 전치사 ‘自’도 ‘方’을 수식한다고 간주하여 격 표시를 나타내는 case로 연결되어 있다. ‘不亦樂乎’는 ‘不亦説乎’와 동일한 의존구조이다. ‘人不知而不慍’은 ‘而’로 인해 ‘知’와 ‘慍’이 병치되어 있고 ‘知’와 ‘慍’이 conj로, ‘慍’과 ‘而’가 cc로 연결되어 있다. ‘人’은 ‘知’와 ‘慍’ 양쪽의 주어로 생각되지만, 가까운 쪽인 ‘知’에 nsubj로 연결되어 있다. 그리고 ‘知’와 ‘慍’은 각각 부정의 ‘不’이 연용수식하여 전부 advmod로 연결 되어 있다. ‘不亦君子乎’는 ‘不亦説乎’나 ‘不亦樂乎’와 비슷한 의존구조이지만 ‘君子’가 명사이며 계사문이다(다만, 주어도 계사도 없다).

    이와 같은 형태로 SuPar-Kanbun는 한자의 열인 백문에 품사 태깅을 하고 한어의 열의 의존관계를 분석하여 한문의 의존구조를 추출한다. 또한 고전중국어 UD의 의존관계 태그에는 표4와 그림17에 더 해 수동문의 주어를 나타내는 nsubj:pass, 중첩을 나타내는 compound:redup, 동사 병렬을 나타내는 flat:vv, 고전중국어 이외를 나타내는 flat:foreign도 사용된다.40)

    3. 고전중국어 미니 DeBERTa 모델의 제작

    Google Colaboratory상의 esupar41)에서 고전중국어 미니 DeBERTa 모델을 제작해 보자. 그림18 부터 그림22가 그 순서이다.

    먼저 훈련을 위한 백문을 준비한다(그림18). train.txt의 백문 재료로, 여기서는 UD_Classical_ Chinese-Kyoto42)를 사용하였지만, 원하는 바에 따라 다른 백문을 증량해도 괜찮다. 그리고 UD_Classical_Chinese-Kyoto의 각 CoNLL-U 파일은 품사 태깅·의존관계 분석의 학습에도 사용한다.

    이어서 입력문자열을 단문자로 분석하기 위한 토크나이저를 my-dir/tokenizer-lzh에 작성한다. 그 림19에서는 BertTokenizerFast라는 Transformers의 토크나이저를 사용하여 단문자 토크나이저를 작 성한다.

    다음으로 train.txt의 백문으로 DeBERTa 모델을 my-dir/deberta-lzh에 작성한다. 그림20에서는 입 출력폭 128토큰, 입출력 벡터 256차원, 깊이 12층, 어텐션 헤드 4개, 중간 벡터 768차원이라는 약간 작은 모델로 만들었으며, CPU라면 1시간 정도, GPU라면 10분 정도에 작성할 수 있다. 그런데 이 DeBERTa 모델은 번체자로 만들어졌으며 일본의 상용한자와 중국의 간체자는 포함되지 않는다. 그래 서 이런 이체자에 대해 벡터를 복사하여 새로운 모델을 my-dir/deberta-lzh-ext에 보존한다(그림21).

    마지막으로 my-dir/deberta-lzh-ext와 UD_Classical_Chinese-Kyoto로 품사 태깅·의존관계 분석 모 델 my-dir/deberta-lzh-upos을 제작한다(그림22). 다만 인접행렬형 알고리즘의 학습은 시간이 오래 걸 려 GPU라도 3시간 정도 걸린다.

    my-dir/deberta-lzh-upos가 제대로 제작되었는지 esupar로 테스트를 해본다(그림23). 번체자뿐만 아니라 일본의 상용한자나 중국의 간체자로 쓰인 한문도 품사 태깅·의존관계 분석이 가능하기 때문에 꼭 한번 시험해 보기 바란다.

    참고로 그림24는 my-dir/deberta-lzh-ext와 UD_Classical_Chinese-Kyoto로 미니 문장 구분 모델 my-dir/deberta-lzh-seg를 작성(파인튜닝)하는 프로그램이다. 다만 미니 모델로는 문장 구분의 정밀도 가 높아지지 않기 때문에 더 큰 모델을 만드는 편이 좋다.

    Ⅲ. 일본어

    서사 언어로서의 일본어는 단어와 단어 사이에 구분이 없다. 애초에 단어의 길이에 제한이 없기 때문에 다양한 단어의 길이가 사용되고43) 있다(그림25). 일본어 UD에서는 이들 가운데 일본 국립국 어연구소(이하 국어연) 단단위와 장단위가 지원된다. 한편, 일본어의 사전학습모델의 토큰은 국어연 단단위(또는 그 세분화)나 문자 단위가 많지만, 그림25 이외의 토큰을 채용하는 모델도 있어서 상당히 혼란스럽다.

    1. 국어연 단단위를 이용한 품사 태깅·의존관계 분석

    SuPar-UniDic44)은 아오조라문고(+Wikipedia) BERT 모델45)를 베이스로 인접행렬형 의존관계 분 석 알고리즘을 국어연 단단위용으로 적용한다. 형태소 분석(단어 구분·XPOS 품사 태깅)부에는 MeCab46)과 UniDic47)을 이용한다. Google Colaboratory상의 SuPar-UniDic을 사용하여 ‘全学年に わたって小学校の国語の教科書に大量の挿し絵が用いられている’의 품사 태깅·의존관계 분석을 하는 프로그램과 그 결과가 그림26이다. 분석 결과를 살펴보겠다.

    국어연 단단위 UD에서는 ‘全学年’, ‘小学校’, ‘教科書’가 복수의 단어로 나눠져 compound로 연결되는 것이 특징이다. ‘小学校の国語の教科書’는 명사가 명사를 수식하여 nmod로 연결되며 동 시에 ‘の’가 case로 이어져 있다. ‘大量の挿し絵’도 마찬가지이다. ‘全学年’은 ‘わたって’의 니격(ニ 格)이며 obl로 연결된 동시에 ‘に’가 case로 연결되어 있다. ‘挿し絵’는 ‘用いられて’의 가격(ガ格) 이고 nsubj로 연결되는 동시에 ‘が’가 case로 이어져 있다. ‘全学年にわたって’는 ‘挿し絵が用いら れて’의 연용수식절이며 advcl로 연결되어 있다. ‘いる’는 UniDic 품사(XPOS)가 ‘동사-비자립 가능’ 인데, 여기서는 비자립으로 간주하여 UPOS를 AUX로 하는 동시에 aux로 연결되어 있다.

    국어연 단단위 UD에서는 XPOS와 UPOS가 미묘하게 괴리되어 있다. XPOS는 UniDic 품사를 사 용하지만, UPOS의 품사 태깅 규칙과는 조금 다르기 때문이다. 극단적인 예로 ‘難儀な難儀は難儀す る’(그림27)를 살펴보자. ‘難儀’의 UniDic 품사는 ‘명사-보통명사-사변(サ변) 형상사 가능’이지만, ‘難 儀な’는 형상사(형용동사)로 취급해야 하며 UPOS는 ADJ가 타당하다. ‘難儀する’는 ‘사변 동사(경동 사)’로 취급해야 하며 UPOS는 VERB가 타당하다. 다만 ‘難儀な’와 ‘難儀する’도 국어연 단단위로는 두 개의 단어로 나눠지기 때문에 ‘難儀’의 UPOS에 각각 ADJ와 VERB를 부여한다.

    2. 국어연 단단위 미니 DeBERTa 모델의 제작

    Google Colaboratory상의 esupar로 국어연 단단위 미니 DeBERTa 모델을 제작해 보자. 그림28부 터 31이 그 순서이다.

    먼저 훈련을 위한 문장을 준비한다(그림28). train.txt의 문장 재료로, 여기서는 UD_Japanese-GS D48)와 Wikitext-JA49)를 사용했지만, 원하는 바에 따라 다른 일본어 문장을 증량해도 괜찮다. 그리고 UD_Japanese-GSD의 각 CoNLL-U 파일은 품사 태깅·의존관계 분석 학습에도 사용한다.

    다음으로 입력문을 국어연 단단위로 분해하기 위한 토크나이저를 my-dir/tokenizer-suw에 작성한다. 그림 29에서는 fugashi50)와 unidic-lite51)로 train.txt를 국어연 단단위로 구분해서 그것을 BertJapaneseTokenizer라 는 Transformers의 토크나이저로 작업한 후 국어연 단단위 토크나이저를 작성한다. 어휘 수(vocab_size)는 8,000으로, 토크나이저에서 사용할 수 있는 글자 종류의 상한(limit_alphabet)은 3,000으로 좁혔지만, 조금 더 큰 편이 좋을 것 같다.

    다음으로 train.txt의 문장으로 DeBERTa 모델을 my-dir/deberta-suw에 만들어보자. 그림30에서는 입출력 폭 128토큰, 입출력 벡터 256차원, 깊이 12층, 어텐션 헤드 4개, 중간 벡터 768차원이라는 비 교적 작은 모델로 만들었지만, GPU라도 3시간 정도 걸린다.

    마지막으로 my-dir/deberta-suw와 UD_Japanese-GSD로 품사 태깅·의존관계 분석 모델 my-dir/deberta-suw-upos를 제작한다(그림31). 다만 인접행렬형 알고리즘의 학습은 시간이 오래 걸려 GPU로도 2시간 정도 걸린다.

    my-dir/deberta-suw-upos가 제대로 제작이 되었는지 esupar로 테스트를 한다. esupar에서 BertJapaneseTokenizer를 사용하는 경우에는 fugashi와 unidic-lite와 함께 pytokenizations52)도 필요 하다. 그림32의 예시에서는 ‘にわたって’, ‘ている’의 링크에 fixed가 나타나 그림26과는 다른 결과가 나왔다.

    3. 국어연 장단위를 이용한 품사 태깅과 의존관계 분석

    국어연 장단위 토크나이저 Japanese-LUW-Tokenizer53)와 아오조라문고 RoBERTa 모델 robertabase- japanese-luw-upos54)를 이용하여 국어연 장단위를 이용한 품사 태깅을 생각해 보자. Google Colaboratory상의 Transformers를 사용하여 ‘全学年にわたって小学校の国語の教科書に大量の挿 し絵が用いられている’에 UPOS를 부여하는 프로그램과 그 결과가 그림33이다. 각 토큰에 계열 레 이블링으로 UPOS를 부여했지만, Japanese-LUW-Tokenizer가 완벽하지 않아 조금 짧게 ‘全’, ‘学年’, ‘にわたって’, ‘小学校’, ‘の’, ‘国語’, ‘の’, ‘教科書’, ‘に’, ‘大量’, ‘の’, ‘挿し’, ‘絵’, ‘が’, ‘用い’, ‘られて’, ‘いる’로 분할되기 때문에 ‘全’과 ‘挿し’에 B-NOUN, ‘学年’과 ‘絵’에 I-NOUN가 부여된다. 한편 ‘大量’에는 ADJ가 부여되지만, 이것은 NOUN이 더 적절하다고 생각된다.

    이어서 국어연 장단위의 의존관계 분석55)도 살펴보겠다. Google Colaboratory상의 esupar를 사용 하여 ‘全学年にわたって小学校の国語の教科書に大量の挿し絵が用いられている’의 의존관계 분 석을 하는 프로그램과 그 결과가 그림34이다. ‘小学校の国語の教科書’는 명사가 명사를 수식하여 nmod로 연결되어 있으며 동시에 ‘の’가 case로 이어져 있다. ‘大量の挿し絵’도 동일해야 하지만, ‘大量’가 NOUN이 아니라 ADJ가 되어버린다. ‘挿し絵’는 가격이며, nsubj로 연결되는 동시에 ‘が’가 case로 이어져 있다. ‘教科書’는 니격이며, obl로 연결되는 동시에 ‘に’가 case로 이어져 있다. ‘全学 年’도 니격으로 판단되어 obl로 연결되어 있으며 동시에 ‘にわたって’가 case로 이어져 있다.

    4. 국어연 장단위 미니 DeBERTa 모델의 제작

    Google Colaboratory상의 esupar로 국어연 장단위 미니 DeBERTa 모델을 제작해 보자. 그림35는 그림28~30에서 작성한 my-dir/deberta-suw를 국어연 장단위에 사용하는 형태로 품사 태깅·의존관계 분석 모델 my-dir/deberta-luw-upos를 제작한 것이다. 국어연 단단위의 BertJapaneseTokenizer(내부적 으로는 fugashi와 unidic-lite)를 사용하기 때문에 국어연 장단위의 UD_Japanese-GSDLUW56)에 비해 토큰이 짧아지지만, esupar가 UPOS 부여에 ‘B-’, ‘I-’를 구사하여 제대로 잘 작동할 것이다(그림36).

    5. 문절을 이용한 의존관계 분석

    GiNZA57)는 국어연 단단위를 이용한 상태전이형 의존관계 분석 알고리즘을 사용하고, 문절을 분 석 단위로 한 의존관계 분석이 가능하다. 다만 문절을 단위로 하는 의존관계는 관습적으로 문두에서 문말로 링크하기 때문에58), 화살표 방향이 일본어 UD와 반대가 되어버린다.

    Google Colaboratory상의 GiNZA를 사용하여 ‘全学年にわたって小学校の国語の教科書に大量 の挿し絵が用いられている’를 문절 의존관계 분석을 하는 프로그램과 그 결과(가시화는 Graphviz59) 를 사용)가 그림37이다. 문절을 단위로 하는 의존관계 분석은 UD과 완전히 다르기 때문에 여기서는 참고 수준에서 끝내겠다.

    Figures

    HERC-1-1-127_F1.gif
    한일영 CoNLL-U와 deplacy를 통한 가시화
    HERC-1-1-127_F2.gif
    계사문의 CoNLL-U와 deplacy에 따른 가시화
    HERC-1-1-127_F3.gif
    Reed-Kellogg의 문법구조표
    HERC-1-1-127_F4.gif
    Tesnière의 의존문법표
    HERC-1-1-127_F5.gif
    Мельчук의 의존문법을 이용한 문법구조 분석
    HERC-1-1-127_F6.gif
    UD와 CoNLL-U의 의존구조 분석
    HERC-1-1-127_F7.gif
    bert-base-cased의 빈칸 채우기 게임
    HERC-1-1-127_F8.gif
    ‘This [MASK] a pen.’의 빈칸 채우기 게임 프로그램과 결과
    HERC-1-1-127_F9.gif
    roberta-classical-chinese-base-char의 빈칸 채우기 게임
    HERC-1-1-127_F10.gif
    ‘勞[MASK]者治人’의 빈칸 채우기 게임 프로그램과 결과
    HERC-1-1-127_F11.gif
    상태전이형 알고리즘을 통한 ‘Who did you wait for?’의 의존관계 분석
    HERC-1-1-127_F12.gif
    인접행렬형 알고리즘을 통한 ‘Who did you wait for?’의 의존관계 분석
    HERC-1-1-127_F13.gif
    ‘Who did you wait for?’의 인접행렬 로짓의 도출
    HERC-1-1-127_F14.gif
    roberta-classical-chinese-base-upos의 UPOS 부여
    HERC-1-1-127_F15.gif
    roberta-classical-chinesebase-sentence-segmentation의 고전중국어의 문장 구분
    HERC-1-1-127_F16.gif
    고전중국어의 문장 구분에 Bellman-Ford를 응용
    HERC-1-1-127_F17.gif
    SuPar-Kanbun의 고전중국어의 의존관계 분석
    HERC-1-1-127_F18.gif
    고전중국어 미니 모델 제작을 위한 준비
    HERC-1-1-127_F19.gif
    고전중국어용 단문자 토크나이저의 작성
    HERC-1-1-127_F20.gif
    고전중국어 미니 DeBERTa 모델의 작성
    HERC-1-1-127_F21.gif
    고전중국어 미니 DeBERTa 모델의 확장(이체자 추가)
    HERC-1-1-127_F22.gif
    고전중국어용 품자 태깅·의존관계 분석 미니 모델의 제작
    HERC-1-1-127_F23.gif
    고전중국어용 품자 태깅·의존관계 분석 미니 모델의 테스트
    HERC-1-1-127_F24.gif
    고전중국어 문장 구분 미니 모델의 작성
    HERC-1-1-127_F25.gif
    국어연 단단위·국어연 장단위·문절
    HERC-1-1-127_F26.gif
    SuPar-UniDic을 이용한 일본어 의존관계 분석(국어연 단단위)
    HERC-1-1-127_F27.gif
    국어연 단단위 UD의 XPOS(UniDic 품사)와 UPOS의 관계
    HERC-1-1-127_F28.gif
    국어연 단단위 미니 모델 제작을 위한 준비
    HERC-1-1-127_F29.gif
    국어연 단단위 토크나이저의 작성
    HERC-1-1-127_F30.gif
    국어연 단단위 미니 DeBERTa 모델의 작성
    HERC-1-1-127_F31.gif
    국어연 단단위용 품사 태깅·의존관계 분석 미니 모델의 제작
    HERC-1-1-127_F32.gif
    국어연 단단위용 품사 태깅·의존관계 분석 미니 모델의 테스트
    HERC-1-1-127_F33.gif
    roberta-base-japanese-luw-upos의 UPOS 부여
    HERC-1-1-127_F34.gif
    roberta-base-japanese-luw-upos의 일본어 의존관계 분석(국어연 장단위)
    HERC-1-1-127_F35.gif
    국어연 장단위용 품사 태깅·의존관계 분석 미니 모델의 제작
    HERC-1-1-127_F36.gif
    국어연 장단위용 품사 태깅·의존관계 분석 미니 모델의 테스트
    HERC-1-1-127_F37.gif
    문절을 이용한 일본어 의존관계 분석

    Tables

    Deplacy에 접속 가능한 각 언어의 의존관계 분석 프로그램(2022년 10월 25일 기준)
    CoNLL-U의 각 필드
    UD 품사 태그(UPOS)
    UD 의존관계 태그(DEPREL)

    References

    1. SEARCH
    2. 온라인 투고 시스템

      (Online Submission)

    3. 한문교육연구소

      (Institute for Han-Character
      Education Research)

    4. 편집부
      (Editorial Office Contact)

      - Tel: +82-31-8005-2661
      - E-mail: iher_dku@outlook.com