andreiaalexa commited on
Commit
37804fb
·
verified ·
1 Parent(s): 312098a

upload scifact_features.py

Browse files
Files changed (1) hide show
  1. scifact_features.py +34 -0
scifact_features.py ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Embedding feature builders for claim-document relevance classification."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import numpy as np
6
+
7
+
8
+ def e5_queries(texts: list[str]) -> list[str]:
9
+ return [f"query: {text}" for text in texts]
10
+
11
+
12
+ def e5_passages(texts: list[str]) -> list[str]:
13
+ return [f"passage: {text}" for text in texts]
14
+
15
+
16
+ def pair_features(model, claims: list[str], documents: list[str], show_progress_bar=False):
17
+ """Build standard sentence-pair features from two embedding vectors.
18
+
19
+ q and d alone give the classifier raw semantic position. abs(q-d) exposes
20
+ distance dimensions. q*d exposes alignment dimensions. cosine gives a
21
+ single retrieval-style similarity signal.
22
+ """
23
+ q = model.encode(
24
+ e5_queries(claims),
25
+ normalize_embeddings=True,
26
+ show_progress_bar=show_progress_bar,
27
+ )
28
+ d = model.encode(
29
+ e5_passages(documents),
30
+ normalize_embeddings=True,
31
+ show_progress_bar=show_progress_bar,
32
+ )
33
+ cosine = np.sum(q * d, axis=1, keepdims=True)
34
+ return np.hstack([q, d, np.abs(q - d), q * d, cosine])