creative-help / README.md
roemmele's picture
Updated README.md
2367728
---
language:
- en
tags:
- text-generation
- creative-writing
- language-model
library_name: transformers
pipeline_tag: text-generation
---
# Creative Help
This is the model repo for Creative Help, a legacy app for AI-based writing assistance powered by a RNN language model. It was developed in 2016 as one of the first demonstrations of the use of a language model for helping people write stories. For more information, see the following research papers:
[Automated Assistance for Creative Writing with an RNN Language Model.](https://roemmele.github.io/publications/creative-help-demo.pdf) Melissa Roemmele and Andrew Gordon. Demo at IUI 2018.
[Linguistic Features of Helpfulness in Automated Support for Creative Writing.](https://roemmele.github.io/publications/creative-help-evaluation.pdf) Melissa Roemmele and Andrew Gordon. Storytelling Workshop at NAACL 2018.
## Installation
```bash
pip install transformers torch
python -m spacy download en_core_web_sm
```
## Loading the Model
This model uses a custom implementation of classes in the HF transformers library (this code has been semi-automatically adapted from the original implementation [here](https://github.com/roemmele/narrative-prediction)). If you're loading the model from inside this repo, run:
```python
from transformers import AutoConfig, AutoModelForCausalLM
from rnnlm_model import (
RNNLMConfig,
RNNLMForCausalLM,
RNNLMTokenizer,
RNNLMTextGenerationPipeline,
)
AutoConfig.register("rnnlm", RNNLMConfig)
AutoModelForCausalLM.register(RNNLMConfig, RNNLMForCausalLM)
model = AutoModelForCausalLM.from_pretrained(
"./",
trust_remote_code=True,
)
tokenizer = RNNLMTokenizer.from_pretrained("./")
pipe = RNNLMTextGenerationPipeline(model=model, tokenizer=tokenizer)
```
## Usage Examples
Generation uses a base configuration of `max_new_tokens=50`, `do_sample=True`, and `temperature=1.0` unless overridden.
### Basic Generation (Default Parameters)
```python
output = pipe("The storm came", max_new_tokens=50, do_sample=True, temperature=1.0)
print(output[0]["generated_text"])
```
### Limiting by Sentences (`max_new_sents`)
Limit the decoded output to a specific number of sentences:
```python
# At most 1 sentence
output = pipe(
"Sarah closed her laptop and stared out the window.",
max_new_tokens=50,
max_new_sents=1,
)
print(output[0]["generated_text"])
```
## Inference API
This model is ready to deploy via HF Inference Endpoints. When using the HF Inference API or Inference Endpoints, pass parameters in the request body:
```json
{
"inputs": "The storm came",
"parameters": {
"max_new_tokens": 50,
"do_sample": true,
"temperature": 1.0,
"max_new_sents": 2
}
}
```
## Test Script
```bash
python test_model.py --model_path . --seed 0
```
## Ethical Considerations
This model was trained on publically accessible fiction books obtained via the [Toronto BookCorpus](https://yknzhu.wixsite.com/mbweb). There is a known risk that text generated by this model may deemed inappropriate or objectionable.