bat-6 commited on
Commit
dd72980
·
1 Parent(s): bfaaf6f
src/similarity_model/hybrid_ranker.py CHANGED
@@ -135,12 +135,25 @@ def compute_originality(
135
  """
136
  Originality Score (0-100)
137
 
138
- - Driven primarily by inverse of hybrid similarity.
 
139
  """
140
 
141
  hybrid_score = clamp(hybrid_score)
142
 
143
- originality = 1.0 - hybrid_score
 
 
 
 
 
 
 
 
 
 
 
 
144
 
145
  return round(
146
  max(0.0, min(100.0, originality * 100)),
 
135
  """
136
  Originality Score (0-100)
137
 
138
+ - Driven primarily by inverse of hybrid similarity (non-linear).
139
+ - Boosted by the uniqueness of the features.
140
  """
141
 
142
  hybrid_score = clamp(hybrid_score)
143
 
144
+ uniqueness_ratio = (
145
+ unique_query_features / total_query_features
146
+ if total_query_features > 0
147
+ else 1.0
148
+ )
149
+
150
+ # Non-linear penalty: 50% similarity drops originality slightly,
151
+ # but 90% similarity drops it massively.
152
+ similarity_penalty = hybrid_score ** 2
153
+ base_originality = 1.0 - similarity_penalty
154
+
155
+ # Blend uniqueness and base originality
156
+ originality = (0.40 * uniqueness_ratio) + (0.60 * base_originality)
157
 
158
  return round(
159
  max(0.0, min(100.0, originality * 100)),