Надеюсь, это не так запутанно, как кажется.У меня есть проблема, когда я пытаюсь заменить n слов в предложениях, перебирая все комбинации на основе их частей речи.т.е.
- сделать изображение
- сделать сайт
- сделать акцию
- получить изображение
- получить сайт
- получить запас ...
Я новичок в использовании итераций, и автоматизация этого цикла, основанного на n словах для замены, заставила меня почесать голову.Ниже приведены примеры данных ...
> replaceable_list: [('mow', 'VB'), ('lawn', 'NN')]
> mostCommon_list [['make', 'get', 'draw', 'sign', 'sell'], ['image', 'site', 'stock', 'drawing', 'photo', 'way', 'people', 'money', 'image', 'skill']]
> Question: "You are trying to earn one hundred nine dollars for some new CDs. If you charge forty-seven dollars to mow a lawn, how many lawns will you need to mow to earn the money?"
Как видите, у меня уже есть самый Common_list, соответствующий replaceable_list.Последний код, который я использовал, выглядит следующим образом:
:)
question = word_tokenize(question)
first_word = question
#This loops through each replacement word
mostCommonwords, mostCommonPOS = zip(*replaceable_list)
commonlisttuples = list(itertools.product(*mostCommon_list))
for wordsintuple in commonlisttuples:
for wordintuple in wordsintuple:
#print(wordintuple)
for commonwords in mostCommonwords:
print(replace_all(str(question), commonwords, wordintuple))
Я ооочень близок!Обновление: я изменил код выше:
for x in result:
print("x", x)
for idxy, val in enumerate(replaceable_list): #Caputure the word and the POS in list
#print("idxy", idxy, "\n", "val", val, "\n")
print("replaceable_list",val[0]) #prints each replacement word
print("mostCommon_list[idxy]",mostCommon_list[idxy], "\n") #prints the list that the replacement should come from
print(replace_all(str(first_word), val[0], x[idxy])) #target, find, replacement
Вот функция replace_all, которую я забыл упомянуть.Мои извинения ..
def replace_all (target,find,replace):
return replace.join(target.split(find))
Теперь я пытаюсь добавить возвращенные результаты вместе.Ввод косить газон , но вывод выглядит следующим образом:
- сделать газон
- косить изображение
- сделать газон
- косить участок
- сделать газон
- косить на складе
Вместо ..
- сделать a изображение
- make a site
- make a stock
- get a image
- get a site
- get a акции ...