[go: up one dir, main page]

Skip to content

yuh-zha/Align

Repository files navigation

Align: A Unified Text Alignment Function for NLP Tasks

Align measures the correspondence of information between two pieces of text, which is introduced in
Text Alignment Is An Efficient Unified Model for Massive NLP Tasks
Yuheng Zha*, Yichi Yang*, Ruichen Li and Zhiting Hu
NeurIPS 2023

For a given text pair $(x_1, x_2)$, text information alignment is to decide if all information in $x_2$ is supported by information in $x_1$. For example, given a text $x_1$: I have been in Kentucky, Kirby, text I have been in the US is aligned with $x_1$. However, either text I have been in Europe or text Kentucky has the best fried chicken is not aligned with $x_1$.

Text alignment is applicable to a wide range of downstream tasks, e.g., Natural Language Inference, Paraphrase Detection, Fact Verification, Semantic Textual Similarity, Question Answering, Coreference Resolution and Information Retrieval.

Installation

We recommend to install Align in a conda environment.

First clone this repo:

git clone https://github.com/yuh-zha/Align.git
cd Align

Create a virtual conda environment:

conda create -n Align python=3.9
conda activate Align
pip install -e .

Install the required spaCy model

python -m spacy download en_core_web_sm

Checkpoints

We provide two versions of Align checkpoints: Align-base and Align-large. The -base model is based on RoBERTa-base and has 125M parameters. The -large model is based on RoBERTa-large and has 355M parameters.

Align-base: https://huggingface.co/yzha/Align/resolve/main/Align-base.ckpt

Align-large: https://huggingface.co/yzha/Align/resolve/main/Align-large.ckpt

Usage

To get the alignment score of the text pairs (text_a and text_b), use the scorer function of Align:

from align import Align

text_a = ["Your text here"]
text_b = ["Your text here"]

scorer = Align(model="roberta-large", batch_size=32, device="cuda", ckpt_path="path/to/ckpt")
score = scorer(contexts=text_a, claims=text_b)

model: The backbone model of Align. It can be roberta-base or roberta-large
batch_size: The batch size of inference
ckpt_path: The path to the checkpoint

Citation

If you find this work helpful, please consider cite:

@inproceedings{
zha2023text,
title={Text Alignment Is An Efficient Unified Model for Massive {NLP} Tasks},
author={Yuheng Zha and Yichi Yang and Ruichen Li and Zhiting Hu},
booktitle={Thirty-seventh Conference on Neural Information Processing Systems},
year={2023},
url={https://openreview.net/forum?id=xkkBFePoFn}
}