Spaces:
Running
on
T4
Running
on
T4
| def normalize_euclidean(euclidean, max_value): | |
| """ | |
| Normalize the Euclidean distance to a 0-100 scale, where 0 is the maximum distance | |
| and 100 is the minimum distance. | |
| """ | |
| return max(0, 100 - (euclidean / max_value) * 100) | |
| def calculate_passing(sequence, phonetic, cosine=0, euclidean=0, passing_threshold=40, euclidean_max=200): | |
| # Normalize sequence and phonetic to 0-100 scale | |
| sequence_normalized = sequence * 100 | |
| phonetic_normalized = phonetic * 100 | |
| # Normalize Euclidean distance to a similarity measure (0-100 scale) | |
| euclidean_similarity = normalize_euclidean(euclidean, euclidean_max) | |
| # Calculate the weighted average | |
| weights = { | |
| 'sequence': 0.35, | |
| 'phonetic': 0.35, | |
| 'cosine': 0, | |
| 'euclidean': 0 | |
| } | |
| weighted_score = ( | |
| sequence_normalized * weights['sequence'] + | |
| phonetic_normalized * weights['phonetic'] + | |
| cosine * weights['cosine'] + | |
| euclidean_similarity * weights['euclidean'] | |
| ) | |
| # Check if the weighted score meets or exceeds the passing threshold | |
| is_passing = weighted_score >= passing_threshold | |
| return weighted_score, is_passing |