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
'Data & Programming > Python' 카테고리의 다른 글
[Python] 파이썬으로 날짜와 시간 다루기 (194) | 2023.09.23 |
---|---|
[Python] 파이썬의 오류(Error)와 예외처리(Exception Handling) (197) | 2023.09.19 |
[Python] 파이썬 함수와 클래스: 모듈화와 객체지향 프로그래밍의 핵심 (203) | 2023.09.18 |
[Python] 파이썬 조건문과 반복문: 제어 구조와 반복적인 작업 (120) | 2023.09.17 |
[Python] 파이썬의 자료구조 : 튜플, 리스트, 딕셔너리 (199) | 2023.09.16 |