【问题标题】:Text file probability calculation (Markov Chain) - Python文本文件概率计算(马尔可夫链)- Python
【发布时间】:2023-03-31 19:09:01
【问题描述】:

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

我收到了一个 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}

这对吗?

我需要你们的帮助。

【问题讨论】:

  • 当你用一个 20 字的小文件来测试它时,它是否如你所愿?
  • 我什至不知道如何用小文件测试它,这就是问题所在。希望你能帮助我。
  • 您将做一些超出您想象的事情称为“糟糕的情况”。我称之为“学习”。
  • 我之所以称之为“糟糕的情况”,是因为我已经无法走得更远了。我知道该怎么做,我理解任务和意义,但我就是不会编码。
  • 如果你不会编码,说明你真的不知道该怎么做。

标签: python string count probability markov-chains


【解决方案1】:

两件事:

  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())

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

【讨论】:

  • 现在没有那么多马尔可夫链,但我的项目将进一步包括马尔可夫链,这只是开始。无论如何,谢谢你的回答!
  • 如果你有兴趣转向马尔可夫链,我在这里有一个要点:gist.github.com/Slater-Victoroff/6227656。另外,如果您发现一个答案有帮助,请不要忘记接受它(在计票下方打勾。)
  • 老兄,它工作得很好。现在我需要将这些数字转换为百分比数字。它可能是这样的: (Letters_representation/text)*100 当我得到 letter_representation 时,我需要知道文本中所有字母的确切表示。所以我需要定义一个函数,它可以为每个字母和每个单词解决这个问题。对吗?
猜你喜欢
  • 2014-10-06
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2015-12-11
  • 2018-03-24
  • 2022-01-24
  • 1970-01-01
  • 2021-07-14
相关资源
最近更新 更多