update character_replacement methods
Browse files- __pycache__/utils.cpython-310.pyc +0 -0
- app.py +4 -3
- flagged/log.csv +3 -0
- utils.py +129 -5
__pycache__/utils.cpython-310.pyc
ADDED
|
Binary file (5.33 kB). View file
|
|
|
app.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
| 1 |
import gradio as gr
|
|
|
|
| 2 |
|
| 3 |
-
def
|
| 4 |
-
|
| 5 |
|
| 6 |
-
demo = gr.Interface(fn=
|
| 7 |
demo.launch()
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
+
from utils import *
|
| 3 |
|
| 4 |
+
def final_resul(text):
|
| 5 |
+
text = character_replacement(text, num_errors=3)
|
| 6 |
|
| 7 |
+
demo = gr.Interface(fn=final_resul, inputs="text", outputs="text")
|
| 8 |
demo.launch()
|
flagged/log.csv
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
text,output,flag,username,timestamp
|
| 2 |
+
cgibn,,,,2024-07-13 00:12:58.591221
|
| 3 |
+
cgibn,,,,2024-07-13 00:13:00.941699
|
utils.py
CHANGED
|
@@ -1,7 +1,131 @@
|
|
| 1 |
-
import
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
-
def greet(name):
|
| 4 |
-
return "Hello " + name + "!!"
|
| 5 |
|
| 6 |
-
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
|
| 7 |
-
demo.launch()
|
|
|
|
| 1 |
+
import pandas as pd
|
| 2 |
+
import numpy as np
|
| 3 |
+
|
| 4 |
+
import random
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def character_replacement(text, num_errors=1):
|
| 8 |
+
|
| 9 |
+
'''
|
| 10 |
+
|
| 11 |
+
:param text: Gồm 1 câu đúng chính tả
|
| 12 |
+
:param num_errors: số lượng lỗi sai muốn thêm
|
| 13 |
+
:return: Gồm 1 câu sai chính tả
|
| 14 |
+
|
| 15 |
+
Bàn phím QWERTY tiếng Việt:
|
| 16 |
+
|
| 17 |
+
Tạo một từ điển (keyboard) chứa các ký tự và các ký tự gần đó trên bàn phím. Ví dụ, ký tự 'a' có thể được thay thế bằng 'â', 'ă', 'á',...
|
| 18 |
+
Chuyển đổi văn bản thành danh sách ký tự:
|
| 19 |
+
|
| 20 |
+
Sử dụng list(text) để chuyển chuỗi văn bản thành danh sách các ký tự riêng lẻ. Điều này giúp dễ dàng thay thế từng ký tự.
|
| 21 |
+
Chọn ngẫu nhiên các vị trí để thay thế ký tự:
|
| 22 |
+
|
| 23 |
+
Sử dụng random.sample để chọn ngẫu nhiên num_errors vị trí trong văn bản. Điều này giúp tạo ra các lỗi chính tả ngẫu nhiên và đa dạng.
|
| 24 |
+
Thực hiện thay thế ký tự:
|
| 25 |
+
|
| 26 |
+
Với mỗi vị trí đã chọn, kiểm tra nếu ký tự đó có trong từ điển keyboard. Nếu có, chọn ngẫu nhiên một ký tự từ các ký tự gần đó trên bàn phím.
|
| 27 |
+
Giữ nguyên kiểu chữ hoa hoặc chữ thường của ký tự gốc.
|
| 28 |
+
Ghép lại thành chuỗi văn bản:
|
| 29 |
+
|
| 30 |
+
Sử dụng ''.join(text) để ghép danh sách các ký tự lại thành chuỗi văn bản hoàn chỉnh.
|
| 31 |
+
|
| 32 |
+
'''
|
| 33 |
+
# Bàn phím QWERTY tiếng Việt
|
| 34 |
+
keyboard = {
|
| 35 |
+
'a': 'âăáàạảãấầậẩẫắằặẳẵ',
|
| 36 |
+
'â': 'aăáàạảãấầậẩẫắằặẳẵ',
|
| 37 |
+
'ă': 'aâáàạảãấầậẩẫắằặẳẵ',
|
| 38 |
+
'á': 'aâăàạảãấầậẩẫắằặẳẵ',
|
| 39 |
+
'à': 'aâăáạảãấầậẩẫắằặẳẵ',
|
| 40 |
+
'ạ': 'aâăáàảãấầậẩẫắằặẳẵ',
|
| 41 |
+
'ả': 'aâăáàạãấầậẩẫắằặẳẵ',
|
| 42 |
+
'ã': 'aâăáàạảấầậẩẫắằặẳẵ',
|
| 43 |
+
'â': 'aăáàạảãấầậẩẫắằặẳẵ',
|
| 44 |
+
'b': 'v',
|
| 45 |
+
'c': 'x',
|
| 46 |
+
'd': 'đ',
|
| 47 |
+
'đ': 'd',
|
| 48 |
+
'e': 'êéèẹẻẽếềệểễ',
|
| 49 |
+
'ê': 'eéèẹẻẽếềệểễ',
|
| 50 |
+
'é': 'eêèẹẻẽếềệểễ',
|
| 51 |
+
'è': 'eêéẹẻẽếềệểễ',
|
| 52 |
+
'ẹ': 'eêéèẻẽếềệểễ',
|
| 53 |
+
'ẻ': 'eêéèẹẽếềệểễ',
|
| 54 |
+
'ẽ': 'eêéèẹẻếềệểễ',
|
| 55 |
+
'ế': 'eêéèẹẻẽềệểễ',
|
| 56 |
+
'ề': 'eêéèẹẻẽếệểễ',
|
| 57 |
+
'ệ': 'eêéèẹẻẽếềểễ',
|
| 58 |
+
'ể': 'eêéèẹẻẽếềệễ',
|
| 59 |
+
'ễ': 'eêéèẹẻẽếềệ',
|
| 60 |
+
'f': 'r',
|
| 61 |
+
'g': 'h',
|
| 62 |
+
'h': 'g',
|
| 63 |
+
'i': 'ìíỉĩị',
|
| 64 |
+
'í': 'iìỉĩị',
|
| 65 |
+
'ì': 'iíỉĩị',
|
| 66 |
+
'ỉ': 'iíìĩị',
|
| 67 |
+
'ĩ': 'iíìỉị',
|
| 68 |
+
'ị': 'iíìỉĩ',
|
| 69 |
+
'k': 'l',
|
| 70 |
+
'l': 'k;',
|
| 71 |
+
'm': 'n',
|
| 72 |
+
'n': 'm',
|
| 73 |
+
'o': 'ôơóòọỏõốồộổỗớờợởỡ',
|
| 74 |
+
'ô': 'oơóòọỏõốồộổỗớờợởỡ',
|
| 75 |
+
'ơ': 'oôóòọỏõốồộổỗớờợởỡ',
|
| 76 |
+
'ó': 'oôơòọỏõốồộổỗớờợởỡ',
|
| 77 |
+
'ò': 'oôơóọỏõốồộổỗớờợởỡ',
|
| 78 |
+
'ọ': 'oôơóòỏõốồộổỗớờợởỡ',
|
| 79 |
+
'ỏ': 'oôơóòọõốồộổỗớờợởỡ',
|
| 80 |
+
'õ': 'oôơóòọỏốồộổỗớờợởỡ',
|
| 81 |
+
'ố': 'oôơóòọỏõồộổỗớờợởỡ',
|
| 82 |
+
'ồ': 'oôơóòọỏõốộổỗớờợởỡ',
|
| 83 |
+
'ộ': 'oôơóòọỏõốồổỗớờợởỡ',
|
| 84 |
+
'ổ': 'oôơóòọỏõốồộỗớờợởỡ',
|
| 85 |
+
'ỗ': 'oôơóòọỏõốồộổớờợởỡ',
|
| 86 |
+
'ớ': 'oôơóòọỏõốồộổỗờợởỡ',
|
| 87 |
+
'ờ': 'oôơóòọỏõốồộổỗớờợởỡ',
|
| 88 |
+
'ợ': 'oôơóòọỏõốồộổỗớờợởỡ',
|
| 89 |
+
'ở': 'oôơóòọỏõốồộổỗớờợỡ',
|
| 90 |
+
'ỡ': 'oôơóòọỏõốồộổỗớờợở',
|
| 91 |
+
'p': 'q',
|
| 92 |
+
'q': 'p',
|
| 93 |
+
'r': 'f',
|
| 94 |
+
's': 'd',
|
| 95 |
+
't': 'y',
|
| 96 |
+
'u': 'ưúùụủũứừựửữ',
|
| 97 |
+
'ư': 'uúùụủũứừựửữ',
|
| 98 |
+
'ú': 'uưùụủũứừựửữ',
|
| 99 |
+
'ù': 'uưúụủũứừựửữ',
|
| 100 |
+
'ụ': 'uưúùủũứừựửữ',
|
| 101 |
+
'ủ': 'uưúùụũứừựửữ',
|
| 102 |
+
'ũ': 'uưúùụủứừựửữ',
|
| 103 |
+
'ứ': 'uưúùụủũừựửữ',
|
| 104 |
+
'ừ': 'uưúùụủũứựửữ',
|
| 105 |
+
'ự': 'uưúùụủũứừửữ',
|
| 106 |
+
'ử': 'uưúùụủũứừựữ',
|
| 107 |
+
'ữ': 'uưúùụủũứừựử',
|
| 108 |
+
'v': 'b',
|
| 109 |
+
'x': 'c',
|
| 110 |
+
'y': 't',
|
| 111 |
+
'z': 's'
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
text = list(text)
|
| 115 |
+
print(text)
|
| 116 |
+
indices = random.sample(range(len(text)), num_errors)
|
| 117 |
+
print(indices)
|
| 118 |
+
|
| 119 |
+
for index in indices:
|
| 120 |
+
if text[index].lower() in keyboard:
|
| 121 |
+
replacement_char = random.choice(keyboard[text[index].lower()])
|
| 122 |
+
if text[index].isupper():
|
| 123 |
+
replacement_char = replacement_char.upper()
|
| 124 |
+
text[index] = replacement_char
|
| 125 |
+
|
| 126 |
+
final_text = ''.join(text)
|
| 127 |
+
print(final_text)
|
| 128 |
+
return final_text
|
| 129 |
+
|
| 130 |
|
|
|
|
|
|
|
| 131 |
|
|
|
|
|
|