1. 패키지 설치¶
In [1]:
!pip install sentencepiece
2. 필요한 패키지 load¶
In [2]:
import pandas as pd
import numpy as np
import sentencepiece as spm
3. 데이터 읽어 들이기¶
사용한 데이터셋은 Naver sentiment movie corpus v1.0의 ratings_test.txt를 사용했습니다.
In [3]:
df = pd.read_csv('~/data/ratings_test.txt', delimiter='\t')
In [4]:
df.head()
Out[4]:
4. 모델 생성을 위한 학습데이터 생성¶
In [5]:
input_file = 'input_data.txt'
with open(input_file, 'w', encoding='utf-8') as f:
for x in df['document']:
f.write('{}\n'.format(x))
import sentencepiece as spm
templates = '--input={} --model_prefix={} --vocab_size={}'
input_file = 'input_data.txt'
vocab_size = 3000
prefix = 'naver_movie_review'
cmd = templates.format(input_file, prefix, vocab_size)
spm.SentencePieceTrainer.Train(cmd)
...
unigram_model_trainer.cc(486) LOG(INFO) EM sub_iter=1 size=2823 obj=19.0172 num_tokens=635242 num_tokens/piece=225.024
unigram_model_trainer.cc(486) LOG(INFO) EM sub_iter=0 size=2200 obj=20.13 num_tokens=684863 num_tokens/piece=311.301
unigram_model_trainer.cc(486) LOG(INFO) EM sub_iter=1 size=2200 obj=19.8178 num_tokens=685812 num_tokens/piece=311.733
trainer_interface.cc(507) LOG(INFO) Saving model: naver_movie_review.model
trainer_interface.cc(531) LOG(INFO) Saving vocabs: naver_movie_review.vocab
6. 학습된 모델을 load¶
In [6]:
prefix = 'naver_movie_review'
sp = spm.SentencePieceProcessor()
sp.Load('{}.model'.format(prefix))
Out[6]:
7. 결과 테스트¶
In [7]:
reviewStr = df.document[11]
print('--- 문장 원문 --- ')
print(reviewStr)
### subword로 변환
print('--- subword로 변환 --- ')
print(sp.EncodeAsPieces(reviewStr))
### subword id로 변환
print('--- subword id로 변환 --- ')
print(sp.EncodeAsIds(reviewStr))
8. 모든 데이터를 id 형태로 변환¶
In [8]:
total_data = np.array(df['document'].apply(lambda x: sp.EncodeAsIds(str(x))))
In [9]:
total_data
Out[9]:
댓글 없음:
댓글 쓰기