ShynBui commited on
Commit
a7b12ed
·
1 Parent(s): ed5fd92

add teen code def

Browse files
Files changed (1) hide show
  1. utils.py +52 -1
utils.py CHANGED
@@ -293,7 +293,8 @@ def homophone_replacement(text, error_rate=0.03, C=0.01):
293
  'v': 'b',
294
  'b': 'v',
295
  'ng': 'ngh',
296
- 'ngh': 'ng'
 
297
  }
298
 
299
  # Chuyển đổi văn bản thành danh sách từ để có thể thay thế từ
@@ -325,3 +326,53 @@ def homophone_replacement(text, error_rate=0.03, C=0.01):
325
 
326
  # Ghép các từ lại thành chuỗi văn bản
327
  return ' '.join(words)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  'v': 'b',
294
  'b': 'v',
295
  'ng': 'ngh',
296
+ 'ngh': 'ng',
297
+ 'v': 'z'
298
  }
299
 
300
  # Chuyển đổi văn bản thành danh sách từ để có thể thay thế từ
 
326
 
327
  # Ghép các từ lại thành chuỗi văn bản
328
  return ' '.join(words)
329
+
330
+
331
+ def common_misspelling_replacement(text, error_rate=0.03, C=0.01):
332
+ '''
333
+ :param text: Gồm 1 câu đúng chính tả
334
+ :param error_rate: tỷ lệ lỗi sai muốn thêm
335
+ :param C: hằng số để tính toán xác suất thay thế từ sai chính tả phổ biến
336
+ :return: Gồm 1 câu sai chính tả
337
+
338
+ Thực hiện thay thế từ bằng các phiên bản sai chính tả phổ biến.
339
+ - Tìm các từ có thể thay thế trước
340
+ - Sử dụng augmentation_probability để xác định liệu từ đó có bị thay thế hay không
341
+ '''
342
+
343
+ # Từ điển các từ đúng chính tả và các phiên bản sai chính tả phổ biến của chúng, teen code
344
+ common_misspellings = {
345
+ 'những': ['nhửng', 'nhừng'],
346
+ 'của': ['cuả', 'cũa'],
347
+ 'cái': ['cái', 'cã'],
348
+ 'giải': ['giãi', 'giải'],
349
+ 'pháp': ['pháp', 'fáp'],
350
+ 'đúng': ['dúng', 'đúng'],
351
+ 'rất': ['rất', 'rậc'],
352
+ 'sáng': ['sán', 'sáng'],
353
+ 'tạo': ['tạo', 'tạu']
354
+ }
355
+
356
+ # Chuyển đổi văn bản thành danh sách từ để có thể thay thế từ
357
+ words = text.split()
358
+
359
+ # Tìm các từ có thể thay thế
360
+ candidate_indices = [i for i, word in enumerate(words) if word in common_misspellings]
361
+
362
+ # Tính toán xác suất thay thế từ dựa trên error_rate sử dụng hàm logarit
363
+ augmentation_probability = C / math.log(error_rate + 1)
364
+
365
+ # Thực hiện thay thế từ tại các vị trí ngẫu nhiên
366
+ num_errors = int(len(candidate_indices) * error_rate)
367
+ for _ in range(num_errors):
368
+ if len(candidate_indices) > 0 and random.random() <= augmentation_probability:
369
+ index = random.choice(candidate_indices)
370
+ word = words[index]
371
+ # Chọn ngẫu nhiên một phiên bản sai chính tả từ từ điển
372
+ misspelled_word = random.choice(common_misspellings[word])
373
+ words[index] = misspelled_word
374
+ candidate_indices.remove(index) # Đảm bảo từ này không bị thay thế nhiều lần
375
+
376
+ # Ghép các từ lại thành chuỗi văn bản
377
+ return ' '.join(words)
378
+