Language/Python

[ Python ] 수능 영어 지문 단어 빈도 계산 프로그램

곽수진 2021. 9. 4. 21:18
반응형
수능에 나오는 영어 지문을 input.txt에 저장하고 사용자가 입력하는 단어가 나오는 빈도를 계산하는 프로그램을 작성해보자.

 

infile = open('input.txt', 'r', encoding='UTF8')

search_word = input('단어 입력: ')

word_dic = {}

for line in infile:
    line = line.rstrip()
    word_list = line.split()

    for word in word_list:
        word = word.lower()
        word = word.strip(',')
        word = word.strip('.')

        if word in word_dic:
            word_dic[word] += 1

        else:
            word_dic[word] = 1

if search_word in word_dic:
    print(search_word + '빈도: ' + str(word_dic[search_word]))
else:
    print(search_word + '빈도: 0')

infile.close()

 

 infile = open('input.txt', 'r') : input.txt 파일을 읽기 모드로 열어줌

 word_dic = {} : 입력 파일에서 추출한 단어와 그 단어의 빈도를 저장할 word_dic라는 빈 딕셔너리 생성

★ encoding = 'UTF8'을 붙이지 않으면 cp949 코덱으로 인코딩 된 파일을 읽어들일 때 오류 발생 ★

 

for line in infile:
    line = line.rstrip()
    word_list = line.split()

▶ 입력 파일로부터 연설문을 한 문단(줄 바꿈이 발생하기 전)씩 가져와 단어별로 분리

 반복문과 rstrip()을 사용해 리스트 형태로 저장하고 리스트에 저장된 문단을 strip()을 이용해 단어별로 분리

 

for word in word_list:
    word = word.lower()
    word = word.strip(',')
    word = word.strip('.')

▶ 분리된 단어를 모두 영어 소문자로 바꾸고, 단어와 붙어 있는 콤마(,)와 마침표(.)를 삭제하는 데이터 선처리 작업을 함

 

if word in word_dic:
    word_dic[word] += 1

else:
    word_dic[word] = 1

 단어별 빈도를 카운트 하는 작업을 하게 됨

→ word_dic 딕셔너리에 해당 단어가 없으면 딕셔너리에 key를 추가하고 값을 1로 가짐

→ 만약 word_dic 딕셔너리에 해당 단어가 있다면 해당 단어키의 값을 1씩 증가시킴

 

if search_word in word_dic:
    print(search_word + '빈도: ' + str(word_dic[search_word]))
else:
    print(search_word + '빈도: 0')

▶ word_dic 딕셔너리에 사용자가 찾고자 입력한 단어가 존재한다면 단어의 빈도가 몇 회인지 출력

→ 그렇지 않으면 단어의 빈도가 0임을 출력

 

 

2021학년도 수능 영어(홀수형) 시험지

▶ 실제 2021학년도 수능 영어(홀수형) 시험지 40번 문제 지문을 사용

 

 

▶ 40번 지문의 내용을 input.txt 파일에 저장

 

 

결과값 출력 모습

 

반응형