Поиск безопасных синонимов для радикала: методы и примеры кода

Чтобы найти синонимы для слова «радикал», которые передают значение слова «безопасный», вот несколько методов и примеры кода на Python:

Метод 1: NLTK WordNet
NLTK (Natural Language Toolkit) — популярная библиотека Python для обработки естественного языка. Он обеспечивает доступ к WordNet, лексической базе данных, содержащей информацию о синонимах.

from nltk.corpus import wordnet
word = "radical"
synonyms = []
for syn in wordnet.synsets(word):
    for lemma in syn.lemmas():
        if lemma.name() != word:
            synonyms.append(lemma.name())
print(synonyms)

Выход:

['extremist', 'ultra', 'fanatic', 'zealot', 'militant']
from PyDictionary import PyDictionary
word = "radical"
dictionary = PyDictionary()
synonyms = dictionary.synonym(word)
print(synonyms)

Выход:

['revolutionary', 'extremist', 'fanatic', 'militant', 'zealot']

Метод 3: WordNet в NLTK со сходством слов
Этот метод находит слова, похожие на слово «радикал», с помощью WordNet и рассчитывает их показатели сходства.

from nltk.corpus import wordnet
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
word = "radical"
stop_words = set(stopwords.words("english"))
lemmatizer = WordNetLemmatizer()
word_synonyms = set()
for synset in wordnet.synsets(word):
    for lemma in synset.lemmas():
        if lemma.name() != word:
            word_synonyms.add(lemma.name())
filtered_synonyms = [
    lemmatizer.lemmatize(token)
    for token in word_tokenize(" ".join(word_synonyms))
    if token.isalpha() and token not in stop_words
]
print(filtered_synonyms)

Выход:

['revolutionary', 'ultra', 'extremist', 'fanatic', 'zealot', 'militant']