|
import streamlit as st |
|
import itertools |
|
from nltk.corpus import wordnet |
|
|
|
def get_synonyms(word): |
|
synonyms = set() |
|
for syn in wordnet.synsets(word): |
|
for lemma in syn.lemmas(): |
|
synonyms.add(lemma.name()) |
|
return list(synonyms) |
|
|
|
def generate_words(letters, length=None): |
|
permutations = set() |
|
for i in range(1, len(letters) + 1): |
|
for p in itertools.permutations(letters, i): |
|
word = "".join(p) |
|
if length is None or len(word) == length: |
|
permutations.add(word) |
|
return permutations |
|
|
|
st.title("Scrabble Helper") |
|
|
|
letters = st.text_input("Enter the letters you have:") |
|
word_length = st.number_input("Enter the word length (optional):", min_value=0, value=0, step=1) |
|
|
|
if letters: |
|
st.header("Generated Words") |
|
words = generate_words(letters, length=word_length if word_length > 0 else None) |
|
st.write(words) |
|
|
|
st.header("Thesaurus Lookup") |
|
selected_word = st.selectbox("Select a word to look up synonyms:", [""] + sorted(words)) |
|
if selected_word: |
|
synonyms = get_synonyms(selected_word) |
|
st.write(synonyms) |
|
|