Jan Philip Wahle
Add more paraphrase types
aa3742a
raw
history blame
3.16 kB
# Copyright 2023 by Jan Philip Wahle, https://jpwahle.com/
# All rights reserved.
import os
import random
import time
import gradio as gr
import openai
openai.api_key = os.environ.get("OPENAI_API_KEY")
def create_prompt(sentence, paraphrase_type):
prompt = {
"messages": [
{
"role": "user",
"content": f"Given the following sentence, generate a paraphrase with the following types. Sentence: {sentence}. Paraphrase Types: {paraphrase_type}"
}
]
}
return prompt
paraphrase_types = [
"Derivational Changes",
"Inflectional Changes",
"Modal Verb Changes",
"Spelling changes",
"Change of format",
"Same Polarity Substitution (contextual)",
"Same Polarity Substitution (habitual)",
"Same Polarity Substitution (named ent.)",
"Converse substitution",
"Opposite polarity substitution (contextual)",
"Opposite polarity substitution (habitual)",
"Synthetic/analytic substitution",
"Coordination changes",
"Diathesis alternation",
"Ellipsis",
"Negation switching",
"Subordination and nesting changes",
"Direct/indirect style alternations",
"Punctuation changes",
"Syntax/discourse structure changes",
"Entailment",
"Identity",
"Non-paraphrase",
"Addition/Deletion",
"Change of order",
"Semantic-based"
]
with gr.Blocks() as demo:
description = gr.Markdown("""
## Paraphrase Type Generator
This demo uses a fine-tuned ChatGPT-3.5 model to generate paraphrases given specific paraphrase types.
**How to use:**
1. Select one or many type of paraphrase from the dropdown menu.
2. Enter a sentence in the text box.
3. Click the "Submit" button or hit enter.
4. The application will generate a paraphrase of the input sentence based on the selected type.
""")
chatbot = gr.Chatbot()
types = gr.Dropdown(
paraphrase_types,
value="Syntax-based changes",
multiselect=True,
allow_custom_value=True,
)
msg = gr.Textbox()
submit = gr.Button("Submit")
clear = gr.Button("Clear")
def user(user_message, history):
return "", history + [[user_message, None]]
def generate_paraphrase(user_message, paraphrase_type, history):
history[-1][1] = ""
prompt = create_prompt(history[-1][0], paraphrase_type)
bot_message = openai.ChatCompletion.create(
model="ft:gpt-3.5-turbo-0613:personal::7xbU0xQ2",
messages=prompt["messages"],
)
history[-1][1] = ""
for character in bot_message.choices[0].message.content:
history[-1][1] += character
time.sleep(0.01)
yield history
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
generate_paraphrase, [msg, types, chatbot], chatbot
)
submit.click(user, [msg, chatbot], [msg, chatbot], queue=False).then(
generate_paraphrase, [msg, types, chatbot], chatbot
)
clear.click(lambda: None, None, chatbot, queue=False)
demo.queue()
demo.launch()