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

Text file probability calculation (Markov Chain) - Python

我的处境很糟糕。我需要编写一些程序,这超出了我的能力范围。

我得到了一个 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. 这与马尔可夫链无关。完全没有。
  2. Python 实际上有一些非常好的内置函数可以使这或多或少变得微不足道。

我不会用勺子喂养答案,但我不想让你在这个问题上高高在上。要点是,根据您的具体情况,这可以使用 python.

中的 Counter 对象在几行中完成
from collections import Counter

text = open("test_file.txt").read().lower()
letter_freqs = Counter(text)

word_freqs = Counter(text.split())

根据您正在寻找的最终结果,这可能足够也可能不够,但这应该让您走得足够远,其余的应该非常微不足道。