1) BERTWordPieceTokenizer는 mask 안해준다 직접 해야된다. mask 해주는거 찾으면 알려달라
BERTWordPieceTokenizer가 [sep]이랑 [cls]는 붙여준다
→ pretrained tokenizer 가져오기 위해서 있는듯 함
Using a pretrained tokenizer
You can also use a pretrained tokenizer directly in, as long as you have its vocabulary file. For instance, here is how to get the classic pretrained BERT tokenizer:
**from** **tokenizers** **import** BertWordPieceTokenizer tokenizer = BertWordPieceTokenizer("bert-base-uncased-vocab.txt", lowercase=**True**)
2) mecab → sentencepiece :
mecab으로 자르고 잘라진 부분에 ##을 붙이자 : 나 ##는 밥 ##을 먹 ##었다
그다음에 sentencepiece를 학습하자
이후에 ##으로 자르자
그러면 나##는 처럼 자주 등장하지만 조사를 분리할 수 있다
3) BERT의 segment A와 segment B는 문장단위다.
Throughout this work, a “sentence” can be an arbitrary span of contiguous text, rather than an actual linguistic sentence → 여기에 낚였는데 SQuAD같은 task에서 A가 문단이 되고 B는 단어가 될 수 있다는 뜻이었음..
예를 들어 max_seq_len가 512라고 하자.
문장 A가 400이고 문장 B가 200이면 문장 B에서 112개까지만 자르는거다
만약 문장 A가 16이고 문장 B가 16이면 A,B 문장합쳐서 32이고 배치에 따라 패딩이 붙는거다.
3-1) BERT에서 input의 길이가 같을 필요 없다! 배치 단위로 max_len으로 패딩하면 된다!
4) mask, random, remain은 확률로 15%가 아니라 sentence별로 무조건 15%로 나와야 한다.
5) [CLS]랑 [SEP]은 MASK 되면 안된다
6) 포지션 임베딩을 위한 postion_ids가 dataset에 굳이 필요없는듯 하다