Чтобы найти синонимы для слова «радикал», которые передают значение слова «безопасный», вот несколько методов и примеры кода на 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']