one step
[Python] 파이썬 데이터 분석 기초 시험문제 풀이 (영어 단어 빈도수 찾기) 본문
반응형
영어 단어 빈도수 찾기
corpus.txt 파일은 특정 문서를 분석한 결과, 발견되는 모든 영어 단어와 그 빈도를 저장한 문서입니다. (오른쪽 실습 창에서 corpus.txt 파일을 직접 열어보실 수 있습니다.)
corpus.txt 파일에는 영어 단어와 해당 단어의 빈도수가 각각 /(슬래시)를 기준으로 나누어져 쓰여져있습니다.
이 파일에서, 주어진 text로 시작하는 모든 단어와 그 빈도를 출력하는 기능을 하는 함수 filter_by_text(text)를 구현하세요.
지시사항
- corpus.txt에 있는 모든 단어와 빈도수를 tuple의 형태로 리스트corpus에 추가합니다.
- 리스트 corpus 에 저장된 데이터 중에서 text변수의 문자열로 시작하는 단어만을 추려 리스트 result에 저장합니다.
- 리스트 result 에 저장된 데이터를 빈도수를 기준으로 내림차순 정렬하여 20개까지 출력합니다. 데이터가 20개 미만일 경우 모두 출력합니다.
입출력예시
입력
filter_by_text 함수는 영어 알파벳으로만 이루어진 문자열 text를 인자로 가집니다.
a
Copy
출력
filter_by_text 함수는 corpus.txt에 있는 데이터 중에서 입력받은 text로 시작하는 모든 단어 중, 빈도수가 높은 상위 20개의 단어와 빈도수를 출력합니다.
[('and', 2682878), ('a', 2150885), ('as', 517788), ('at', 478178), ('are', 470949), ('an', 344046), ('all', 262447), ('about', 197116), ('also', 124885), ('any', 124108), ('after', 117138), ('another', 58188), ('again', 56231), ('against', 56208), ('always', 46228), ('around', 45286), ('although', 43637), ('away', 38747), ('area', 35144), ('already', 34292)]
Copy
주의사항
입력 예시로 주어진 문자열 외에도 다양한 문자열이 주어질 수 있습니다.
또한 주어진 함수 이름을 변경하면 오류가 발생할 수 있으니 이 점 유의해 주시길 바랍니다.
# 초기 코드
def filter_by_text(text) :
# 주어진 규칙에 맞추어 filter_by_text()함수를 구현해주세요.
# corpus.txt에 있는 텍스트를 읽어와서 corpus라는 리스트에 추가한다.
corpus = []
# corpus에 있는 데이터 중, text로 시작하는 단어만을 추려서 result라는 리스트에 저장한다.
result = []
# 찾은 영어 단어를 빈도수를 기준으로 내림차순으로 정렬하여 20개만 출력한다.
# 아래 부분은 수정하지 마세요!
# 입력과 출력을 수행하는 코드입니다.
t = input()
filter_by_text(t)
# 풀이 코드
def filter_by_text(text) :
# 주어진 규칙에 맞추어 filter_by_text()함수를 구현해주세요.
# corpus.txt에 있는 텍스트를 읽어와서 corpus라는 리스트에 추가한다.
corpus = []
filename = 'corpus.txt'
with open(filename) as file:
for line in file:
word, num = line.split('/')
num = int(num.strip())
corpus.append((word, num))
#print(corpus)
# corpus에 있는 데이터 중, text로 시작하는 단어만을 추려서 result라는 리스트에 저장한다.
result = []
# for items in corpus:
# word, num = items
# if word.startswith(text):
# result.append((word, num))
# print(result)
result = list(filter(lambda word : word[0].startswith(text), corpus))
#print(result)
# 찾은 영어 단어를 빈도수를 기준으로 내림차순으로 정렬하여 20개만 출력한다.
number = 20
#print('len:', len(result))
if len(result) < number:
tmp = sorted(result, key = lambda num : num[1], reverse = True)
else:
tmp = sorted(result, key = lambda num : num[1], reverse = True)[:number]
print(tmp)
return tmp
# 아래 부분은 수정하지 마세요!
# 입력과 출력을 수행하는 코드입니다.
t = input()
filter_by_text(t)
반응형
'이것저것 코드 > 파이썬' 카테고리의 다른 글
[Python] matplotlib으로 차트 설정하기 (0) | 2022.10.08 |
---|---|
[Python] 파이썬 데이터 분석 기초 시험문제 풀이 (트럼프 대통령 트윗 분류하기) (1) | 2022.10.08 |
[Python] 영어 단어 모음 분석하기 (1) | 2022.10.08 |
[Python] 문장 분석 전처리하고 word cloud 만들기 (0) | 2022.10.02 |
[파이썬] 텍스트와 텍스트의 반복 수 조합해 딕셔너리 만들기 (0) | 2022.09.16 |