Python - Как сделать это рекурсивным? - PullRequest
0 голосов
/ 22 сентября 2019

Новичок в Python и еще новее в StackOverflow.Все еще пытаюсь найти лучший способ задать вопросы и получить конструктивную обратную связь.Если я делаю что-то не так или мне нужно предоставить больше информации, пожалуйста, дайте мне знать.

my_words = []

for i in range (0, 26):
    def predict_more_words(first_word):
        bimodel = build_bigram_model()
        second_word = bimodel[first_word]
        top10words = collections.Counter(second_word).most_common(10)
        predicted_words = list(zip(*top10words))[0]
        prob_score = list(zip(*top10words))[1]
        x_pos = predicted_words
        my_words.append(x_pos[0])
        return(x_pos[0])

    predict_more_words("is")   

    print(my_words)

У меня есть приведенный выше код, который я пытаюсь вызвать рекурсивно, так что каждый раз при вызове Предиката_морея слова он принимает слово в x_pos [0] и снова передает его в функцию, пока не достигнетlen of 26. Я храню эти слова / символы в списке, который я сопоставлю с другим списком, который я уже сгенерировал.Он не принимает x_pos [0] в качестве аргумента и дает мне nameError - не определено.

Любая помощь приветствуется!Заранее спасибо!

1 Ответ

1 голос
/ 22 сентября 2019

Я не думаю, что эта функция должна быть рекурсивной, поскольку в этой задаче нет ничего рекурсивного по своей природе.

Вы можете упростить функцию, чтобы она просто возвращала наиболее вероятное предсказанное слово длялюбое слово это дано.Затем просто напишите цикл для вызова функции столько раз, сколько вам нужно, передавая ранее сгенерированное слово в функцию прогнозирования на каждом шаге.

Например:

def predict_next_word(word):
    bimodel = build_bigram_model()
    top10words = collections.Counter(bimodel[word]).most_common(10)
    predicted_words = list(zip(*top10words))[0]
    return predicted_words[0]


my_words = ["is"]

for i in range(26):
    previous_word = my_words[-1]
    my_words.append(predict_next_word(previous_word))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...