|
import gradio as gr |
|
from collections import Counter |
|
import string |
|
|
|
def process_text(text, sorting_option): |
|
|
|
translator = str.maketrans('', '', string.punctuation) |
|
text = text.translate(translator) |
|
|
|
words = text.split() |
|
|
|
|
|
word_counts = Counter(words) |
|
|
|
|
|
if sorting_option == 'alphabetically': |
|
sorted_words = sorted(word_counts.items(), key=lambda x: x[0]) |
|
elif sorting_option == 'by_frequency': |
|
sorted_words = sorted(word_counts.items(), key=lambda x: x[1], reverse=True) |
|
else: |
|
sorted_words = word_counts.items() |
|
|
|
|
|
top_5_words = sorted_words |
|
|
|
|
|
table_html = "<table style='width:100%'><tr><th>Word</th><th>Frequency</th></tr>" |
|
for word, freq in top_5_words: |
|
table_html += f"<tr><td>{word}</td><td>{freq}</td></tr>" |
|
table_html += "</table>" |
|
|
|
|
|
div_with_scroll = f"<div style='height: 200px; overflow-y: scroll;'>{table_html}</div>" |
|
|
|
return div_with_scroll |
|
|
|
iface = gr.Interface( |
|
fn=process_text, |
|
inputs=[gr.Textbox("text", label="Paste Text Here"), |
|
gr.Radio(["alphabetically", "by_frequency", "none"], label="Select Sorting Option")], |
|
outputs=gr.HTML(label="Top 5 Words with Frequencies") |
|
) |
|
|
|
iface.launch(share=True) |
|
|