Я пытаюсь сгенерировать все синонимы конкретного предложения, используя библиотеку NLTK Python. Моя идея состоит в том, чтобы выполнить маркировку POS, а затем создать синонимы всех слов в предложении на основе тега POS, а затем рекурсивно создать все возможные комбинации для создания «предложений синонимов».
В настоящее время моей самой большой проблемой является то, что код для получения синонимов какого-либо слова генерирует синонимы всех возможных значений этого слова (то есть леммы из всех наборов слов, к которым относится это слово).
Например, в предложении «дайте мне свой номер» слово «номер», вероятно, означает «номер телефона», и я хотел бы получить только синонимы, такие как «номер телефона» и «номер телефона», а не другие синонимы слово «число», такое как «вопрос» и «цифра».
Меня интересует, можно ли каким-либо образом получить синсет (то есть значение) слова в предложении, чтобы брать в качестве синонимов только слова из этого конкретного синсета. Найти способ сокращения набора возможных синонимов также было бы очень полезно.
Вот мой код:
word_synonyms=set([])
for syn in wn.synsets(word, pos = pos_tag):
for lm in syn.lemmas():
word_synonyms.add(" ".join([lemma_el for lemma_el in lm.name().split('_')]))