import gradio as gr import random import nltk from nltk.corpus import wordnet import requests # Download the Croatian WordNet data nltk.download("wordnet") nltk.download("omw") nltk.download("omw-1.4") # Function to get the English WordNet synset ID for a Croatian word def get_english_synset_id(croatian_word): # Convert the Croatian word to English WordNet synset IDs synsets = wordnet.synsets(croatian_word, lang="hrv") print(f"synsets: {synsets}") # Check if any synsets were found if synsets: # Take the first synset (you can modify this to handle multiple synsets if needed) hrv_synset = synsets[0] english_synset_id = wordnet.synset_from_pos_and_offset("n", hrv_synset.offset()) return english_synset_id else: return None # Function to get definitions and images from web def get_definition_and_image(word): # Define the WordNet synset ID for the concept you're interested in synset_id = get_english_synset_id(word) #"n07753592" # Replace with the synset ID you want if not synset_id: return None return word + ":\n" + synset_id.definition() or "" # Function to randomly sample a noun or verb def sample_word_and_display_info(dummy="dummy"): is_noun = random.choice([True, False]) # Randomly choose noun or verb if is_noun: pos = "n" else: pos = "v" # Get a random word of the chosen part of speech from the Croatian WordNet word = random.choice(list(wordnet.all_lemma_names(pos, lang="hrv"))) print(f"Word: {word}") # Get the definition and image (change the function for your source) definition = get_definition_and_image(word) if definition: print(f"Word: {word}") print(f"Part of speech: {'Noun' if is_noun else 'Verb'}") print(f"Definition: {definition}") return definition else: print(f"No information found for '{word}'") return f"No information found for '{word}'" with gr.Blocks() as demo: text = sample_word_and_display_info() print(text) with gr.Row(): text_1 = gr.Textbox(label="text") button = gr.Button(label="Update Text") button.click(sample_word_and_display_info,inputs=text_1, outputs=text_1) demo.launch()