|
--- |
|
language: "en" |
|
tags: |
|
- counterfactual generation |
|
widget: |
|
- text: "It is great for kids. <|perturb|> [negation] It [BLANK] great for kids. [SEP]" |
|
--- |
|
|
|
# Polyjuice |
|
|
|
## Model description |
|
|
|
This is a ported version of [Polyjuice](https://homes.cs.washington.edu/~wtshuang/static/papers/2021-arxiv-polyjuice.pdf), the general-purpose counterfactual generator. |
|
|
|
#### How to use |
|
|
|
```python |
|
from transformers import AutoTokenizer, AutoModelWithLMHead |
|
|
|
tokenizer = AutoTokenizer.from_pretrained("uw-hai/polyjuice") |
|
model = AutoModelWithLMHead.from_pretrained("uw-hai/polyjuice") |
|
|
|
|
|
prompt_text = "A dog is embraced by the woman. <|perturb|> [negation] A dog is [BLANK] the woman." |
|
# or try: "A dog is embraced by the woman. <|perturb|> [restructure] A dog is [BLANK] the woman." |
|
perturb_tok, end_tok = "<|perturb|>", "<|endoftext|>" |
|
encoded_prompt = tokenizer.encode(prompt_text, add_special_tokens=False, return_tensors="pt") |
|
input_ids = encoded_prompt |
|
stop_token= '\n' |
|
repetition_penalty=1 |
|
output_sequences = model.generate( |
|
input_ids=input_ids, |
|
max_length=100 + len(encoded_prompt[0]), |
|
temperature=0.1, |
|
num_beams=10, |
|
num_return_sequences=3) |
|
|
|
if len(output_sequences.shape) > 2: |
|
output_sequences.squeeze_() |
|
|
|
for generated_sequence_idx, generated_sequence in enumerate(output_sequences): |
|
generated_sequence = generated_sequence.tolist() |
|
# Decode text |
|
text = tokenizer.decode(generated_sequence, clean_up_tokenization_spaces=True) |
|
# Remove all text after the stop token |
|
text = text[: text.find(stop_token) if stop_token and text.find(stop_token)>-1 else None] |
|
text = text[: text.find(end_tok) if end_tok and text.find(end_tok)>-1 else None] |
|
print(text) |
|
``` |
|
|
|
### BibTeX entry and citation info |
|
|
|
```bibtex |
|
@misc{wu2021polyjuice, |
|
title={Polyjuice: Automated, General-purpose Counterfactual Generation}, |
|
author={Tongshuang Wu and Marco Tulio Ribeiro and Jeffrey Heer and Daniel S. Weld}, |
|
year={2021}, |
|
eprint={2101.00288}, |
|
archivePrefix={arXiv}, |
|
primaryClass={cs.CL} |
|
} |
|
``` |