Skip to main content

Optimized Text Embeddings Designed for Measuring Opposite/Contrasting Relationships

Project description

Dichotomous Score

A lightweight toolkit for measuring how “opposite” two texts are when they share the same context.

Software: PyPI version

Pretrained Models: debate-bert defeasibleNLI-bert causal-reasoning-bert


📚 Table of Contents

✨ Why should I care?

Domain One-line use-case Why it matters
Public policy
Cluster pro ∕ con arguments from citizen consultations Produces balanced, evidence-based draft regulations
Social media
Detect emerging polarised clusters in real time Enables early de-escalation and healthier discourse
Journalism
Surface the strongest counter-evidence to viral claims Speeds up balanced fact-checking & boosts information integrity
Causal analysis
Rank supporters vs defeaters for a suspected cause Accelerates root-cause analysis during critical incidents

Powered by our Opposite-Score embeddings and three rigorously curated datasets (Debate ▪︎ Defeasible NLI ▪︎ Causal Reasoning).


📦 Installation

conda create -n dichotomy python=3.10
conda activate dichotomy

## opposite-score is our implemented package: https://pypi.tw.martin98.com/project/opposite-score/
pip install opposite-score

🗂️ Supportive Datasets (Quick Overview)

Scenario Train Val Test Total Avg len (ctx) Avg len (pos/neg/neu)
Debate 58 k 21 k 16 k 95 k 8.8 11.6 / 11.5 / 11.2
Defeasible NLI 8 k 8 k 424 k 441 k 23.1 8.5 / 8.3 / 8.4
Causal Reasoning 14 k 18 k 16 k 48 k 21.0 8.4 / 10.1 / 9.1

Sentence-length distributions

Figure 1. Sentence-length distributions for contexts, positive, negative, and neutral arguments across datasets.

Why it matters
Balanced lengths & human-verified neutrals stop models from “cheating” on superficial cues and keep the focus on genuine oppositional content.

Opposite-Score

Efficient embeddings and scoring mechanism for detecting contrasting or opposite relationships in text, based on a given context.

Opposite-Score is designed to generate embeddings and compute the opposite-score, which quantifies the degree of contrast or opposition between two textual outputs within the same context. This package is particularly useful in scenarios like debates, legal reasoning, and causal analysis where contrasting perspectives need to be evaluated based on shared input.

Features

  • Opposite-Score Calculation: Computes a numerical score representing how opposite two texts are, conditioned on a shared context.
  • Opposite-Aware Embeddings: Generates embeddings optimized for contrasting textual relationships.
  • Easy to Use: Only a few lines of code to get sentence/token-level embeddings and calculate opposite scores.
  • Automatic Model Download: The first initialization automatically downloads and installs the pre-trained Opposite-Score model.

Installation

Install Opposite-Score via pip:

pip install opposite-score==0.0.1

💡 Usage Examples

For Opposite Scores of two sentence conditioned on the context.

from oppositescore.model.dichotomye import DichotomyE

# Example inputs
context = ["A company launches a revolutionary product."]
sentence1 = ["Competitors quickly release similar products, reducing the company's advantage."]
sentence2 = ["The company gains a significant advantage due to its unique product."]

# Initialize the model
opposite_scorer = DichotomyE.from_pretrained('shaobocui/opposite-score-debate-bert', pooling_strategy='cls').cuda()

# Calculate opposite-score (using cosine similarity as an example)
opposite_score = opposite_scorer.calculate_opposite_score(ctx=context, sent1=sentence1, sent2=sentence2)
print('Opposite Score:', opposite_score)
# Output: Opposite Score: 0.11086939

🛡 Responsible Usage

This software is released for research and educational purposes only. It is intended to support studies on argument contrast, causal reasoning, and sentence embeddings.

Please ensure proper attribution when using the code, models, or datasets in publications or derivative work. Commercial use are expected to contact authors for explicit permission.

For questions or collaborations, feel free to contact the authors.

📊 Leaderboard: Dichotomy Quantification

Model Debate (DCF ↑) Debate (Angle ↑) NLI (DCF ↑) NLI (Angle ↑) Causal (DCF ↑) Causal (Angle ↑)
InferSent-GloVe 36.19 1.58 23.11 0.39 26.71 0.44
InferSent-fastText 42.02 4.56 27.66 1.42 32.36 1.44
USE 16.53 3.31 18.07 1.01 13.54 0.46
BERT 31.37 0.18 11.99 0.25 27.17 0.26
CoSENT 38.49 0.64 26.86 0.28 30.07 0.14
SBERT 31.61 1.50 22.89 0.64 22.68 0.43
SimCSE (BERT) 30.59 2.78 13.91 0.93 25.15 1.30
AoE (BERT) 26.27 0.48 24.02 0.10 30.09 0.11
RoBERTa 43.61 0.00 12.60 0.00 24.06 0.00
SimCSE (RoBERTa) 30.84 2.42 12.78 0.64 27.01 1.28
LLaMA-2 (7B) 30.46 16.99 21.25 8.65 32.80 5.67
LLaMA-2 (13B) 47.42 11.24 30.27 4.59 34.05 2.56
AoE (7B) 38.92 14.85 20.01 8.22 27.20 4.03
AoE (13B) 44.88 9.73 28.72 3.20 30.89 1.58
LLaMA-3.1 (8B) 39.81 10.86 21.70 5.33 26.38 2.67
LLaMA-3.1 (70B) 34.47 13.74 15.95 6.83 25.23 3.84
Ours (BERT) 46.97 30.66 41.72 3.25 67.59 20.69
Ours (RoBERTa) 55.93 83.67 47.27 0.63 76.55 5.06

📌 Both metrics benefit from higher values: better classification and stronger geometric contrast.

📄 Full Table with Ablations →

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opposite_score-0.0.3.tar.gz (39.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opposite_score-0.0.3-py3-none-any.whl (46.3 kB view details)

Uploaded Python 3

File details

Details for the file opposite_score-0.0.3.tar.gz.

File metadata

  • Download URL: opposite_score-0.0.3.tar.gz
  • Upload date:
  • Size: 39.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for opposite_score-0.0.3.tar.gz
Algorithm Hash digest
SHA256 3a46235be9dac49062b5e15129ea3a62094bd0b9b0383b96b5d3602b8357a9be
MD5 5aa4d3fa5aee84cbf5f608ef62012f6c
BLAKE2b-256 b7243a6cc7cffa9dfe3d5f2247ab34249c0293e28194578310d1074385ffb702

See more details on using hashes here.

File details

Details for the file opposite_score-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: opposite_score-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 46.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for opposite_score-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e6ca084e0bb29b3c7aaeacbc919278e9c39b5070d1cd89298e2eb5c8c03bfc78
MD5 7d002c30c3c776f3e4de3cec4110037b
BLAKE2b-256 b92477f71be0296c1808604d0695f81e995c4a32b96a4e6b8d4f368bbd66fd86

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page