Spaces:
Runtime error
Runtime error
File size: 3,916 Bytes
ae4ea47 053844b 8e72703 053844b 3e994a1 053844b 7099fbc ae4ea47 053844b 6bc5afd 053844b 47f01ff e95dd79 053844b b5eeb74 9162278 12f9f43 053844b bd565dd 053844b 6bc5afd 053844b f3091e4 053844b f0176cc 6bc5afd 053844b 49c7bae 5a18cf7 5483cd2 053844b 8e72703 3c83a88 4c5e037 bee43ef 4c5e037 d3b4381 bee43ef 8e72703 81136e1 3e994a1 81136e1 6bf846d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
import gradio as gr
import random
import nltk
from nltk.corpus import wordnet
from PIL import Image
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):
# try:
# # You may need to adjust this URL based on the source of definitions and images
# url = f"https://your-dictionary-website.com/{word}"
# response = requests.get(url)
# soup = BeautifulSoup(response.text, "html.parser")
# # Extract definition and image (assuming they are in specific HTML elements)
# definition = soup.find("div", {"class": "definition"}).text
# image_url = soup.find("img", {"class": "word-image"})["src"]
# return definition, image_url
# except Exception as e:
# return None, None
# 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
# URL for the ImageNet API
base_url = "http://www.image-net.org/api/text/imagenet.synset.geturls?wnid="
if not synset_id: return None, None
# Cofrom PIL import Image mbine the base URL and the synset ID to get a list of image URLs
url = base_url + str(synset_id.offset())
# Send a GET request to the URL
response = requests.get(url)
if response.status_code == 200:
# Parse the response to get a list of image URLs
image_urls = response.text.splitlines()
# Print the first 10 image URLs
for i, url in enumerate(image_urls[:10], start=1):
print(f"Image {i}: {url}")
return word + ":" + synset_id.definition() or "" , image_urls[0]
else:
print(f"Failed to retrieve image URLs. Status code: {response.status_code}")
return None, None
# 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, image_url = get_definition_and_image(word)
if definition and image_url:
print(f"Word: {word}")
print(f"Part of speech: {'Noun' if is_noun else 'Verb'}")
print(f"Definition: {definition}")
print(f"Image URL: {image_url}")
return image_url ,definition
else:
print(f"No information found for '{word}'")
img = Image.new('RGB', (64,64) )
return img, f"No information found for '{word}'"
with gr.Blocks() as demo:
image, text = sample_word_and_display_info()
print(image, text)
with gr.Row():
img_1= gr.Image(label="image")
inp = gr.Textbox(placeholder="What is your name?")
text_1 = gr.Markdown(label="text")
button = gr.Button(label="Update Text")
button.click(sample_word_and_display_info,inputs=inp, outputs=text_1)
demo.launch()
|