Как найти конкретный синтаксис WordNet, основанный на значении слова в предложении? - PullRequest
0 голосов
/ 24 января 2019

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