2016-10-02 3 views
1

페르시아어에 텍스트 파일이 있습니다. 각 파일에는 문장이 많이 포함되어 있습니다. 그리고 각 문장 앞에는 탭이 있고 그 다음에 단어, 탭, 그리고 영어 단어가 있습니다. 일부 파일의 이러한 영어 단어는 2이고, 일부는 3이고, 일부는 5이며, 다른 일부에서는 다소 차이가 있습니다. 사실, 그들은 문장 수업을 보여줍니다. 나는 각 학급의 총 단어 수를 따로 따로 계산해야한다. 이를 위해 파일을 목록으로 변경해야만 문장을 얻을 수 있습니다. 이제 문제는, 각 클래스의 총 단어를 개별적으로 반환하는 코드를 어떻게 작성해야합니까? 다음은 샘플 문장입니다. 텍스트 파일에서 다른 클래스의 단어 수를 개별적으로 계산합니다.

corpus = [] 
def CountWords (file): 
    with open (file, encoding = "utf-8") as f1: 
     for line in f1: 
      t = line.strip().split("\t") 
      corpus.append(t) 
      for row in corpus: 
       if row[2] != row[2]: 

enter image description here

지금 나는 계속하는 방법을 모르겠어요. 누군가가 도울 수 있으면 많이 고맙습니다. (나는 프로그래밍에 대한 배경 지식이 없다.)

+0

(난 당신이 직면하는 어떤 문제가 아주 명확하지 않다,하지만 당신은 멋진 ['collections.Counter'] 사용할 수 있습니다 https://docs.python.org/3/library/collections.html#collections .Counter) 데이터 구조를 사용하여 파일의 요소를 계산합니다. – skovorodkin

+0

수업의 말로 무엇을 의미합니까? 예를 들면? –

+0

예를 들어, "열정"클래스에 얼마나 많은 단어가 들어 있는지, 얼마나 많은 단어가 "짠"클래스에 있는지. – Vahideh

답변

0

내가 올바르게 설정하면 다음 코드가 작동 할 수 있습니다. 파이썬 3.x를 사용하고 있습니다.

from collections import Counter 

counter = Counter() 

with open(filename, encoding='utf-8') as f: 
    for line in f: 
     *persian_words, word_class = line.strip().split() 
     counter[word_class] += len(persian_words) - 1 

# Print the top 10 word classes with respective number of Persian words 
for word_class, count in counter.most_common(10): 
    print('{}\t{}'.format(word_class, count)) 
+0

고마워. 그것은 내가 원한 것이다. 그러나 불행히도, 그것은 총 단어의 올바른 숫자를 반환하지 않습니다! – Vahideh

+0

@suneye, 정확한 문제는 무엇인가요? – skovorodkin

+0

@suneye, 더 많은 정보를 제공 할 수 있습니까? 내 코드 ('csv' 모듈을 사용하는 두 번째 버전)를 확인하면 완벽하게 작동합니다. – skovorodkin

0

알고리즘을 종이에 공식화 한 다음 파이썬으로 변환 해보십시오. 직접 해결 방법을 찾을 수있을 것입니다.

문제 나 오류가 발생하면 여기에 질문을 게시하십시오. 기꺼이 도와 드리겠습니다.

조언 :

  • 당신은 당신의 파일을 읽을 모듈을 'csv` 사용할 수 있습니다. 이 키워드로 튜토리얼을 찾아보십시오.
  • 'collection.Counter`를 사용하여 단어의 발생 횟수를 계산할 수 있습니다. 유용 할 수 있습니다.
관련 문제