로딩...
natural-language-processing-with-transformer|트랜스포머를 활용한 자연어 처리
생각해볼 문제
- 날짜에 대한 임베딩을 하게되는경우 토큰화가 어떻게 이루어지는에 맞춰서 서식을 정해야한다
개념
one hot vector
Bumblebee | Megatron | optimus Prime | |
---|---|---|---|
0 | 1 | 0 | 0 |
0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 |
- 종류만큼(여기선 3)의 길이를 가지며 하나만 1로 세팅
dataset
- 훈련/테스트 분할 전에 샘플링 하지말 것
code snippet
# set format to pandas
emotions.set_format(type="pandas")
df = emotions['train'][:]
df.head()
# reset format
emotions.reset_format()
# convert classlabel to string
df['label-name'] = emotions['train'].features['label'].int2str(row)
# draw bar h
df['label-name'].value_counts(ascending=True).plot.barh()
plt.title('Frequency of Classes')
plt.show()
# create dataframe from scratch
categorical df = pd.DataFrame(
{"Name": [''Bumblebee", "Optimus Prime", "Megatron''], "Label ID": [0,1,2]}
)
# p62, 문자 단위 토큰화 one hot encoding 예제
input_ids = [5,14,12,8,13,11,19,11,13,10,0,17,8,18, 17, 0, 11, 16, 0, 6, 0, 7, 14, 15, 8, 0, 17, 6, 16, 12, 0, 14, 9, 0, 3, 2, 4, 1] =
input_ids = torch.tensor(input_ids)
one_hot_encodings = F.one_hot(input_ids, num_classes=len(tokenZidx))
## `num_classes` 를 입력하지 않으면 `input_ids` 의 정수중 가장 큰수 + 1 로 설정되기 때문에 필수적으로 세팅이 필요하다
one_hot_encodings.shape # torch.Size([38, Z0])