模型:

snunlp/KR-BERT-char16424

英文

韩国基于BERT预训练模型 (KR-BERT)

这是首尔国立大学计算语言学实验室开发的针对韩语的小规模BERT模型的发布版本,其性能与其他模型相当甚至更好,详见文献 KR-BERT: A Small-Scale Korean-Specific Language Model

字汇、参数和数据

Mulitlingual BERT (Google) KorBERT (ETRI) KoBERT (SKT) KR-BERT character KR-BERT sub-character
vocab size 119,547 30,797 8,002 16,424 12,367
parameter size 167,356,416 109,973,391 92,186,880 99,265,066 96,145,233
data size - (The Wikipedia data for 104 languages) 23GB 4.7B morphemes - (25M sentences, 233M words) 2.47GB 20M sentences, 233M words 2.47GB 20M sentences, 233M words
Model Masked LM Accuracy
KoBERT 0.750
KR-BERT character BidirectionalWordPiece 0.779
KR-BERT sub-character BidirectionalWordPiece 0.769

亚字符

韩语文本基本上由韩语音节字符表示,可以分解为亚字符或字形素。为了适应这种特性,我们在两种不同的语料表示法(音节字符和亚字符)上训练了一个新的词汇表和BERT模型。

如果要使用我们的亚字符模型,请使用以下代码对数据进行预处理。

import torch
from transformers import BertConfig, BertModel, BertForPreTraining, BertTokenizer
from unicodedata import normalize

tokenizer_krbert = BertTokenizer.from_pretrained('/path/to/vocab_file.txt', do_lower_case=False)

# convert a string into sub-char
def to_subchar(string):
    return normalize('NFKD', string)

sentence = '토크나이저 예시입니다.'
print(tokenizer_krbert.tokenize(to_subchar(sentence)))

分词

双向WordPiece分词器

我们使用双向WordPiece模型来降低搜索成本,同时保持选择的可能性。该模型在前向和后向方向上应用BPE算法,得到两个候选项,并选择频率更高的那个。

Mulitlingual BERT KorBERT character KoBERT KR-BERT character WordPiece KR-BERT character BidirectionalWordPiece KR-BERT sub-character WordPiece KR-BERT sub-character BidirectionalWordPiece
냉장고 nayngcangko "refrigerator" 냉#장#고 nayng#cang#ko 냉#장#고 nayng#cang#ko 냉#장#고 nayng#cang#ko 냉장고 nayngcangko 냉장고 nayngcangko 냉장고 nayngcangko 냉장고 nayngcangko
춥다 chwupta "cold" [UNK] 춥#다 chwup#ta 춥#다 chwup#ta 춥#다 chwup#ta 춥#다 chwup#ta 추#ㅂ다 chwu#pta 추#ㅂ다 chwu#pta
뱃사람 paytsalam "seaman" [UNK] 뱃#사람 payt#salam 뱃#사람 payt#salam 뱃#사람 payt#salam 뱃#사람 payt#salam 배#ㅅ#사람 pay#t#salam 배#ㅅ#사람 pay#t#salam
마이크 maikhu "microphone" 마#이#크 ma#i#khu 마이#크 mai#khu 마#이#크 ma#i#khu 마이크 maikhu 마이크 maikhu 마이크 maikhu 마이크 maikhu

模型

TensorFlow PyTorch
character sub-character character sub-character
WordPiece tokenizer 1234321 1235321 1236321 1237321
Bidirectional WordPiece tokenizer 1238321 1239321 12310321 12311321

要求

  • transformers == 2.1.1
  • tensorflow < 2.0

下游任务

Naver情感电影语料库 (NSMC)

  • 如果您想使用我们模型的亚字符版本,请将 subchar 参数设置为 True 。

  • 如果您想使用原始的BERT WordPiece分词器,请将 tokenizer 参数设置为 bert ,如果您想使用我们的双向WordPiece分词器,请将其设置为 ranked 。

  • tensorflow: 在下载我们的预训练模型后,将它们放在 krbert_tensorflow 目录下的 models 目录中。

  • pytorch: 在下载我们的预训练模型后,将它们放在 krbert_pytorch 目录下的 pretrained 目录中。

# pytorch
python3 train.py --subchar {True, False} --tokenizer {bert, ranked}

# tensorflow
python3 run_classifier.py \
  --task_name=NSMC \
  --subchar={True, False} \
  --tokenizer={bert, ranked} \
  --do_train=true \
  --do_eval=true \
  --do_predict=true \
  --do_lower_case=False\
  --max_seq_length=128 \
  --train_batch_size=128 \
  --learning_rate=5e-05 \
  --num_train_epochs=5.0 \
  --output_dir={output_dir}

pytorch代码结构参考文献 https://github.com/aisolab/nlp_implementation

NSMC准确率

multilingual BERT KorBERT KoBERT KR-BERT character WordPiece KR-BERT character Bidirectional WordPiece KR-BERT sub-character WordPiece KR-BERT sub-character Bidirectional WordPiece
pytorch - 89.84 89.01 89.34 89.38 89.20 89.34
tensorflow 87.08 85.94 n/a 89.86 90.10 89.76 89.86

引用

如果您使用了这些模型,请引用以下论文:

@article{lee2020krbert,
    title={KR-BERT: A Small-Scale Korean-Specific Language Model},
    author={Sangah Lee and Hansol Jang and Yunmee Baik and Suzi Park and Hyopil Shin},
    year={2020},
    journal={ArXiv},
    volume={abs/2008.03979}
  }

联系方式

nlp.snu@gmail.com