ShynBui commited on
Commit
e8d0176
·
1 Parent(s): 7ffbba4

add tranpostion method

Browse files
Files changed (3) hide show
  1. __pycache__/utils.cpython-310.pyc +0 -0
  2. app.py +7 -1
  3. utils.py +75 -0
__pycache__/utils.cpython-310.pyc CHANGED
Binary files a/__pycache__/utils.cpython-310.pyc and b/__pycache__/utils.cpython-310.pyc differ
 
app.py CHANGED
@@ -11,8 +11,14 @@ def final_result(input_text):
11
  ##character_insertion
12
  input_text_process = character_insertion(input_text, error_rate=0.01)
13
  list_text_response.append(input_text_process)
14
- ##
 
 
 
 
 
15
 
 
16
  string_text_response = '\n'.join(list_text_response)
17
  return str(string_text_response)
18
 
 
11
  ##character_insertion
12
  input_text_process = character_insertion(input_text, error_rate=0.01)
13
  list_text_response.append(input_text_process)
14
+ ##character_deletion
15
+ input_text_process = character_deletion(input_text, error_rate=0.01)
16
+ list_text_response.append(input_text_process)
17
+ ##character_transposition
18
+ input_text_process = character_transposition(input_text, error_rate=0.03)
19
+ list_text_response.append(input_text_process)
20
 
21
+ ##
22
  string_text_response = '\n'.join(list_text_response)
23
  return str(string_text_response)
24
 
utils.py CHANGED
@@ -188,3 +188,78 @@ def character_insertion(text, error_rate=0.03, C=0.5):
188
 
189
  # Ghép các ký tự lại thành chuỗi văn bản
190
  return ''.join(text)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
 
189
  # Ghép các ký tự lại thành chuỗi văn bản
190
  return ''.join(text)
191
+
192
+
193
+ def character_deletion(text, error_rate=0.03, C=0.5):
194
+ '''
195
+ :param text: Gồm 1 câu đúng chính tả
196
+ :param error_rate: tỷ lệ lỗi sai muốn thêm
197
+ :param C: hằng số để tính toán xác suất xóa ký tự
198
+ :return: Gồm 1 câu sai chính tả
199
+
200
+ Thực hiện xóa ký tự:
201
+ Sử dụng vòng lặp for _ in range(num_errors) để xóa một số lượng ký tự ngẫu nhiên xác định (num_errors).
202
+ Mỗi lần trong vòng lặp:
203
+ Sử dụng random.randint(0, len(text)-1) để chọn ngẫu nhiên một vị trí trong văn bản nơi ký tự sẽ bị xóa.
204
+ Sử dụng text.pop(index) để xóa ký tự tại vị trí đã chọn.
205
+ Ghép lại thành chuỗi văn bản:
206
+ 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.
207
+ '''
208
+
209
+ # Chuyển đổi văn bản thành danh sách ký tự để có thể xóa ký tự
210
+ text = list(text)
211
+
212
+ # Xác định số lượng ký tự cần xóa dựa trên tỷ lệ lỗi
213
+ num_errors = int(len(text) * error_rate)
214
+
215
+ # Tính toán xác suất xóa ký tự dựa trên error_rate sử dụng hàm logarit
216
+ augmentation_probability = C / math.log(error_rate + 1)
217
+
218
+ # Thực hiện xóa ký tự tại các vị trí ngẫu nhiên
219
+ for _ in range(num_errors):
220
+ # Chọn ngẫu nhiên một vị trí trong văn bản để xóa ký tự
221
+ if random.random() <= augmentation_probability:
222
+ if len(text) > 0: # Đảm bảo rằng danh sách không trống
223
+ index = random.randint(0, len(text) - 1)
224
+ # Xóa ký tự tại vị trí đã chọn
225
+ text.pop(index)
226
+
227
+ # Ghép các ký tự lại thành chuỗi văn bản
228
+ return ''.join(text)
229
+
230
+ def character_transposition(text, error_rate=0.03, C=0.5):
231
+ '''
232
+ :param text: Gồm 1 câu đúng chính tả
233
+ :param error_rate: tỷ lệ lỗi sai muốn thêm
234
+ :param C: hằng số để tính toán xác suất hoán đổi ký tự
235
+ :return: Gồm 1 câu sai chính tả
236
+
237
+ Thực hiện hoán đổi ký tự:
238
+ Sử dụng vòng lặp for _ in range(num_errors) để hoán đổi một số lượng ký tự ngẫu nhiên xác định (num_errors).
239
+ Mỗi lần trong vòng lặp:
240
+ Sử dụng random.randint(0, len(text)-2) để chọn ngẫu nhiên một vị trí trong văn bản nơi ký tự sẽ bị hoán đổi.
241
+ Hoán đổi hai ký tự liên tiếp tại vị trí đã chọn.
242
+ Ghép lại thành chuỗi văn bản:
243
+ 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.
244
+ '''
245
+
246
+ # Chuyển đổi văn bản thành danh sách ký tự để có thể hoán đổi ký tự
247
+ text = list(text)
248
+
249
+ # Xác định số lượng lần hoán đổi cần thực hiện dựa trên tỷ lệ lỗi
250
+ num_errors = int(len(text) * error_rate)
251
+
252
+ # Tính toán xác suất hoán đổi ký tự dựa trên error_rate sử dụng hàm logarit
253
+ augmentation_probability = C / math.log(error_rate + 1)
254
+
255
+ # Thực hiện hoán đổi ký tự tại các vị trí ngẫu nhiên
256
+ for _ in range(num_errors):
257
+ # Chọn ngẫu nhiên một vị trí trong văn bản để hoán đổi ký tự
258
+ if random.random() <= augmentation_probability:
259
+ if len(text) > 1: # Đảm bảo rằng danh sách có ít nhất 2 ký tự để hoán đổi
260
+ index = random.randint(0, len(text) - 2)
261
+ # Hoán đổi hai ký tự liên tiếp tại vị trí đã chọn
262
+ text[index], text[index + 1] = text[index + 1], text[index]
263
+
264
+ # Ghép các ký tự lại thành chuỗi văn bản
265
+ return ''.join(text)