bongsoo commited on
Commit
1f14af8
·
1 Parent(s): b3de27a

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +54 -1
README.md CHANGED
@@ -13,6 +13,56 @@ tags:
13
  - **vocab: 152,537개**(기존 bert 모델 vocab(119,548개)에 32,989개 vocab 추가)
14
 
15
  ## Usage (HuggingFace Transformers)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  - 평균 폴링(mean_pooling) 방식 사용. ([cls 폴링](https://huggingface.co/sentence-transformers/bert-base-nli-cls-token), [max 폴링](https://huggingface.co/sentence-transformers/bert-base-nli-max-tokens))
17
 
18
  ```python
@@ -54,7 +104,10 @@ cosine_scores = 1 - (paired_cosine_distances(sentence_embeddings[0].reshape(1,-1
54
 
55
  print(f'*cosine_score:{cosine_scores[0]}')
56
  ```
57
-
 
 
 
58
  ## Training
59
 
60
  **MLM(Masked Langeuage Model) 훈련**
 
13
  - **vocab: 152,537개**(기존 bert 모델 vocab(119,548개)에 32,989개 vocab 추가)
14
 
15
  ## Usage (HuggingFace Transformers)
16
+
17
+ ### 1. MASK 예시
18
+ ```python
19
+ from transformers import AutoTokenizer, AutoModel, BertForMaskedLM
20
+ import torch
21
+ import torch.nn.functional as F
22
+
23
+ tokenizer = AutoTokenizer.from_pretrained('bongsoo/mbertV2.0', do_lower_case=False)
24
+ model = BertForMaskedLM.from_pretrained('bongsoo/mbertV2.0')
25
+
26
+ text = ['한국의 수도는 [MASK] 이다', '에펠탑은 [MASK]에 있다', '충무공 이순신은 [MASK]에 최고의 장수였다']
27
+ tokenized_input = tokenizer(text, max_length=128, truncation=True, padding='max_length', return_tensors='pt')
28
+
29
+ outputs = model(**tokenized_input)
30
+ logits = outputs.logits
31
+
32
+ mask_idx_list = []
33
+ for tokens in tokenized_input['input_ids'].tolist():
34
+ token_str = [tokenizer.convert_ids_to_tokens(s) for s in tokens]
35
+
36
+ # **위 token_str리스트에서 [MASK] 인덱스를 구함
37
+ # => **해당 [MASK] 안덱스 값 mask_idx 에서는 아래 출력하는데 사용됨
38
+ mask_idx = token_str.index('[MASK]')
39
+ mask_idx_list.append(mask_idx)
40
+
41
+ for idx, mask_idx in enumerate(mask_idx_list):
42
+
43
+ logits_pred=torch.argmax(F.softmax(logits[idx]), dim=1)
44
+ mask_logits_idx = int(logits_pred[mask_idx])
45
+ # [MASK]에 해당하는 token 구함
46
+ mask_logits_token = tokenizer.convert_ids_to_tokens(mask_logits_idx)
47
+ # 결과 출력
48
+ print('\n')
49
+ print('*Input: {}'.format(text[idx]))
50
+ print('*[MASK] : {} ({})'.format(mask_logits_token, mask_logits_idx))
51
+ ```
52
+ - 결과
53
+ ```
54
+ *Input: 한국의 수도는 [MASK] 이다
55
+ *[MASK] : 서울 (48253)
56
+
57
+
58
+ *Input: 에펠탑은 [MASK]에 있다
59
+ *[MASK] : 런던 (120350)
60
+
61
+
62
+ *Input: 충무공 이순신은 [MASK]에 최고의 장수였다
63
+ *[MASK] : 조선 (59906)
64
+ ```
65
+ ### 2. 임베딩 예시
66
  - 평균 폴링(mean_pooling) 방식 사용. ([cls 폴링](https://huggingface.co/sentence-transformers/bert-base-nli-cls-token), [max 폴링](https://huggingface.co/sentence-transformers/bert-base-nli-max-tokens))
67
 
68
  ```python
 
104
 
105
  print(f'*cosine_score:{cosine_scores[0]}')
106
  ```
107
+ - 결과
108
+ ```
109
+ *cosine_score:0.5596463680267334
110
+ ```
111
  ## Training
112
 
113
  **MLM(Masked Langeuage Model) 훈련**