File size: 1,720 Bytes
4ff8b83 f462bd2 4ff8b83 f462bd2 4ff8b83 f462bd2 4ff8b83 f462bd2 4ff8b83 f462bd2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
import pandas as pd
import numpy as np
import random
import math
'''
AP = a.ER^(bx) * sigmoidP(x)
ER: Tỉ lệ lỗi trong 1 phép tạo lỗi: 0.5% - 10%
AP (augmentation_probability) : Tỉ lệ sửa (0.1 <= AP <= 0.5)
a: weight (0.5442)
b: bias (-16.94145)
SER: Tỷ lệ lỗi đã thêm (mong muốn: < 15% - tối đa <= 30%)
'''
ER_min = 0.01
ER_max = 0.1
def find_a_b_for_AP(min_AP = 0.5, max_AP = 1):
'''
:param min_AP:
:param max_AP:
:return: a, b
{a * e^(b * ER_min) = max_AP
{a * e^(b * ER_max) = min_AP
(ER_max - ER_min) * b = ln(min_AP / max_AP)
'''
exponential = ER_max - ER_min
b = np.log(min_AP / max_AP) / exponential
'''
a * e^(b * ER_min) = max_AP
'''
a = max_AP / math.pow(np.e, b * ER_min)
return a, b
def AP_fomula(a = 0.5442, b = -16.94145, error_rate=0.1):
a, b = find_a_b_for_AP()
# print(a, b)
augmentation_probability = a * math.pow(np.e, b * error_rate)
return augmentation_probability
'''
Hàm sigmoid:
Sigmoid(x) = 1 / (1 + e^(-k * x))
Giới hạn tỉ lệ lỗi tối đa của một câu là <= 35%
x: là SER_max - SER_mong muốn
=> Sigmoid - lim(x) -> 0.35 ~ 1
Sigmoid(x) = 1 / (1 + e^(-k * x)) ~ 1
=> 1 / (1 + e^(-0.35k)) = 999/1000
Đk kich hoạt hàm sigmoid => Khi SER đạt đến một độ min nhật định vd: 10%
'''
def get_k_sigmoid(x=0.2, lim1 = 0.999):
'''
:param x: ##SER: Tỷ lệ lỗi đã thêm (mong muốn: < 15% - tối đa <= 30%)
:param lim1: Giá trị ~1
:return: k
'''
sum1 = 1 - lim1
sum1 = sum1 / lim1
k = -np.log(sum1) / x
return k
print(1 - (1 / (1 + pow(math.e, 0.0 * get_k_sigmoid(x=0.1))))) |