SentencePiece를 활용한 효과적인 한국어 토크나이저 만들기

소개

자연어 문장을 컴퓨터가 쉽게 이해하게 만들기 위해서는 다양한 전처리 과정을 거쳐야합니다.
그 중 하나로 문장을 토큰 단위로 쪼개서 처리하는 토크나이징 기법이 있습니다.
오늘은 SentencePiece를 활용하여 한국어 텍스트를 효과적으로 토크나이징 하는 방법을 소개합니다.

SentencePiece는 Google에서 2018년도에 공개한 오픈소스 라이브러리로, 다양한 자연어처리 태스크에서 널리 사용되고 있습니다.
최근에는 Huggingface에서 공개한 Tokenizers도 자주 사용되고 있지만 오늘은 Sentencepiece에 대한 내용을 주로 다루도록 하겠습니다.

텍스트 전처리 과정 예시

데이터 전처리 예시
텍스트 데이터를 모델이 이해하는 벡터로 바꾸려면 다양한 전처리 과정을 거치게 됩니다. 오늘 다루는 주제는 이중에서도 가장 앞단에 있는 텍스트를 토큰 단위로 쪼개는(Split) 전처리 과정을 다룹니다. 오른쪽 그림은 "히어로 무비 중 가장 어둡지만 가장 참신했다." 라는 문장을 벡터로 변환하는 과정입니다. 텍스트 문장은 word, character, 형태소, subword (char, byte)등 다양한 방법으로 쪼개서 처리될 수 있습니다. image

설치방법

  • pyenv를 통해 sentencepiece를 설치할 환경을 구성합니다
  • 작성시점 기준 비교적 최신인 3.11.x 버전을 설치해줍니다
  • 설치는 pyenv 기준으로 진행하겠습니다 (MacOS 환경입니다)
자세히 보기

Towards a Human-like Open-Domain Chatbot

Author

  • 저자:
    • Daniel Adiwardana, Minh-Thang Luong, David R. So, Jamie Hall, Noah Fiedel, Romal Thoppilan, Zi Yang, Apoorv Kulshreshtha, Gaurav Nemade, Yifeng Lu, Quoc V. Le (Google Research, Brain Team)

Who is an Author?

{: height=”50%” width=”50%”}

느낀점

  • 일단 논문이 꽤 길다
  • 모델쪽보단 automatic evaluation metric을 제안했다는것에 은근 더 중점을 맞추는 느낌
  • 모델쪽 얘기는 Evolved Transformer논문을 더 봐야할듯
  • 뭐랄까.. 설명이 많고 장황한 논문이다. 새로운 개념을 정의하는게 많은 논문임. 제안하는 개념이 필요한 이유등을 주로 설명함.
  • Metric + large scale + tip이 본 논문의 주요 contribution인듯 modeling적인 부분은 별로 기술되어있지 않음
자세히 보기