2015-04-16 6 views
-1

У меня есть задание для создания программы, которая основывается на входном файле, читает текст и затем генерирует новый текст. Словарь должен отображать n строк букв в список букв, которые могут следовать за строкой, основываясь на тексте во входном файле. До сих пор у меня естьПостроение марковской модели из текстового файла?

def create_dic(): 
    n = order_entry.get() 
    inputfile = file_entry.get() #name of input file 
    lines = open(inputfile,'r').read() #reads input file into string 
    model = {} #empty dictionary to build Markov model 

Для каждой последовательности п-символов на входе, я должен «посмотреть его в словаре, чтобы получить список возможных последующих символов и получить следующий символ.» Я запутался в инструкции по поиску строки в словаре, когда словарь пуст для начала? Разве не будет ничего в словаре?

+3

Это, вероятно, ваша работа: наполнитьсетевую Словарь. – Sinkingpoint

+0

В книге [Практика программирования] (http://www.informit.com/store/practice-of-programming-9780201615869) есть глава о реализации программы, а именно. Разница в том, что он работает со словами, а не с персонажами, но в остальном работа удивительно похожа. (AFAICT, веб-сайт Bell Labs - http://cm.bell-labs.com/cm/cs/tpop/ - прошел AWOL через некоторое время с 2015-04-04.) –

ответ

0

Поскольку это задание, я дам вам более важные вопросы, а не ответ. Как сказал @Quirliom, «Заполните словарь».

Если вы хотите использовать марковскую модель, какой ключ вы бы искали в словаре?

Когда вы ищите этот ключ, что бы вы хотели вернуть?

Предложение «Словарь должен отображать n строк букв в список букв, которые могут следовать за строкой, основанной на тексте во входном файле», есть ответы на эти вопросы. Это означает, что вам нужно будет выполнить некоторую работу над входным файлом, чтобы выяснить, как извлечь ключи словаря и на что они должны сопоставляться.

+0

Когда вы используете Маркова, вы бы искали строку n-символа, и значение было бы списком возможных последующих букв, правильно? После этого следуйте следующим инструкциям: «Получите следующий символ, следуя последовательности из ввода, добавьте этот символ в список преемников и верните список в словарь». Таким образом, похоже, что вы заполняете словарь. У меня возникли проблемы с пониманием того, как вы получаете какие-либо списки. При n = 1 при поиске словаря он пуст, поэтому список возможных преемников отсутствует. Поэтому словарь остается пустым. –

0

это определенно не лучший подход, но вы начинаете с этого.

  • на почтовой основе: какая буква в первую очередь наиболее (для целых данных).

первый символ (буква) слова - счетные сущности. и разумно проверить, какой символ (буква) имеет большинство записей. запустите свой сгенерированный текст. то посмотрите, какое письмо больше всего подходит для этого и так далее. также занимают среднюю длину слова и распределяют сгенерированные слова по этой длине.

для достижения лучших результатов:

  • на п грамм основе: которой п-грамм, скорее всего, предшествуют другим (вы можете продлить его также в качестве предложений)
Смежные вопросы