Используйте алгоритм lesk для замены слов в предложении синонимами - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь заменить слова в предложении, используя алгоритм lesk. В настоящее время я сделал с Wordnet. Я не могу интегрировать lesk в этом. Может ли кто-нибудь помочь мне с этим.

from nltk.corpus import wordnet
from nltk.tokenize import word_tokenize
from nltk.wsd import lesk
from random import randint
import nltk.data
text = "I am going to Banglore this weekend"
output = ""
words = word_tokenize(text)
a= []
for i in range(len(words)):
    a.append(lesk(words,words[i],'n'))

for i in range(0,len(words)):
    replacements = []

# Only replace nouns with nouns, vowels with vowels.
for syn in wordnet.synsets(words[i]):

    if tagged[i][1] == 'NNP' or tagged[i][1] == 'DT':
        break

    word_type = tagged[i][1][0].lower()
    if syn.name().find("."+word_type+"."):
        # extract the word only
        r = syn.name()[0:syn.name().find(".")]
        replacements.append(r)

if len(replacements) > 0:
    # Choose a random replacement
    replacement = replacements[randint(0,len(replacements)-1)]
    output = output + " " + replacement
else:

    output = output + " " + words[i]
print(wordnet.synsets(words[i]))
print(output)

Я хочу использовать вывод:

for i in range(len(words)):
    a.append(lesk(words,words[i],'n'))

заменить слова синонимами. т.е. вывод lesk (lesk_sense)

Пожалуйста, если у кого-нибудь есть идея, проведите меня через это.

...