하나의 문장 안에는 문장이 끝나기 전에 두 번 이상 등장하는 단어가 있을 수 있습니다. 이번 파이썬 프로그램에서는 문장 속에서 가장 먼저 반복되는 단어를 찾아내는 방법을 알아보겠습니다.
결과를 얻기 위한 전체적인 처리 흐름은 다음과 같습니다.
- 주어진 문자열을 공백을 기준으로 분할하여 단어 목록을 만듭니다.
collections모듈을 사용해 단어들을 딕셔너리 형태로 변환합니다.- 단어 목록을 순서대로 순회하면서 등장 빈도가 1보다 큰 첫 번째 단어를 찾아냅니다.
프로그램 - 반복 단어 찾기
아래 프로그램에서는 collections 패키지의 Counter 클래스를 사용하여 각 단어의 등장 횟수를 계산합니다. Counter는 리스트와 같은 반복 가능한 객체를 받아 요소별 개수를 담은 딕셔너리 형태의 객체를 반환하므로, 단어 빈도 분석에 매우 유용합니다.
예제 코드
from collections import Counter
def Repeat_word(load):
word = load.split(' ')
dict = Counter(word)
for value in word:
if dict[value]>1:
print (value)
return
if __name__ == "__main__":
input = 'In good time in bad time friends are friends'
Repeat_word(input)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
실행 결과
time
코드 동작 원리 살펴보기
입력 문장 'In good time in bad time friends are friends'는 공백을 기준으로 분할되어 단어 리스트가 됩니다. 이후 Counter가 각 단어의 개수를 집계합니다. 예를 들어 time은 두 번, friends도 두 번 등장합니다.
그다음 단어 리스트를 처음부터 순회하면서 개수가 1보다 큰 단어를 만나면 해당 단어를 출력하고 함수를 종료합니다. time이 friends보다 앞쪽에 위치하므로 최종적으로 time이 첫 번째 반복 단어로 출력되는 것입니다.
이처럼 Counter와 간단한 반복문만으로도 문장에서 중복 단어를 손쉽게 탐지할 수 있으며, 로그 분석이나 텍스트 전처리 등 다양한 상황에 응용할 수 있습니다.