2015-01-12 5 views
-1

나는 아주 좋지 않습니다. 나는 뭔가를 프로그램 할 필요가있다. 그것은 나의 능력을 뛰어 넘는 수준이다.텍스트 파일 확률 계산 (Markov Chain) - Python

필자에게 10k 단어의 텍스트가 주어 졌으므로 파일 이름은 test_file.txt입니다. 내 질문에 u 얘들 아 있습니다 : 어떻게 모든 단어와 모든 문자 하나를 세어 내 프로그램을 얻을 수 있도록 단어를 통해 확률을 계산할 수 있으므로 어떤 단어와 문자가 가장 많이 표시되는지 확인할 수 있습니다. 모든 나는이 순간에 이루어 나는 그것이 문자열 뭔가 알고

은 다음과 같습니다

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} 

이 맞습니까?

당신 도움이 필요합니다.

+2

20 단어의 작은 파일로 테스트 할 때 원하는대로 할 수 있습니까? – Gerrat

+0

작은 파일로 테스트하는 방법을 알지 못합니다. 문제가 있습니다. 희망은 나를 도울 수 있습니다. – Borgmester

+1

"나쁜 상황"이라면 뭔가 머리를 숙이다. 나는 그것을 "학습"이라고 부를 것이다. – jme

답변

0

두 가지가 :

  1. 이것은 마르코프 체인 관련이 없습니다. 조금도.
  2. 파이썬에는 실제로 약간의 기능을 제공하는 내장 함수가 있습니다.

나는 대답을 숟가락으로 먹이지 않겠지 만, 나는 당신을 높게두고 건조한 채로두고 싶지 않습니다. 요점은 귀하의 구체적인 내용에 따라 개체를 python에 사용하여 몇 줄로 처리 할 수 ​​있다는 것입니다.

from collections import Counter 

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

word_freqs = Counter(text.split()) 

당신이 또는 충분하지 않을 수도 있습니다 찾고있는 결과를, 그러나 이것은 나머지는 아주 사소한 것을 당신은 충분히 얻을해야하는지 말에 따라.

+0

지금은 마르코프 쇠사슬이 너무 많지는 않지만 내 프로젝트에는 마르코프 쇠사슬이 포함됩니다. 이것은 시작에 불과합니다. 어쨌든, 답변 주셔서 감사합니다! – Borgmester

+0

마르코프 체인으로 이사하시는 데 관심이 있으시면 여기 (https://gist.github.com/Slater-Victoroff/6227656)를 참조하십시오. 도움이되는 답변을 찾은 경우 수락하는 것을 잊지 마십시오 (투표 수 아래에 체크 표시). –

+0

완벽하게 작동합니다. 이제이 수를 백분율 수로 변환해야합니다. 아마도 다음과 같을 것입니다. (Letters_representation/text) * 100 letter_representation을 얻었을 때, 텍스트의 모든 문자를 정확히 나타낼 필요가 있습니다. 그래서 모든 단일 문자 및 모든 단일 단어에 대해이를 해결할 수있는 함수를 정의해야합니다. 권리? – Borgmester