Đinh Trác Đức Anh commited on
Commit
50f5d14
·
1 Parent(s): 41489bc

fix <unk> case

Browse files
Files changed (1) hide show
  1. tokenizer.py +22 -3
tokenizer.py CHANGED
@@ -159,8 +159,10 @@ class MorphemeAwareTokenizer(AutoTokenizer):
159
  """
160
  Align BMES tags với subwords, xử lý các trường hợp:
161
  - Dấu câu dính với chữ (vd: 'c.', '3.')
162
- - Ký tự đặc biệt <unk>
163
  - Subword splitting phức tạp
 
 
164
  """
165
  aligned_tags = []
166
  syll_idx = 0
@@ -172,8 +174,25 @@ class MorphemeAwareTokenizer(AutoTokenizer):
172
  sub = subwords_list[i]
173
 
174
  # Special tokens - luôn tag là 'S'
175
- if sub in ["<s>", "</s>", "<pad>", "<unk>", "<mask>"]:
 
 
 
 
 
 
 
 
176
  aligned_tags.append("S")
 
 
 
 
 
 
 
 
 
177
  i += 1
178
  continue
179
 
@@ -322,4 +341,4 @@ class MorphemeAwareTokenizer(AutoTokenizer):
322
  bmes_tags = torch.tensor([BMES_MAP[t] for t in bmes_tags]).unsqueeze(0)
323
 
324
  encoded['bmes_tags'] = bmes_tags
325
- return encoded
 
159
  """
160
  Align BMES tags với subwords, xử lý các trường hợp:
161
  - Dấu câu dính với chữ (vd: 'c.', '3.')
162
+ - Ký tự đặc biệt, <unk> tokens
163
  - Subword splitting phức tạp
164
+
165
+ 🔧 FIX: Xử lý <unk> token bằng cách skip nó và tiếp tục alignment
166
  """
167
  aligned_tags = []
168
  syll_idx = 0
 
174
  sub = subwords_list[i]
175
 
176
  # Special tokens - luôn tag là 'S'
177
+ if sub in ["<s>", "</s>", "<pad>", "<mask>"]:
178
+ aligned_tags.append("S")
179
+ i += 1
180
+ continue
181
+
182
+ # 🔧 XỬ LÝ <unk> TOKEN
183
+ if sub == "<unk>":
184
+ # <unk> token là biểu diễn của 1 ký tự không được vocab nhận diện
185
+ # Gán tag 'S' cho nó và bỏ qua 1 syllable trong bmes_list nếu có
186
  aligned_tags.append("S")
187
+
188
+ # Nếu còn syllable, skip nó vì đã được thay thế bằng <unk>
189
+ if syll_idx < len(bmes_list):
190
+ syll_idx += 1
191
+
192
+ # Reset buffer để tránh cascade errors
193
+ buffer_raw = ""
194
+ subword_positions = []
195
+
196
  i += 1
197
  continue
198
 
 
341
  bmes_tags = torch.tensor([BMES_MAP[t] for t in bmes_tags]).unsqueeze(0)
342
 
343
  encoded['bmes_tags'] = bmes_tags
344
+ return encoded