Я создаю чат-бота. Он захватывает файл и вот следующий код, генерирующий случайные вещи. Но это совсем не случайно. Он начинает с первого слова из файла и каждый раз генерирует очень похожий текст. Я что-то пропустил? Пожалуйста, помогите мне.
Python 3.7
import random
import os.path
table = {}
sentences_maximum = 10
def generate_table(name_of_file):
stopword = "\n"
stopsentence = (".", "!", "?",)
w1 = stopword
w2 = stopword
file = open(name_of_file, 'r')
if os.path.getsize(name_of_file) == 0:
print("name of file == 0")
return
print("generating table")
global table
for line in file:
for word in line.split():
if word[-1] in stopsentence:
table.setdefault((w1, w2), []).append(word[0:-1])
w1, w2 = w2, word[0:-1]
word = word[-1]
table.setdefault((w1, w2), []).append(word)
w1, w2 = w2, word
table.setdefault((w1, w2), []).append(stopword)
file.close()
def generate_sentence_output(filename):
global sentences_maximum
generate_table(filename)
print('generating sentences')
sentencesep = " "
stopword = "\n"
stopsentence = (".", "!", "?",)
result = ""
w1 = stopword
w2 = stopword
sentencecount = 0
sentence = []
global table
if os.path.getsize(filename) == 0:
result = "Сначала научи меня говорить"
return result
while sentencecount < sentences_maximum:
newword = random.choice(table[(w1, w2)])
if newword == stopword:
break
if newword in stopsentence:
result = result + ("%s%s%s" % (" ".join(sentence), newword, sentencesep))
sentence = []
sentencecount += 1
else:
sentence.append(newword)
w1, w2 = w2, newword
print(result)
return result
generate_sentence_output("file.txt")