Google Github에 Word Piece Model package인 sentencepiece라는 코드(C++)가 공개되었다. 파이썬에서는 subprocess로 띄워 실행할 수 있다.
설치는 pip install 로 가능하다.
아래는 하위의 articles라는 디렉터리에 *.txt 파일들을 읽어와 학습하는 예제이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # sentencepiece test #!pip install sentencepiece import os import sentencepiece as spm from datetime import datetime fns = [] # 학습데이터 경로 prefix = 'data' # vocabulary size, e.g., 8000, 16000, or 32000 vocab_size = 32000 dir_name = 'articles' for fn in os.listdir(dir_name): nm, ext = os.path.splitext(fn) if ext == '.txt': fns.append(os.path.join(dir_name, fn)) fns_txt = ','.join(fns) cmd = '--input={} --model_prefix={} --vocab_size={}'.format(fns_txt, prefix, vocab_size) st = datetime.now() spm.SentencePieceTrainer.Train(cmd) et = datetime.now() print('#학습완료: {}'.format(et - st)) |
spm_train명령의 command-options은 여기를 참고.
이후 prefix로 지정된 파일이 생긴다. → data.model & data.vocab
이제 다음과 같이 모델파일을 불러온다.
1 2 | sp = spm.SentencePieceProcessor() sp.Load('{}.model'.format(prefix)) # data.model |
이제, 다음과 같이 테스트해 볼 수 있다.
1 2 | sp.EncodeAsPieces('스포츠브라 브라탑 스포츠브라탑 운동용브라 운동브라') #> ['▁스포츠브라', '▁브라탑', '▁스포츠', '브라탑', '▁운동용', '브라', '▁운동', '브라'] |
댓글 없음:
댓글 쓰기