pip install kiwipiepy
import kiwipiepy
from tokenizers import Tokenizer
from tokenizers.models import BPE ## sentencepiece의 경우 Unigram
from tokenizers.trainers import BpeTrainer
from tqdm import tqdm
kiwi = kiwipiepy.Kiwi()
kiwi.prepare()
def tokenize(text):
result = kiwi.analyze(text)
tokens = []
for r in result:
for w in r[0]:
tokens.append(w.form)
return tokens
tokenizer = Tokenizer(BPE())
# 학습에 사용할 텍스트 데이터
with open("data.txt", "r", encoding="utf-8") as f:
text = f.read()
text = list(text.split('\n'))
token_lst = []
for t in tqdm(text, total=len(text)):
tokens = tokenize(t)
token_lst.extend(tokens)
# 분리된 형태소 토큰에 대해 bpe 모델로 vocab 학습
trainer = BpeTrainer(special_tokens=["<s>", "<pad>", "</s>", "<unk>", "<mask>"])
tokenizer.train_from_iterator(tokens, trainer)
tokenizer.save("vocab.json")
'난산은 자궁이 정상 수축함에도 태아가 분만 중에 물리적인 차단으로 인해 골반을 빠져나오지 못하는 상황을 말한다. 태아의 합병증에는 사망에 이를 수 있는 출산 중 태아 질식이 포함된다. 감염, 자궁파열, 분만 후 출혈 등 산모의 위험을 증가시킨다. 산모의 장기간 합병증에는 산과 누공이 포함된다.'
['난산', '은', '자궁', '이', '정상', '수축', '하', 'ᆷ', '에', '도', '태아', '가', '분만', '중', '에', '물리', '적', '이', 'ᆫ', '차단', '으로', '인하', '어', '골반', '을', '빠지', '어', '나오', '지', '못하', '는', '상황', '을', '말', '하', 'ᆫ다', '.', '태아', '의', '합병증', '에', '는', '사망', '에', '이르', 'ᆯ', '수', '있', '는', '출산', '중', '태아', '질식', '이', '포함', '되', 'ᆫ다', '.', '감염', ',', '자궁', '파열', ',', '분만', '후', '출혈', '등', '산모', '의', '위험', '을', '증가', '시키', 'ᆫ다', '.', '산모', '의', '장기간', '합병증', '에', '는', '산', '과', '누공', '이', '포함', '되', 'ᆫ다', '.']