文本文件概率计算(马尔可夫链) - Python

时间:2015-01-12 20:49:24

标签: python string count probability markov-chains

我的情况很糟糕。我需要编写一些东西,这比我的能力要高。

我收到了一个包含10k字的文本,该文件被调用(test_file.txt)。 我对你们的问题是: 如何让我的程序计算每个单词和每个单词,这样我就可以计算单词的概率,看看哪个单词和字母最多。

我知道这是字符串,我现在所做的就是:

import codecs
import sys
import random

fh = codecs.open("test_file.txt", encoding="utf-8")

fh.close()

omega = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}

def Markov(text_file):
    with open("test_file.txt") as t:
        text = t.read()

    text = [' '.join(data.split(' ')) if i !=''] 
    text = [i.lower() for i in data if i.isalpha()]

    chains = {i:[] for i in data}

这是正确的吗?

我需要你的帮助。

1 个答案:

答案 0 :(得分:0)

两件事:

  1. 这与Markov Chains无关。在所有。
  2. Python实际上有一些非常好的内置函数可以使这个或多或少变得微不足道。
  3. 我不会用勺子喂一个答案,但我不想让你高高在上。要点是,根据您的具体情况,可以使用Counter中的python对象在几行中完成此操作。

    from collections import Counter
    
    text = open("test_file.txt").read().lower()
    letter_freqs = Counter(text)
    
    word_freqs = Counter(text.split())
    

    根据您正在寻找的最终结果,这可能会或可能不够,但这应该让您足够远,其余部分应该非常简单。