espa_model / position_weight.py
kanslor821's picture
Upload 10 files
0f34acb verified
raw
history blame contribute delete
713 Bytes
"""
Модуль вычисления позиционного веса
"""
import math
import numpy as np
def compute_position_weight(N: int, delta: float = 0.1) -> np.ndarray:
"""
Вычисление позиционного веса π(i).
Формула: π(i) = 1 + δ * sqrt(|i - N/2| / (N/2))
Args:
N: количество предложений
delta: сила позиционного эффекта (0-0.2)
Returns:
массив позиционных весов
"""
weights = np.zeros(N)
for i in range(N):
pos = i + 1
weights[i] = 1 + delta * math.sqrt(abs(pos - N / 2) / (N / 2))
return weights