File size: 1,946 Bytes
8847b61
67cdf3a
 
 
 
 
 
 
 
 
8847b61
 
67cdf3a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
---
language: en
tags:
- phrase-similarity
- pic
- cross-encoder
datasets:
- Deehan1866/processed_phrase_similarity
metrics:
- accuracy
---

# bayartsogt/structbert-large Fine-tuned on PiC Phrase Similarity (Angle 3 — with_rationale)

Cross-encoder model for the PiC (Phrase in Context) phrase-similarity
binary classification task. Both sentences — plus an LLM-generated
rationale — are fed together so the model can attend across them
simultaneously.

## Base model
`bayartsogt/structbert-large`

## Input format
```
[CLS] sentence1_marked [SEP] sentence2_marked [SEP] rationale [SEP]
```

## Target Phrase Marking
The target phrase is wrapped with `<TGT>phrase</TGT>` using substring
matching against the raw sentence (whole-word boundaries preferred,
case-insensitive fallback), since PS phrases can be multi-word and
have no explicit position column in the source dataset.

## Performance
| Split      | Accuracy |
|------------|----------|
| Validation | 0.7440 |
| Test       | 0.7370 |

## Usage
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

tokenizer = AutoTokenizer.from_pretrained("Deehan1866/ps-fullymasked-structbert-large")
model = AutoModelForSequenceClassification.from_pretrained("Deehan1866/ps-fullymasked-structbert-large")

s1 = "In 1990, Petit accepted a full time overnight on <TGT>air position</TGT> at gospel radio station WYLD AM."
s2 = "In 1990, Petit accepted a full time overnight on <TGT>posture while jumping</TGT> at gospel radio station WYLD AM."
rationale = "The first phrase denotes a broadcasting role; the second describes a physical stance during a jump."

sep = tokenizer.sep_token
enc = tokenizer(s1, s2 + " " + sep + " " + rationale,
                return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
    logits = model(**enc).logits
pred = torch.argmax(logits).item()
print("Similar" if pred == 1 else "Not similar")
```