File size: 3,897 Bytes
133d782
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

import streamlit as st
import torch
import numpy as np
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the model and tokenizer from Hugging Face
model = AutoModelForSequenceClassification.from_pretrained("Caseyishere/StoryCraft", num_labels=5)
tokenizer = AutoTokenizer.from_pretrained("Caseyishere/StoryCraft")

# Streamlit app interface
st.set_page_config(page_title="Story Craft", page_icon="🍽️", layout="centered")

# Set page title and styles
st.title("🍽️ Welcome to Story Craft 🍽️")
st.markdown("""
    <style>
    .big-font {
        font-size:24px !important;
        font-weight:bold;
    }
    .highlight {
        color: #FF4B4B;
    }
    .divider {
        border-top: 2px solid #bbb;
        margin: 20px 0;
    }
    .menu {
        font-size:18px !important;
        line-height: 1.8;
        font-family: 'Arial', sans-serif;
    }
    </style>
    """, unsafe_allow_html=True)

# Get user input
user_input = st.text_input("Please tell us what you like today:")

if user_input:
    # Preprocess the input using the tokenizer
    inputs = tokenizer(user_input, padding=True, truncation=True, return_tensors='pt')

    # Get predictions from the model
    outputs = model(**inputs)
    predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
    predictions = predictions.cpu().detach().numpy()

    # Get the predicted label
    predicted_label = np.argmax(predictions)

    # Display the predicted label with its corresponding sentiment
    label_map = {0: "Negative", 1: "Neutral", 2: "Positive"}

    # Display the predicted label and corresponding sentiment
    st.write(f"Predicted label is {predicted_label} ({label_map.get(predicted_label, 'Unknown')} Sentence)")

    # Generate response based on predicted label
    responses = {
        0: '''**Appetizer**: Escargots: Snails cooked in garlic butter with herbs  
          **Main Course**: Coq au vin: Chicken braised in red wine with mushrooms and onions  
          **Side Dish**: Pommes frites: French fries  
          **Dessert**: Crème brûlée: Custard topped with caramelized sugar  
          **Beverage**: Bordeaux: A red wine from the Bordeaux region of France  
          **Cheese Course**: Fromage à raclette: Melted cheese served with bread, potatoes, and pickles''',
        1: '''**Appetizer**: Spätzle: Swabian egg noodles with cheese  
          **Main Course**: Wiener schnitzel: Breaded veal cutlet  
          **Side Dish**: Sauerkraut: Fermented cabbage  
          **Dessert**: Schwarzwälder Kirschtorte: Black Forest cake  
          **Beverage**: Kölsch: A light, golden ale from Cologne  
          **Cheese Course**: Käsekuchen: German cheesecake''',
        2: '''**Appetizer**: Creamy Spinach and Artichoke Dip with tortilla chips  
          **Main Course**: Ribeye Steak cooked to your desired temperature (medium-rare, medium, well-done)  
          **Side Dish**: Baked Potato topped with butter, sour cream, and bacon bits  
          **Dessert**: Chocolate Lava Cake with vanilla ice cream  
          **Beverage**: Red Wine (ask your server for a recommendation based on your preferences)  
          **Salad**: Caesar Salad with romaine lettuce, croutons, Parmesan cheese, and Caesar dressing  
**Soup**: French Onion Soup with caramelized onions, Gruyère cheese, and croutons''',
        3: "Oops! Something went wrong!"
    }

    # Display the response based on the predicted label
    st.markdown('<div class="divider"></div>', unsafe_allow_html=True)
    st.markdown(f'<div class="big-font highlight">Here is your curated menu based on your input:</div>', unsafe_allow_html=True)

    # Correcting the misplaced closing parenthesis
    st.write(responses.get(predicted_label, "I'm not sure what you're asking for."))

    # Add a separator
    st.markdown('<div class="divider"></div>', unsafe_allow_html=True)