ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NLP] OpenKorPOS: Democratizing Korean Tokenization withVoting-Based Open Corpus Annotation
    ✨ AI/AI papers 2023. 7. 14. 10:57

    OpenKorPOS: Democratizing Korean Tokenization withVoting-Based Open Corpus Annotation

     

    link : https://aclanthology.org/2022.lrec-1.531.pdf

     

     

    오랜만에 한국어 task를 하게 됬는데, mecab말고 토크나이저 방법이 뭐가 있나 궁금해서 보게된 논문

     

     

    Abstract

     

    한국어는 다른 동아시아 언어와 다르게, 더 큰 단어 바운더리에서 공백을 사용하는 복잡한 형태학(morphology)을 가지고 있다. 형태소(morpheme) 기반 text generation은 character-level 접근법보다 상당한 시멘틱 이점을 가지고 있는 반면,한국어 형태소 분석기는 형태소 수준의 토큰 시퀀스만 제공하기 때문에 토큰화 과정에서 정보를 잃게 된다. 공백 정보를 잃어버리는 것과, subchracter level 형태소 정규화 라는 두 가지 중요한 이슈가 있다. 두 이슈는 토큰화 결과에서 원래의 입력 문자열을 재구성하기 어렵게 만들어 생성 작업에 적용하는데 방해가 된다. 한국어 토크나이저로 사용되는 mecab이라던가 konlpy라던가 하는 라이브러리는 POS 태깅 말뭉치를 생성할 때 사용되는 방식이다. 해당 논문에서는 생성 작업에 더 친화적인 기존 체계를 개선할 것을 제안한다. 또한, public analyzer를 활용해, 말뭉치에 fully-automatic annotation을 달 수 있는 기능을 제안한다. 해당 논문에서는 surface와 POS에 투표하고 선택한 형태소로 시퀀스를 채워 공간 정보를 통합하는 적절한 품질의 토큰화를 생성한다.

     

     

    Introduction

     

    한국어는 인도-유로피안 언어나 다른 동아시아 언어들(일본어나 중국어)와는 많은 차이가 있다. 특히 한국어는 단어 바운더리에 꼭 공백을 사용하지 않으며, 가독성을 높이기 위해 띄어쓰기를 사용한다. 한국어의 이러한 응집적 특성으로 인해 단어보다는 크고 문장보다는 작은 토큰화된 경계가 생긴다. 이러한 경계는 '음절'이라고 하는 유닛으로 특정되고 이 속성은 다른 단어들과는 특히 차별화되는 점이다. 게다가, 띄어쓰기에 대한 명확한 표준은 있지만 그 규칙은 꽤나 복잡하다. 

    이전 연구에서 형태소 수준 분석을 통한 정교한 텍스트 처리가 Text Generation을 위하 특히 중요한 것으로 간주된다. 한국어의 경우 일반적으로 단일 툴킷이 형태소 수준의 토큰화, 형태소 분석 및 정규화, 품사(POS) 태깅을 제공하는 경향이 있다. 이러한 이유로 서로 다른 기능은 밀접하게 연관되 있고 일반적으로 단일 말뭉치에서 end-to-end 방식으로 학습된다. 이러한 특성은 이 도구를 구축하고 훈련하는데 활용된 표준 세종 말뭉치 형식에서 물려받은 것이다. 하지만 이는 제안된 이래(2006)에 적은 업데이트만 있었고, 토큰화된 결과를 원래의 형식으로 되돌리는데 중요한 정보가 생략되어 있다. 또한, 이러한 토크나이저들은 stemming & lemmatization(어간 및 형태소 분석)을 수행하는데 학습 코퍼스의 예상 결과에 따라 수행된다. 이러한 이유들로 generation task관한 연구들은 다양한 형태의 하위 단어 토큰화를 사용하거나, 모델의 일부로 특수 공간 토큰을 사용해 한계를 극복하는 방법이 사용되었다. 하지만 modification and redistribution에 관한 제약(세종 코퍼스는 오직 domestic 연구자만 이용할 수 있고 non-permissive license에 한해 배포된다)으로 인해 큰 스케일의 코퍼스 수준에서 이를 다룬 연구는 없었으며 이 논문에서는 가능한 lowest possible layer로부터 이문제를 해결함으로써 형태소 수준의 토크나이저가 최신 접근 방식과 결합할 경우 더 효과적일 수 있다는 가설을 세웠다.

    해당 논문에서는 코퍼스 수준에서 논문의 방법을 적용하기 위해 투표 기반 자동 주석을 위해 널리 사용되는 여러 형태소 수준의 토큰화 도구의 결과물을 활용한다. 자세히는, 여러 토크나이저를 사용해 후보 토큰화 를 생성하고 투표 메커니즘을 통해 가장 높은 토큰과 형태소 순서를 결정하고 분쟁이 있는 부분 문자열 표면을 채운다.

     

     

    Problem Definition

     

    한국어는 일본어와 중국어랑 같이 분류되는 경향이 있는데 저자들은 이 세 언어의 차이를 분명히 하고 오해를 없애려고 하였다.

     

    Liberal Whitespaces and Eojeols

    한국어는 띄어쓰기가 불확실하고 구어체 텍스트에서는 띄어쓰기를 자유롭게(때로는 완전히) 생략하가는 경우가 많다는 점이다. 특히 한국어의 띄어쓰기는 단어보다는 크고 구보다는 작은, 형태소가 응집된 논리적 블록인 어절 수준에서 이루어진다. 어절은 원래 형태가 보존되지 않는 경우가 많아 문장을 분해하고 형태소를 정규화하면 원래 형태로 재구성할 수 없는 결과물이 나올 수 있다. 

     

    위 그림에서는 입력 A는 가장 일반적인 형태인데 같은 문장이지만 공백이 완전 제거된 입력 B도 한국어 화자는 완벽하게 읽을 수 있고 다음과 같은 방식으로 입력할 수 있다.

     

    Morphological Anlayzers as Tokenizers

    서브워드 토크나이저가 도입되기 전에는 한국어 텍스트를 토크나이징 하는 방법은 형태소 분석과 POS 태깅을 함께 수행하는 라이브러리를 사용하는 것이었다. 이러한 라이브러리의 대부분은 정규화도 함께 수행한다. POS 태그가 필요하지 않은 문맥에서는 이러한 라이브러리의 결과로 생성된 형태소를 토큰으로 사용한다. 이는 어절 후보의 수가 빠르게 계산하기 어려워지기 때문에 필수적이었고, 형태소로 세분화하면 더 작은 어휘를 구성할 수 있다. 기존 방식에서는 이 프로세스로 task 수행에 도움되지 않는 접속사와 같은 stopwords를 surfacing하면서 동시에 정규화로 동사 활용의 양을 줄이는데 도움이 되었다. 그러나 텍스트 생성 모델을 구현할 때, 이 프로세스가 원본을 저장하지 않기 때문에 문제가 발생할 수 밖에 없다. 일관된 텍스트 생성도 잘 수행되지 않았기 때문에 자연스러운 텍스트 생성까지 활발하게 연구되지도 않았다고 한다. 현재 사용 가능한 형태소 분석기의 한계로 인해 원본 텍스트를 구성하는 것은 불가능하다. 그림 2에서, A, B, C가 원래는 서로 달랐다고 하더라도 모두 토크나이즈되어 동일한 출력으로 변환되는 것을 볼 수 있다. 대부분 anlayzer는 정규화 과정에서 원본 형색에 대한 정보를 잃을 뿐 아니라 원본 텍스트의 간격을 재구성하는 데 필요한 정보도 보존하지 않는다. 정규화된 텍스트를 원래 형태로 재구성하는 신뢰할 수 있는 방법이 없으므로 anlayzer는 특히 정규화 작업이 포함된 모델의 토큰화 도구로 부적합하다.

     

    Benefits of Morpheme-aware Subwords

    형태소 분해의 유용성에도 불구하고 많은 방법은 희귀하거나 잘 등장하지 않는 단어를 포함하는 강력한 어휘를 구축하는 동시에 어휘 크기의 상한선을 설정할 수 있는 subword tokenization 방식을 사요한다. 하지만 한중일 처럼 알파벳이 큰 언어의 경우, 알파벳의 크기 때문에 이러한 방식이 항상 필요한 것은 아니다. 특히 한국어의 경우 이러한 한계를 완화하기 위해 subword를 활용하는 일부 연구가 잇었지만 널리 채택되지 않았다. 띄어쓰기가 자유롭기 때문에 하위어 기반 알고리즘을 위한 어휘 학습의 복잡성이 증가할 수 있기 때문이다. multiligual을 위한 mBERT와 같은 선행 연구는 한중일 표의 문자 하위 단어를 문자 수준으로 접근해 이 문제를 해결했다. 그러나 이는 시퀀스 길이를 증가시킬 뿐 아니라 단일 문자가 매우 제한적인 정보만 나타내기 때문에 모델에 안좋은 영향을 미칠 수 있다. 또 mBERT에서 한국어의 경우 이 기법이 적용되지 않아 어휘를 벗어나는 비율이 높다. 다른 연구에서는 다른 각도로 이 문제를 다루고 있는데, 공백 사전 토큰화를(BERT와 마찬가지로) 형태소 수준의 토크나이저로 대체한 다음 subword 토크나이저를 학습한다. 사전 학습된 언어 모델을 사용한 전이 학습과 기계 번역에 모두 적용하면 성능이 향상된다고 한다. 이 방법에서는 공백 정보 손실을 해결하기 위해 인코딩 중 공백을 거의 사용하지 않는 유니코드 문자로 바꾸고, 디코딩 시 다시 공백으로 바꾼다. 설명했듯 정규화된 텍스트는 현재 라이브러리들로 재구성할 수 없다. 이러한 이유로 정규화된 텍스트를 재구성하지 않는 형태소 분석기를 사용하기도 한다.

     

    Resource Restrictions and Evaluation

    세종 코퍼스가 2006 공개된 이후로 거의 수정되지 않았고 제한적인 라이선스를 가지고 있어 외국인 연구자가 경쟁력 있는 형태소 분석기나 POS 태거를 학습하는 것은 어렵다. 이 제한으로 인해 평가에서 서로 다른 또는 수정된 코퍼스 하위 집합이 사용되었기 때문에 현재 서로 다른 라이브러리간에 공정한 비교는 불가능하다. 따라서 저자들은 커뮤니티에서 사용하고 개선할 수 있는 개방형 훈련 리소스가 없다면 이러한 추세는 계속될 것이라고 말한다.

     

     

    Proposed Method

    코퍼스 생성을 위해 기존 토크나이저를 활용하는 두가지 프로세스인 vote와 fill에 대해 설명한다. 이전 연구에서 새로운 어노테이션을 위해 기존 POS 태크 토퍼스를 채택하되, 다중 토크나이저가 아닌 오류 사례에 대한 규칙을 적용하는 것을 제안했다.

    이상적인 후보 토큰을 선택하는 저자들의 방법은, 컴퓨터 비전에서 사용하는 semantic segmantation task 에서 영감을 받았다. 이는 pointwiase label 할당과 유사하지만, 비전 작업은 2D 설정에서 동작하는 반면, nlp에서는 1D에서 동작한다. 주어진 문장에 대한 토큰과 POS 순서가 어떻게 결정되는지, 예외가 어떻게 처리되는지 설명한다. 전체 프로세스에서 공백과 탭을 포함한 공백 정보는 공백(SB)을 태그로 하는 seperate token으로 분할된다. 이 정보는 surface와 tag 모두에 대한 투표에 포함되있다.

     

    Vote for surface

    문장이 주어졌을 때, 토크나이저 i에 의한 surface의 set을 S_i라 하고 S_i의 entry를 (u,v)라 하며 u는 형태소의 첫번째 단어의 string index이며 v는 마지막 단어의 index이다. S를 마지막 sufrace의 set으로 두고 요소들을 선택하기 위해서 S_i의 union을 고려한다. 즉 M개의 토크나이저가 있을 때 모든 가능한 surface를 의미하고 weight function W에 의해 가장 높은 순에서 낮은 순으로 S를 정렬한다. S에서 (u,v)가 사전 정의된 surface와 중복되는 경우 할당하지 않는다.

     

    Vote for tag

    T_i는 surface와 마찬가지로 토크나이저 i가 태그한 POS들을 의미한다. 그리고 pos_{(u,v)}는 S_i에서 substring (u,v)에 해당하는 형태소를 따르는 POS tag이다. tag를 위한 weight W도 위와 비슷하게 계산되며 T_{(u,v)}를 위한 가장 큰 weight를 낳는 p = pos^*_(u,v)를 선택한다.

     

     

    Fill

    surface와 tag를 투표하고 sequence에서 S와 T의 결과로 채우는 작업이다. 만약 몇몇 (u,v)가 S에 없으면 (u,v)는 UNK에 대한 POS tag로 채운다. POS 결과에 일정량의 UNK가 포함되면 문장을 제거할 수있다. 이 부분은 알고리즘의 마지막 단계이므로 부분적으로 주석 처리된 데이터나 불완전한 주석 처리된 데이터를 이용해 해결할 수 있다. 

    저자들은 출력에서 UNK를 확인해 분쟁이 있는 문장을 감지하고자 하였다. 의견 불일치로 인해 토큰화가 많이 다르다면 이는 결국 UNK 빈도를 증가시킬 것으로 가정했다. 어떤 모델에서도 지원되지 않은 시놎어나 이상 현상을 식별하는 지표로 사용할 수 있을 것이다. 그러나 실시간 투표 기반 토큰화로 해당 방법을 사용할 경우 UNK가 바람직하지 않을 수 있다. 이 경우 유저들은 Union^M_{i=1} S_i \ S 사이에서 해당하는 문자열 (u,v) 중 정확한 일치도 또는 거리 측면에서 (u,v)와 가장 일치하는 (u,v)와 그 POS를 선택해 최종 태그를 결정할 수 있다.

    댓글

Designed by Tistory.