import streamlit as st import pandas as pd from py_thesaurus import Thesaurus import random from transformers import GPT2LMHeadModel, GPT2Tokenizer # Load GPT-2 model and tokenizer model = GPT2LMHeadModel.from_pretrained("gpt2") tokenizer = GPT2Tokenizer.from_pretrained("gpt2") # Function to generate random text using GPT-2 def generate_text(prompt): inputs = tokenizer.encode(prompt, return_tensors="pt") outputs = model.generate(inputs, max_length=50, num_return_sequences=1) return tokenizer.decode(outputs[0]) # Function to replace a random word with its synonym def replace_with_synonym(sentence): words = sentence.split() index = random.randint(0, len(words) - 1) word = words[index] synonyms = Thesaurus(word).get_synonym() if synonyms: replacement = random.choice(synonyms) words[index] = replacement return ' '.join(words) st.title('Joke Parts Voting Game') st.write('Upvote or downvote the funny joke parts generated below!') # Create thumbs up and thumbs down buttons thumbs_up = st.button('👍') thumbs_down = st.button('👎') # Initialize upvote and downvote counts upvotes = 0 downvotes = 0 # Increment upvote or downvote count when corresponding button is clicked if thumbs_up: upvotes += 1 elif thumbs_down: downvotes += 1 # Display upvote and downvote count st.write(f'👍 {upvotes} | 👎 {downvotes}') # Create scoreboard using pandas and display it scoreboard = pd.DataFrame({'Upvotes': [upvotes], 'Downvotes': [downvotes]}) st.write(scoreboard) # Save scoreboard to output CSV file scoreboard.to_csv('output.csv', index=False) # Generate a random text using GPT-2 prompt = "Tell me a joke:" original_text = generate_text(prompt) modified_text = replace_with_synonym(original_text) # Display the modified text st.write(f'🤣 {modified_text}')