File size: 3,248 Bytes
ae4ea47
053844b
 
 
e1c22c9
053844b
3e994a1
053844b
 
 
7099fbc
ae4ea47
053844b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a36aeae
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
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")
    
    # Check if any synsets were found
    if synsets:
        # Take the first synset (you can modify this to handle multiple synsets if needed)
        english_synset_id = synsets[0].name()
        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="
    
    # Combine 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}")
    else:
        print(f"Failed to retrieve image URLs. Status code: {response.status_code}")

# 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(wordnet.all_lemma_names(pos, lang="hrv"))
    
    # 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}'")
        return none,none



def sample():
    return sample_word_and_display_info()
    

iface = gr.Interface(fn=sample, inputs="text", outputs="image, text")
iface.launch()