import streamlit as st
from collections import Counter
import plotly.express as px
import numpy as np

def get_word_score(word):
    # This function returns a score based on the length of the word
    # Modify this function as per your requirements
    score = len(word)**2
    return score

def get_word_frequency(text):
    # This function returns the word frequency of the given text
    words = text.split()
    word_frequency = Counter(words)
    return word_frequency

# Load the markdown file
with open('Setup.md', 'r') as file:
    text = file.read()


# Display the parsed markdown
st.markdown(text, unsafe_allow_html=True)

# Get the word frequency of the markdown text
word_frequency = get_word_frequency(text)

# Get the top words and their frequency
top_words = word_frequency.most_common(10)
top_words_dict = dict(top_words)

# Create a Plotly bar chart to display the top words and their frequency
fig = px.bar(x=list(top_words_dict.keys()), y=list(top_words_dict.values()), labels={'x':'Word', 'y':'Frequency'})
st.plotly_chart(fig)

# Calculate the scores for each word based on their length
word_scores = {word:get_word_score(word) for word in word_frequency}
top_word_scores = dict(sorted(word_scores.items(), key=lambda item: item[1], reverse=True)[:10])

# Create a Plotly bar chart to display the top words and their scores
fig = px.bar(x=list(top_word_scores.keys()), y=list(top_word_scores.values()), labels={'x':'Word', 'y':'Score'})
st.plotly_chart(fig)