예제 #1
0
def semantic_analysis():
    wikiwordnet = WikiWordnet()
    text = calculated_text.get(1.0, END)
    text = text.replace('\n', '')
    if text == '':
        return None
    start = time.time()
    if letters_in_the_word(text):
        hyponyms = []
        # Кольцо синонимов или синсет - это группа элементов данных, которые считаются семантически эквивалентными
        # для целей поиска информации
        synsets2 = wikiwordnet.get_synsets(text)
        text = ''
        lemmas2 = [x.lemma() for x in synsets2[0].get_words()]

        # Synset представляет группу лемм, имеющих одинаковый смысл, а лемма представляет собой отдельную словоформу.
        for lemma in lemmas2:
            text += lemma + ' '

        synset2 = synsets2[0]
        for hypernym in wikiwordnet.get_hypernyms(synset2):
            for w in hypernym.get_words():
                text += w.lemma() + ' '

        for hyponym in wikiwordnet.get_hyponyms(synset2):
            for w in hyponym.get_words():
                text += w.lemma() + ' '

        word_cloud(text)
        end = time.time()
        print("Total time: {:.1f}".format(end - start))
    else:
        messagebox.showwarning('Warning!!!', 'One word!', type='ok')
예제 #2
0
def semantic_analysis(text):
    wikiwordnet = WikiWordnet()
    tree_text = re.sub('-', ',', text)
    if tree_text == '':
        return None
    if letters_in_the_word(tree_text):
        hyponyms = []
        # Кольцо синонимов или синсет - это группа элементов данных, которые считаются семантически эквивалентными
        # для целей поиска информации
        synsets2 = wikiwordnet.get_synsets(tree_text)
        text = ''
        lemmas2 = [x.lemma() for x in synsets2[0].get_words()]
        # Synset представляет группу лемм, имеющих одинаковый смысл, а лемма представляет собой отдельную словоформу.
        for lemma in lemmas2:
            text += lemma + ' '

        synset2 = synsets2[0]
        for hypernym in wikiwordnet.get_hypernyms(synset2):
            for w in hypernym.get_words():
                text += w.lemma() + ' '

        for hyponym in wikiwordnet.get_hyponyms(synset2):
            for w in hyponym.get_words():
                text += w.lemma() + ' '
        return word_cloud(text)
예제 #3
0
def view_window():
    text = calculated_text.get(1.0, END)
    text = text.replace('\n', '')
    if text != '':
        check = check_word(text)
        if not check:
            messagebox.showwarning('!',
                                   'Необходимо ввести одно слово',
                                   type='ok')
        else:
            wiki_wordnet = WikiWordnet()
            syn = wiki_wordnet.get_synsets(text.lower())
            text = ''
            for l in syn[0].get_words():
                text += l.lemma() + ' '
            for i in wiki_wordnet.get_hyponyms(syn[0]):
                for hyponym in i.get_words():
                    text += hyponym.lemma() + ' '
            for j in wiki_wordnet.get_hypernyms(syn[0]):
                for hypernym in j.get_words():
                    text += hypernym.lemma() + ' '
            wordcloud = WordCloud(relative_scaling=1.0, ).generate(text)
            plt.imshow(wordcloud)
            plt.axis("off")
            plt.show()
예제 #4
0
def semantic_parse(text):
    wiki_wordnet = WikiWordnet()
    syn = wiki_wordnet.get_synsets(text.lower())
    if syn:
        synonyms = [l.lemma() for l in syn[0].get_words()]
        hyponyms = [
            hyponym.lemma() for i in wiki_wordnet.get_hyponyms(syn[0])
            for hyponym in i.get_words()
        ]
        hypernyms = [
            hypernym.lemma() for j in wiki_wordnet.get_hypernyms(syn[0])
            for hypernym in j.get_words()
        ]
    else:
        synonyms = hyponyms = hypernyms = []
    return {'synonyms': synonyms, 'hyponyms': hyponyms, 'hypernyms': hypernyms}