Spaces:
Sleeping
Sleeping
| """ | |
| Модуль итеративного отбора предложений с подавлением семантической избыточности | |
| """ | |
| import numpy as np | |
| def iterative_selection(scores: np.ndarray, similarity_matrix: np.ndarray, | |
| k: int, theta: float = 0.6) -> list: | |
| """ | |
| Итеративный жадный отбор с подавлением семантически близких предложений. | |
| Args: | |
| scores: начальные оценки Score(S_i) | |
| similarity_matrix: матрица попарного семантического сходства | |
| k: целевое количество предложений | |
| theta: коэффициент подавления (0-1) | |
| Returns: | |
| индексы отобранных предложений в хронологическом порядке | |
| """ | |
| N = len(scores) | |
| selected = [] | |
| remaining = list(range(N)) | |
| current_scores = scores.copy() | |
| for _ in range(min(k, N)): | |
| best_idx = max(remaining, key=lambda i: current_scores[i]) | |
| selected.append(best_idx) | |
| remaining.remove(best_idx) | |
| for i in remaining: | |
| sim = similarity_matrix[best_idx, i] | |
| current_scores[i] = current_scores[i] * (1 - theta * sim) | |
| current_scores[i] = max(current_scores[i], 0.0) | |
| return sorted(selected) |