허깅페이스
- 트랜스포머를 기반으로 다양한 모델과 학습 데이터, 학습 방법을 구현해 놓은 모듈
- 질의응답, 텍스트 분류, 텍스트 요약, 개체명 인식, 텍스트 생성, 번역, 언어 모델
!pip install transformers
import torch
from transformers import BertTokenizer, BertModel, BertForMaskedLM
tokenizer = BertTokenizer.from_pretrained('klue/bert-base')
text = '[CLS] 이순신은 누구입니까? [SEP] 16세기 말 조건의 명장이자 충무공이며 임진왜란 및 정유재란 당시 조선 수군을 지휘했던 제독이다. [SEP]'
tokenized_text = tokenizer.tokenize(text)
print(tokenized_text)
masked_index = 16
tokenized_text[masked_index] = '[MASK]'
print(tokenized_text)
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)
print(indexed_tokens)
segments_ids = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
token_tensor = torch.LongTensor([indexed_tokens])
segments_tensors = torch.LongTensor([segments_ids])
model = BertModel.from_pretrained('klue/bert-base')
model.eval()
tokens_tensor = tokens_tensor.to('cuda')
segments_tensors = segments_tensors.to('cuda')
model.to('cuda')
with torch.no_grad():
outputs = model(tokens_tensor, token_type_ids = segments_tensors)
encoded_layers = outputs[0]
print(encoded_layers)
print(encoded_layers.shape)
predicted_index = torch.argmax(encoded_layers[0, masked_index]).item()
print(predicted_index)
predicted_token = tokenizer.convert_ids_to_tokens([predicted_index])[0]
print(predicted_token)
model = BertForMaskedLM.from_pretrained('klue/bert-base')
model.eval()
tokens_tensor = tokens_tensor.to('cuda')
segments_tensors = segments_tensors.to('cuda')
model.to('cuda')
with torch.no_grad():
outputs = model(tokens_tensor, token_type_ids=segments_tensors)
encoded_layers = outputs[0]
predicted_index = torch.argmax(encoded_layers[0, masked_index]).item()
print(predicted_index)
predicted_token = tokenizer.convert_ids_to_tokens([predicted_index])[0]
print(predicted_token)