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