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()