Как найти конкретный синтаксис WordNet, основанный на значении слова в предложении?
Я пытаюсь сгенерировать все синонимы конкретного предложения, используя библиотеку 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('_')]))