No project description provided
Project description
AI2 Tailor
This is the codebase for the Tailor library.
This repository contains code for compositional perturbations as described in the following paper:
Tailor: Generating and Perturbing Text with Semantic Controls
Alexis Ross*, Tongshuang Wu*, Hao Peng, Matthew E. Peters, Matt Gardner Association for Computational Linguistics (ACL), 2022
Bibtex for citations:
@inproceedings{ross-etal-2022-tailor,
title = "Tailor: Generating and Perturbing Text with Semantic Controls",
author = "Ross, Alexis and
Wu, Tongshuang and
Peng, Hao and
Peters, Matthew E and
Gardner, Matt",
booktitle = "Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics",
month = aug,
year = "2022",
address = "Online",
publisher = "Association for Computational Linguistics",
}
Installation
From Pypi:
pip install tailor_nlp
From source:
git clone git@github.com:allenai/tailor.git
cd tailor
pip install -e .
Using Tailor: walkthrough cases
- See the tutorial notebook for a detailed walkthrough of the API.
- See the documents in the main Python file for more explanations.
- See Tutorial 02 to learn how to use the default perturbation function on NLI data.
- See Tutorial 03 to learn how to define a customized perturbation function for MATRES data.
Basic Perturbation demo
# initiate a wrapper.
from tailor import Tailor
tl = Tailor()
text = "In the operation room, the doctor comforted the athlete."
# perturb the sentence with one line:
# When running it for the first time, the wrapper will automatically
# load related models, e.g. the generator and the perplexity filter.
perturbations = tl.perturb(text)
# return: [
# 'the athlete was comforted by the doctor .',
# 'In which case , the doctor comforted the athlete.',]
More advanced APIs
To perturb with more controls,
perturbations = tl.perturb(
sentence=text,
selected_span = "In the operation room",
# can filter perturbations by their change type, as printed above.
allowed_perturbs=["change_content"],
# can reuse the detected strategies
candidate_inputs = perturb_strategies,
# filter out degeneration with gpt-2 perplexity score. If None, then this step is skiped.
perplex_thred=50,
# max number of perturbations to return.
num_perturbs=10
)
# return: ["In case of an injury , the doctor 's comforted the athlete.",
# "In case of a fatal accident , the doctor 's comforted the athlete.",
# "In case of a bruised hand , the doctor 's comforted the athlete."]
To attach additional context,
tl.perturb_with_context(
"In the operation room, the doctor comforted the athlete.",
"In the operation room",
to_content="bridge",
verbalize=True
)
# return: ["Under the bridge , the doctor 's comforted the athlete.",
# "Under a bridge , the doctor 's comforted the athlete."]
tl.perturb_with_context(
"In the operation room, the doctor comforted the athlete.",
"In the operation room",
to_semantic_role="TEMPORAL",
verbalize=True
)
# return: ['When the doctor came into the operation room , the physician comforted the athlete.',
# "While the doctor was in the operation room , the physician 's comforted the athlete."]
tl.perturb_with_context(
"In the operation room, the doctor comforted the athlete.",
"comforted",
to_tense="future",
verbalize=True
)
# return: ['In the operation room , the doctor will comfort the athlete.',
# "In the operation room , the doctor 's will comfort the athlete."]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file tailor_nlp-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: tailor_nlp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 76.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.2.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5048d06a2b7071dd66bd2b3503e6cdd5d76948e4cb9b0ea6c6fc1871474c9f72 |
|
MD5 | fc2b8bb163a4af313f356b9b07b061bb |
|
BLAKE2b-256 | fc18687fa4c1fa37661107dd6a248253b5281b0eef73732c77e843a6269d4c9d |