| --- |
| 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") |
| ``` |
| |