Как создать Маркову цепь с файлом под названием 1.txt(работаю в collab)
import os
import markovify
import markovify
with open("1.txt", encoding='utf-8') as f:
text = f.read()
text_model = markovify.Text(text)
for i in range(4):
print(text_model.make_short_sentence(380))
вот код, что я набросал, но результат выходит следующий:
None
None
None
None
Что делать? поправка: при внесении большого текста, как например приведённого в ответе ниже, он выдаёт следующую ошибку:
KeyError Traceback (most recent call last)
<ipython-input-13-d9c4af63990a> in <module>()
6
7 # Build the model.
----> 8 text_model = markovify.Text(text)
9
10 # Print one randomly-generated sentence
2 frames
/usr/local/lib/python3.6/dist-packages/markovify/chain.py in precompute_begin_state(self)
96 """
97 begin_state = tuple([ BEGIN ] * self.state_size)
---> 98 choices, cumdist = compile_next(self.model[begin_state])
99 self.begin_cumdist = cumdist
100 self.begin_choices = choices
KeyError: ('___BEGIN__', '___BEGIN__')
Ответы (1 шт):
Метод .make_short_sentence() возвращает None, когда он не может сгенерировать предложение.
Вероятно ваш текст очень короткий, с небольшим количеством предложений, чтобы было возможно сделать с него предложение не совпадающие очень сильно с частью оригинального текста.
Сделайте ваш текст в файле 1.txt более длинным, с большим количеством длинных предложений.
(Например более чем 1 KB с более чем 8 длинными предложениями.)
Пример вывода из вашей программы, когда в файле 1.txt сказка Волк и лиса:
Было у меня и маслице слизала да муку рассыпала? Стала в кладовушке подлизано! Явилась из кладовушки, волку говорит: — Я буду дрова носить, печку топить. Первую ночь лиса на приступочке спала, на вторую забралась в кладовушку, посмотри там хорошенько.