본문 바로가기
Data & Programming/Python

[Python] 파이썬으로 텍스트 처리와 단어 수 세기

by 눈부셔™ 2023. 9. 24.
728x90

[Python] 파이썬으로 텍스트 처리와 단어 수 세기

파이썬은 텍스트 처리와 데이터 분석에 매우 유용한 프로그래밍 언어입니다. 

이 글에서는 파이썬을 이용한 텍스트 처리와 단어 수 세기에 대해 알아보겠습니다.

파이썬 텍스트 처리와 단어 수 세기

 

기본적인 텍스트 다루기

in 연산자 : 특정 단어가 있는지 확인
str.split() : 지정한 문자열을 기준으로 문자열을 단어로 쪼개기
str.startswith() : 특정 단어로 시작하는지 여부
str.replace() : 텍스트에서 특정 문자열을 다른 문자열로 치환
  • 특정 단어가 있는지 확인 (in 연산자)
1
2
3
4
5
text = '''
전일 증시는 금리 전망의 변화에 따른 약세를 보였습니다.
미국 연방준비제도이사회(Fed)의 점도표에 따르면, 내년에는 4회의 금리 인하가 예상되었던 것이 2회로 줄어들었고, 금리가 5%대로 상승할 가능성이 높아졌습니다.
'''
'금리' in text  # "True" 출력

 

  • 텍스트 분할 (str.splite())
1
2
word_list = text.split()
print(word_list)  #['전일', '증시는', '금리', '전망의', '변화에', '따른', '약세를', '보였습니다.', '미국', '연방준비제도이사회(Fed)의', '점도표에', '따르면,', '내년에는', '4회의', '금리', '인하가', '예상되었던', '것이', '2회로', '줄어들었고,', '금리가', '5%대로', '상승할', '가능성이', '높아졌습니다.']

 

  • 특정 단어로 시작하는지 여부를 확인 (str.startwith())
1
2
print(text.startswith('미국'))  # "False" 출력
print(text.startswith('전일'))  # "True" 출력

 

1
[w for w in word_list if '금리' in w]  # ['금리', '금리', '금리가']

 

1
len([1 for word in word_list if '금리' in word])  # "3" 출력

 

  • 텍스트 치환
1
2
3
4
#텍스트 치환
text = "파이썬은 텍스트 처리에 매우 유용한 언어입니다."
new_text = text.replace("파이썬""Python")
print(new_text)  # Python은 텍스트 처리에 매우 유용한 언어입니다.

 

 

 

문자열 연산과 인덱싱 및 슬라이싱

  • 문자열 연산
1
2
3
4
5
6
7
8
9
10
# 문자열 이어붙이기
str1 = "눈부셔의 "
str2 = "금융과 IT"
result = str1 + str2
print(result)  # "눈부셔의 금융과 IT" 출력
 
# 문자열 반복
text = "안녕하세요! "
result = text * 3
print(result)  # "안녕하세요! 안녕하세요! 안녕하세요! " 출력

 

  • 문자열 인덱싱과 슬라이싱
1
2
3
text = "눈부셔의 금융과 IT"
print(text[0])       # "눈" 출력
print(text[5:11])    # "금융과 IT" 출력

 

  • 문자열 관련 함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
text = "Python 텍스트 처리"
# 문자열 길이 구하기
length = len(text)
print(length)  # 13 출력
 
# 문자열 대소문자 변환
lower_text = text.lower()
upper_text = text.upper()
print(lower_text)  # "python 텍스트 처리" 출력
print(upper_text)  # "PYTHON 텍스트 처리" 출력
 
# 문자열 검색
keyword = "텍스트"
index = text.find(keyword)
print(index)  # 7 출력 (키워드 "텍스트"의 시작 위치)
 
# 문자열 치환
new_text = text.replace("텍스트""텍스트 처리와 분석")
print(new_text)  # "Python 텍스트 처리와 분석" 출력

 

 

 

단어 수 세기 - 컬렉션(collection)

파이썬의 collection은 다양한 자료구조와 기능을 제공하고, 미리 만들어진 counter 모듈을 사용하여 간편하게 개수를 셀 수 있다.

1
2
3
4
5
6
7
from collections import Counter
 
stocks = ['삼성전자''SK하이닉스''에코프로비엠''셀트리온''셀트리온''에코프로',
          '모비스''삼성전자''현대바이오''삼성전자''에코프로''셀트리온']
 
cntr = Counter(stocks)
cntr.most_common()  #('삼성전자', 3), ('셀트리온', 3), ('에코프로', 2), ('SK하이닉스', 1), ('에코프로비엠', 1), ('모비스', 1), ('현대바이오', 1)]

 

  • 가장 많이 등장한 단어 10개 찾기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from collections import Counter
 
text = '''
전일 증시는 금리 전망의 변화에 따른 약세를 보였습니다. 
미국 연방준비제도이사회(Fed)의 점도표에 따르면, 내년에는 4회의 금리 인하가 예상되었던 것이 2회로 줄어들었고, 금리가 5%대로 상승할 가능성이 높아졌습니다. 
이에 따라 경착륙 우려가 재점화되었고, 채권 금리와 환율이 상승하며 외국인들이 선물을 매도하였습니다. 
코스닥은 하락 종목수가 역대 6위권에 달하는 등 큰 폭으로 떨어졌습니다. 
양도세 이슈로 인해 매수는 제한적이었고, 장마감까지 낙폭을 회복하지 못하였습니다.
 
하지만 이러한 재료들을 과도하게 부정적으로 해석한 측면도 있습니다. 
이미 5%대 금리에 진입한 상황에서도 증시는 상승세를 이어왔고, 인플레이션 우려를 자극한 국제유가도 이번주에는 하락세를 보였습니다. 
또한 이번주에 외국인들이 선물을 집중적으로 매도한 것은 이전에 밀린 매도세를 한꺼번에 처리한 것일 수 있습니다. 
따라서 증시가 반등하기 위해서는 몇 가지 변화가 나타나야 합니다. 
외국인들의 선물 매수 전환, 대형주들에 대한 강한 수급 유입, 코스닥의 대형 업종에서의 반등 시도 등이 그 예입니다.
 
코스닥은 5일 연속 하락하고, 8일 중 7일 하락하였습니다. 
만약 1~2일 더 하락한다면 과매도권으로 다시 진입할 수 있습니다. 
이런 상황에서는 선제적으로 조정을 받았고, 실적과 기관 수급이 좋은 종목들에 집중하는 것이 좋습니다.
'''
 
word_list = text.split(' ')
 
cntr = Counter(word_list)
cntr.most_common(10) # [('있습니다.', 3), ('증시는', 2), ('금리', 2), ('보였습니다.', 2), ('것이', 2), ('외국인들이', 2), ('선물을', 2), ('수', 2), ('\n전일', 1), ('전망의', 1)]

 

 

 

#파이썬  #프로그래밍  #코딩  #텍스트처리  #단어수세기  #데이터분석  #문자열연산  #텍스트분석  #데이터사이언스  #인공지능  #collection  #counter  #splite  #startwith  #replace  #splite  #in연산자

728x90