Spaces:
Runtime error
Runtime error
File size: 3,534 Bytes
ae4ea47 053844b 8e72703 053844b 3e994a1 053844b 7099fbc ae4ea47 053844b 6bc5afd 053844b 47f01ff 053844b 8e72703 053844b 6bc5afd 053844b 6bc5afd 053844b f0176cc 6bc5afd 053844b 49c7bae 50d5573 8e72703 053844b 8e72703 49c7bae 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 |
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="
# Cofrom PIL import Image mbine the base URL and the synset ID to get a list of image URLs
url = base_url + synset_id
# 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, 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():
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, "No information found for '{word}'"
with gr.Blocks() as demo:
image, text = sample_word_and_display_info()
gr.Image(image)
gr.Markdown(text)
demo.launch()
|