Как получить больше синонимов, используя NLTK Wor dnet? - PullRequest
0 голосов
/ 05 января 2020

Поэтому я использую этот код для получения синонимов.

from nltk.corpus import wordnet 

def Get_Syn(text):
    xx = []
    sentence1 = text.split(" ")
    for i in sentence1:
        if i not in stopwords:
            for syn in wordnet.synsets(i):
                for name in syn.lemma_names():
                      if name != i.lower():
                               xx.append({i:name}) 
                      else: 
                        pass
    return xx

Теперь, если я использую Get_Syn('recieve'), я получаю пустой список (без синонимов). Но, если я использую Get_Syn('get'), я получу следующий список:

[{'get': 'acquire'},
 {'get': 'become'},
 {'get': 'go'},
 {'get': 'let'},
 {'get': 'have'},
 {'get': 'receive'},
 {'get': 'find'},
 {'get': 'obtain'},
     .
     .
     .
]

Как мы видим, recieve является синонимом get, но get не является синонимом recieve.

Так, как я могу получить get, когда я ищу recieve. Есть ли способ сопоставить их вместе?

1 Ответ

3 голосов
/ 05 января 2020

ваша функция верна. у вас есть ошибка Vocab, чтобы написать получить. Получите неправильно, пожалуйста, проверьте свое слово еще раз.

Get_Syn('receive')

[
 {'receive': 'have'},
 {'receive': 'get'}, <===
 {'receive': 'find'},
 {'receive': 'obtain'},
 ...
...