Spaces:
Runtime error
Runtime error
feat: implement similarity engine for hybrid semantic and feature-based project comparison
Browse files
src/similarity_model/__pycache__/similarity_engine.cpython-313.pyc
CHANGED
|
Binary files a/src/similarity_model/__pycache__/similarity_engine.cpython-313.pyc and b/src/similarity_model/__pycache__/similarity_engine.cpython-313.pyc differ
|
|
|
src/similarity_model/similarity_engine.py
CHANGED
|
@@ -167,7 +167,21 @@ def compare_candidate(
|
|
| 167 |
unique_query_count=unique_query_count
|
| 168 |
)
|
| 169 |
|
| 170 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
|
| 172 |
originality_score = compute_originality(
|
| 173 |
hybrid_score=hybrid_score,
|
|
|
|
| 167 |
unique_query_count=unique_query_count
|
| 168 |
)
|
| 169 |
|
| 170 |
+
# Calculate Jaccard word overlap on description + abstract to detect direct copy-pastes
|
| 171 |
+
query_desc = (str(query_project.get("abstract", "")) + " " + str(query_project.get("description", ""))).strip()
|
| 172 |
+
candidate_desc = (str(candidate_row.get("abstract", "")) + " " + str(candidate_row.get("description", ""))).strip()
|
| 173 |
+
|
| 174 |
+
words_q = set(normalize_text(query_desc).split())
|
| 175 |
+
words_c = set(normalize_text(candidate_desc).split())
|
| 176 |
+
|
| 177 |
+
jaccard_overlap = 0.0
|
| 178 |
+
if words_q and words_c:
|
| 179 |
+
jaccard_overlap = len(words_q.intersection(words_c)) / len(words_q.union(words_c))
|
| 180 |
+
|
| 181 |
+
if jaccard_overlap >= 0.60:
|
| 182 |
+
hybrid_score = 0.95
|
| 183 |
+
else:
|
| 184 |
+
hybrid_score = base_similarity
|
| 185 |
|
| 186 |
originality_score = compute_originality(
|
| 187 |
hybrid_score=hybrid_score,
|