버트는 문장을 구별하기 위해 1과 0을 사용합니다. 즉, 문장이 바뀔 때마다 0에서 1로 바뀌고, 또다시 문장이 바뀌면 1에서 0으로 바뀝니다. 예를 들어 [0, 0, 1, 1, 1, 0, 0, 0]이라는 결과가 있다면 이것은 세 개의 문장으로 구성되었음을 의미합니다.
예제에서는 하나의 문장으로 인식시키기 위해 33개의 토큰에 벡터 1을 부여합니다.
코드 10-55 문장 인식 단위 지정
segments_ids = [1] * len(tokenized_text)
print(segments_ids)
다음은 각각의 토큰에 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, 1, 1, 1, 1, 1, 1]
인덱스와 토크나이징 결과를 텐서로 변환합니다.
코드 10-56 데이터를 텐서로 변환
tokens_tensor = torch.tensor([indexed_tokens])
segments_tensors = torch.tensor([segments_ids])
사전 훈련된 버트 모델을 내려받습니다. 특히 한국어 훈련을 위해 ‘bert-base-multilingual-cased’ 모델을 내려받습니다.
코드 10-57 모델 생성
model = BertModel.from_pretrained('bert-base-multilingual-cased', output_hidden_states=True) ------ ①
model.eval() ------ 모델을 평가 모드로 설정