Skip to content
This page has been auto-translated and may contain errors.View in English

단어 빈도 분석기

Mira 안녕하세요. 임무 로그에서 인사이트를 추출하는 일을 맡았는데, 로그가 수백 개나 됩니다. 텍스트 파일을 받아서 각 단어가 얼마나 자주 등장하는지 세고, 상위 결과를 보여주는 무언가가 필요해요. 모든 것을 수작업으로 읽지 않고도 어떤 주제가 계속 등장하는지 알아내고 싶습니다.

만들 결과물

Enter text, or a filename to read from: sample.txt

Top 10 words:
  the       42
  and       31
  python    18
  is        16
  you       14
  ...

필요한 것

  • 문자열 — 텍스트를 단어로 나누고, 구두점을 제거하고, 소문자로 변환하기
  • 딕셔너리 — 각 단어가 몇 번 등장하는지 세기
  • 리스트 — 상위 결과를 정렬하고 슬라이싱하기
  • 파일과 예외 — 텍스트 파일에서 읽기
  • 람다, 컴프리헨션, zip — 리스트 컴프리헨션과 key를 사용한 sorted()가 여기서 유용합니다

힌트

세기 전에 정규화하세요. 카운트를 만들기 전에 모든 것을 소문자로 만들고 구두점을 제거하세요. 그렇지 않으면 "Python", "python", "Python,"이 모두 다른 단어로 계산됩니다.

딕셔너리가 카운트를 담당합니다. 단어를 순회하세요. 단어가 이미 키로 있다면 카운트를 증가시킵니다. 없다면 카운트 1로 추가합니다. 기본값을 사용하는 .get()을 쓰면 깔끔하게 처리할 수 있습니다.

값으로 딕셔너리 정렬하기. sorted()key= 인자를 받습니다. 각 키의 값을 반환하는 람다를 전달하여 빈도순으로 정렬하세요.

더 나아가기

핵심 분석이 동작한 후에는:

  • 불용어. "the", "and", "is" 같은 흔한 단어를 무시하세요. 불용어 집합을 정의하고 거기에 있는 단어는 건너뛰세요.
  • 설정 가능한 상위 N. 항상 10개를 보여주는 대신, 사용자가 보여줄 결과 개수를 지정할 수 있게 하세요.
  • 시각적 출력. 각 단어와 함께 카운트에 비례하여 반복된 문자로 만든 막대를 출력하세요. 간단한 버전만으로도 출력이 훨씬 더 읽기 쉬워집니다.