ShynBui commited on
Commit
7676e0a
·
1 Parent(s): 41ccaca

update character_replacement methods

Browse files
Files changed (4) hide show
  1. __pycache__/utils.cpython-310.pyc +0 -0
  2. app.py +4 -3
  3. flagged/log.csv +3 -0
  4. 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 greet(name):
4
- return "Hello " + name + "!!"
5
 
6
- demo = gr.Interface(fn=greet, inputs="text", outputs="text")
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 gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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