|
import streamlit as st |
|
import itertools |
|
import nltk |
|
from nltk.corpus import wordnet, words |
|
|
|
|
|
nltk.download("wordnet") |
|
nltk.download("words") |
|
|
|
def get_related_words(word): |
|
synonyms = set() |
|
antonyms = set() |
|
hypernyms = set() |
|
hyponyms = set() |
|
|
|
for syn in wordnet.synsets(word): |
|
for lemma in syn.lemmas(): |
|
synonyms.add(lemma.name()) |
|
if lemma.antonyms(): |
|
antonyms.add(lemma.antonyms()[0].name()) |
|
|
|
for hyper in syn.hypernyms(): |
|
hypernyms.update(lemma.name() for lemma in hyper.lemmas()) |
|
|
|
for hypo in syn.hyponyms(): |
|
hyponyms.update(lemma.name() for lemma in hypo.lemmas()) |
|
|
|
return { |
|
"synonyms": list(synonyms), |
|
"antonyms": list(antonyms), |
|
"hypernyms": list(hypernyms), |
|
"hyponyms": list(hyponyms), |
|
} |
|
|
|
def generate_words(letters, length=None): |
|
english_words = set(words.words()) |
|
permutations = set() |
|
for i in range(1, len(letters) + 1): |
|
for p in itertools.permutations(letters, i): |
|
word = "".join(p).lower() |
|
if (length is None or len(word) == length) and word in english_words: |
|
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 and Related Words Lookup") |
|
selected_word = st.selectbox("Select a word to look up related words:", [""] + sorted(words)) |
|
if selected_word: |
|
related_words = get_related_words(selected_word) |
|
st.subheader("Synonyms") |
|
st.write(related_words["synonyms"]) |
|
st.subheader("Antonyms") |
|
st.write(related_words["antonyms"]) |
|
st.subheader("Hypernyms (more general terms)") |
|
st.write(related_words["hypernyms"]) |
|
st.subheader("Hyponyms (more specific terms)") |
|
st.write(related_words["hyponyms"]) |
|
|