add teen code def
Browse files
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 |
+
|