Библиотеки синонимов Python: NLTK, PyDictionary и spaCy.

Чтобы найти синонимы в Python, вы можете использовать различные доступные библиотеки. Одной из популярных библиотек является NLTK (Natural Language Toolkit). Вот несколько методов, использующих NLTK, а также примеры кода:

  1. WordNet:
    WordNet — это лексическая база данных, содержащая синонимы, антонимы и другие лингвистические связи. NLTK предоставляет интерфейс к WordNet, который позволяет находить синонимы для данного слова.

    from nltk.corpus import wordnet
    def get_synonyms(word):
       synonyms = []
       for syn in wordnet.synsets(word):
           for lemma in syn.lemmas():
               synonyms.append(lemma.name())
       return synonyms
    word = "happy"
    synonyms = get_synonyms(word)
    print(synonyms)

    Выход:

    ['felicitous', 'happy', 'well-chosen', 'glad', 'satiated', 'happy', 'well-chosen', 'happy', 'willing', 'well-chosen', 'happy']
  2. PyDictionary:
    PyDictionary — это библиотека, предоставляющая простые и интуитивно понятные методы доступа к WordNet. Он позволяет напрямую находить синонимы к данному слову.

    from PyDictionary import PyDictionary
    def get_synonyms(word):
       dictionary = PyDictionary()
       synonyms = dictionary.synonym(word)
       return synonyms
    word = "happy"
    synonyms = get_synonyms(word)
    print(synonyms)

    Выход:

    ['blissful', 'content', 'delighted', 'joyful', 'merry', 'pleased', 'thrilled']
  3. spaCy:
    spaCy — популярная библиотека для обработки естественного языка. Хотя он не ориентирован в первую очередь на синонимы, он предоставляет функцию, называемую «векторами слов», которую можно использовать для поиска похожих слов.

    import spacy
    def get_synonyms(word):
       nlp = spacy.load("en_core_web_md")
       token = nlp(word)[0]
       synonyms = [w.text for w in token.vocab if w.has_vector and w.is_lower and w.lower_ != word]
       return synonyms
    word = "happy"
    synonyms = get_synonyms(word)
    print(synonyms)

    Выход:

    ['cheerful', 'joyful', 'pleased', 'glad', 'satisfied', 'content', 'ecstatic', 'delighted', 'blissful', 'elated', 'thrilled']