Pre-trained BERT embedding
기본적으로 Pytorch bert 코드: https://github.com/huggingface/pytorch-pretrained-BERT에 설명이 되어 있다.
영어인 경우는 bert-large-cased 모델을 써서 하면 된다.
한국어에 적용을 해볼 때 multilingual 버전을 써야 한다. 이 때 bert-base-multilingual-cased(recommend version)을 써서 embedding하면 tokenization이 안된다. 안되다는 것이 token들이 다 <unk>처리가 된다.
bert-base-multilingual-uncased 버전을 사용하면 tokenization이 되긴 하는데 제대로 되는 느낌이 아니다.(안녕하세요? -> ㅇ ㅏㄴ ㄴ ㅕㅇ ... 이런느낌)
이에 대한 문제는 이미 누군가 시도를 하였고 https://github.com/google-research/bert/pull/228/files 대로 수정해주면 제대로 작동한다.(단 수정하고나면 반대로 uncased가 안됨)
근데 multilingual이라 그런지 제대로 된 tokenization 느낌은 아니고 하나의 글자, 띄어쓰기 단위로 대부분 되는 느낌이 있다.
Code에 보면 vocab.txt는 밑의 사이트에서 다운받을 수 있다.
"https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-multilingual-cased-vocab.txt"
논문에서는 wordpiece model을 썼다고 하므로 pre-trained 시킬 때의 vocab을 이용하여 만들어진 tokenization일 것이고 즉 다른 tokenization을 가져와서 pre-trained bert model에 넣을 수는 없다.
따라서 정말로 제대로 한국어에 맞게 하려면, (한국어 최적화 tokenizaion+bert model) 학습을 해놔야 될 것이라 생각된다.
영어인 경우는 bert-large-cased 모델을 써서 하면 된다.
한국어에 적용을 해볼 때 multilingual 버전을 써야 한다. 이 때 bert-base-multilingual-cased(recommend version)을 써서 embedding하면 tokenization이 안된다. 안되다는 것이 token들이 다 <unk>처리가 된다.
bert-base-multilingual-uncased 버전을 사용하면 tokenization이 되긴 하는데 제대로 되는 느낌이 아니다.(안녕하세요? -> ㅇ ㅏㄴ ㄴ ㅕㅇ ... 이런느낌)
이에 대한 문제는 이미 누군가 시도를 하였고 https://github.com/google-research/bert/pull/228/files 대로 수정해주면 제대로 작동한다.(단 수정하고나면 반대로 uncased가 안됨)
근데 multilingual이라 그런지 제대로 된 tokenization 느낌은 아니고 하나의 글자, 띄어쓰기 단위로 대부분 되는 느낌이 있다.
Code에 보면 vocab.txt는 밑의 사이트에서 다운받을 수 있다.
"https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-multilingual-cased-vocab.txt"
논문에서는 wordpiece model을 썼다고 하므로 pre-trained 시킬 때의 vocab을 이용하여 만들어진 tokenization일 것이고 즉 다른 tokenization을 가져와서 pre-trained bert model에 넣을 수는 없다.
따라서 정말로 제대로 한국어에 맞게 하려면, (한국어 최적화 tokenizaion+bert model) 학습을 해놔야 될 것이라 생각된다.
댓글
댓글 쓰기