: 텍스트 요약을 위해 re 에 대해 알아 보겠다.
1. re 란?
: 정규표현식(Reular Expression)은 문자열을 처리할 때 사용하는 라이브러리로, python, c, 자바, 문서작성 프로그램등 에서 활용된다. 특정 문자열을 추출하거나 변환할 수 있다.
2. re 실습.
: 1-03. 텍스트 요약(textwrap) 에서 사용했던 text 변수를 그래도 사용할 예정이다. text 변수에 저장된 문자열은 Link 의 기사를 복사해서 한 줄로 붙여 사용했다. '1.02. textwrap 실습' 첫 내용을 확인하면 된다.
2.01. re.findall()
: findall()은 문자열에서 조건에 맞춰 추출하는 함수이다. 첫번째 '\w+' 인자를 넣어 단어를 추출한다. 띄어쓰기를 인식해서 나눠준다. 두번째 인자는 변수를 넣으면 된다. 결과는 list 형식으로 저장된다.
import re
findall_word = re.findall(r'\w+', text)
print(findall_word)
# 결과 #
['유럽과', '캐나다가', '선제적으로', '기준금리를', '내렸지만', '우리나라는', '4분기', '이후에나', '통화정책', '전환이', '가능할', '것이란', '전망이', '지배적이다', '비교적', '양호한', '경제', '성장률과', '꺾이지', '않는', '부채', '증가세가', '영향', '등이', '미친', '것으로', '분석된다', '성장 률', '전망이', '0', '대에', '머무르고', '있는', '유럽과는', '상황이', '다르다', '한은이', '물가', '환율', '부채', '불안을', '감수하고서', '과감하게', '선제적으로', '금리를', '인하할', '유인이', '적은', '셈이다', '연준은', '11', '12일', '현지시간', '열린', '연방공개시장위원회', 'FOMC', '정례회 의에서', '기준금리', '목표', '범위를', '5', '25', '5', '50', '로', '동결했다', '이날', '공개된', '새', '점도표', 'FOMC', '위원들의', '향후', '금리', '수준', '전망을', '표시한', '도표', '에서는', '올해', '말', '금리', '전망치', '중간값은', '5', '10', '이었다', '지난', '3월', '회의', '당시의', '4', '60', '보다', '0', '50', '포인트', '높은', '수준이다', '현재', '금리', '수준', '5', '25', '5', '50', '을', '고려할', '때', '연내', '인하', '예 상', '횟수가', '세', '차례', '0', '25', '포인트씩', '에서', '한', '차례', '가량으로', '줄어든', '셈이다', '위원', '19명', '가운데', '4명은', '아예', '올해', '인하가', '없을', '것으로', '봤다', '이에', '시장이', '기대하는', '연준', '피벗', '시점도', '당초', '9월에서', '연말에', '가까운', '11월', '또는', '12월로', '늦춰지고', '있다', '연준은', '앞서', '지난해', '6월', '약', '15개월', '만에', '금리', '인상을', '멈췄다가', '7월', '다시', '베이비스텝', '0', '25', '포인트', '을', '밟았지만', '이후', '9', '11', '12월과', '올해', '1', '3', '5월에', '이어', '이번까지', '일곱', '차례', '연속', '금리를', '묶었다', '반면', '유럽은', '선제적으로', '금리를', '인하했다', '유럽중앙은행', 'ECB', '은', '6일', '현지시간', '기준금리를', '0', '25', '포인트', '하향조정했다', 'ECB는', '이날', '독일', '프랑크푸르트에서', '통화정책이사회를', '열어', '기준금리를', '연', '4', '25', '수신금리와', '한계대출금리는', '각각', '연', '3', '75', '연', '4', '50', '로', '내렸다고', '밝혔다', '기준금리를', '0', '50', '포인트', '올리는', '빅스텝', '을', '밟으며', '금리인상을', '시작한', '2022년', '7월', '이후', '1년', '11개월', '만의', '방향', '전환이다', '유럽은', '코로나19', '팬데믹', '이후', '양적완화', '등', '영향으로', '물가가', '급등하자', '2022년', '7월부터', '지난해', '9월까지', '10차례', '연속', '금리를', '올렸다', '작년', '9월', '이후', '기준금리', '4', '50', '는', '1999년', '유로존', '출범', '이래', '최고치였다', '이에', '2022년', '연말', '10', '를', '넘긴', '유로존의', '전년', '대비', '소비자물가', '상승률은', '지난해', '10월부터', '2', '대에', '머물면서', '목표치인', '2', '0', '에', '근접했다', '물가가', '일부', '안정세에', '접어든', '것이다', '여기에', '유럽', '내', '각국', '경기침체', '우려도', '가시지', '않자', '선제적인', '인하를', '감행했다', '유럽', '성 장률', '전망치는', '일부', '상향됐지만', '여전히', '0', '대다', '최근', '올해', '유로존', '경제성장률', '전망치는', '기존', '0', '6', '에서', '0', '9', '로', '내년', '전망은', '1', '5', '에서', '1', '4', '로', '수정됐다', '반면', '우리나라는', '아직', '물가', '안정세가', '완연하다고', '보기', '힘들다', '소비자물가지수', '상승률', '전년동월대비', '은', '2', '3월', '3', '대에서', '4', '5월', '2', '대', '후반', '4월', '2', '9', '5월', '2', '7', '으로', '내려왔지만', '5월', '농산물', '물가는', '19', '0', '나', '치솟고', '석유류', '상승률', '3', '1', '도', '작년', '1월', '이후', '최고', '수준을', '기록했다', '가계대출', '증가세도', '다시', '강해지고', '있다', '5월', '가계대출은', '주택', '거래', '증가와', '함께', '6조원이나', '또', '불었다', '지난해', '10월', '6조7000억원', '이후', '7개월', '만에', '가장', '큰', '증가', '폭이다', '성장률도', '비교적', '견조하다', '한국은행은', '1분기', '실질', '국내총생산', 'GDP', '성장률', '직전분기대비', '잠정치', '이', '1', '3', '로', '집계됐다고', '발표했다', '2021년', '4분기', '1', '6', '이후', '2년', '3개월', '만에', '가장', '높은', '분기', '성장률이다', '분기', '성장률은', '지난해', '1분기', '0', '4', '반등한', '뒤', '2분 기', '0', '6', '3분기', '0', '8', '4분기', '0', '5', '와', '올해', '1분기까지', '다섯', '분기', '연속', '플러스', '성장', '기조를', '유지했다', '물가와', '가계부채', '증가세가', '완전하게', '잡히지', '않은', '가운데', '성장률이', '견조한', '것이다', '여기에', '환율까지', '1300원대', '후반에서', '내려오지', '않고', '있다', '한은이', '통화정책을', '전환하기', '위한', '필요조건이', '대부분', '충족되지', '않은', '셈이다', '미국보다', '2', '0', '포인트나', '낮은', '기준금리', '3', '50', '를', '유지하고', '있는', '한은이', '물가', '부채', '환율', '불안까지', '감수하고', '선제적으로', '금리', '인하에', '과감하게', '나설', '유인이', '크지', '않다', '이창용', '한은', '총재은', '지난달', '23일', '금융통화위원회', '직후', '열린', '기자 간담회에서', '여전히', '미국의', '경제정책으로', '인한', '환율의', '변화나', '자본의', '이동', '가능성이', '크다', '고', '강조했다', '학계의', '시 각도', '비슷하다', '김상봉', '한성대', '경제학과', '교수는', '미국도', '연말에', '한번', '정도', '내릴', '수', '있을지', '없을지', '모르는', '상황 에서', '우리나라가', '기준금리를', '인하할', '수', '있다고', '보기', '어렵다', '며', '환율', '상황을', '보면', '알', '수', '있다', '고', '말했다', '이어', '우리나라', '기준금리', '인하는', '내년까지', '미뤄질', '수', '있고', '사람들이', '생각하는', '것과는', '매우', '다른', '양상으로', '전개될', '수', '있다', '며', '고금리라고', '하지만', '여전히', '대출은', '늘고', '있기', '때문에', '금리가', '곧', '다시', '저금리로', '갈', '수', '있단', '생각은', '옳지', '않다', '고', '덧붙였다']
: 다음은 숫자가 숫자만 찾아보겠다. 숫자를 의미하는 구분자는 '\d+' 이다.
findall_num = re.findall('(\d+)', text)
print(findall_num)
# 결과 #
['4', '0', '11', '12', '5', '25', '5', '50', '5', '10', '3', '4', '60', '0', '50', '5', '25', '5', '50', '0', '25', '19', '4', '9', '11', '12', '6', '15', '7', '0', '25', '9', '11', '12', '1', '3', '5', '6', '0', '25', '4', '25', '3', '75', '4', '50', '0', '50', '2022', '7', '1', '11', '19', '2022', '7', '9', '10', '9', '4', '50', '1999', '2022', '10', '10', '2', '2', '0', '0', '0', '6', '0', '9', '1', '5', '1', '4', '2', '3', '3', '4', '5', '2', '4', '2', '9', '5', '2', '7', '5', '19', '0', '3', '1', '1', '5', '6', '10', '6', '7000', '7', '1', '1', '3', '2021', '4', '1', '6', '2', '3', '1', '0', '4', '2', '0', '6', '3', '0', '8', '4', '0', '5', '1', '1300', '2', '0', '3', '50', '23']
: 숫자로 시작하는 단어를 추출하겠다.
findall_num = re.findall('\d\w+', text)
print(findall_num)
# 결과 #
['4분기', '11', '12일', '25', '50', '10', '3월', '60', '50', '25', '50', '25', '19명', '4명은', '9월에서', '11월', '12월로', '6월', '15개월', '7월', '25', '11', '12월과', '5월에', '6일', '25', '25', '75', '50', '50', '2022년', '7월', '1년', '11개월', '19', '2022년', '7월부터', '9월까지', '10차례', '9월', '50', '1999년', '2022년', '10', '10월부터', '3월', '5월', '4월', '5월', '5월', '19', '1월', '5월', '6조원이나', '10월', '6조7000억원', '7개월', '1분기', '2021년', '4분기', '2년', '3개월', '1분기', '2분기', '3분기', '4분기', '1분기까지', '1300원대', '50', '23일']
이렇게 조건에 따라 원하는 문자를 추출할 수 있다.
2.02. re.compile()
: compile()은 문자열을 변환하는 함수이다. 위에 text에서 숫자를 '***'로 마스킹 해보겠다. 보기 편하게 하기 위해 ' 1-03. 텍스트 요약(textwrap)' 에서 사용했 "textwrap.fill()"함수도 함께 사용하겠다.
import textwrap
re_compile = re.compile('\d+')
masking_text = re_compile.sub("***", text)
print(textwrap.fill(masking_text, width=50))
# 결과 #
유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 ***분기 이후에나 통화정책
전환이 가능할 것이란 전망이 지배적이다. 비교적 양호한 경제 성장률과 꺾이지 않는 부채
증가세가 영향 등이 미친 것으로 분석된다. 성장률 전망이 ***%대에 머무르고 있는
유럽과는 상황이 다르다. 한은이 물가·환율·부채 불안을 감수하고서 과감하게 선제적으로
금리를 인하할 유인이 적은 셈이다. 연준은 ***∼***일(현지시간) 열린
연방공개시장위원회(FOMC) 정례회의에서 기준금리 목표 범위를
***.***∼***.***%로 동결했다. 이날 공개된 새 점도표(FOMC 위원들의 향후
금리 수준 전망을 표시한 도표)에서는 올해 말 금리 전망치 중간값은 ***.***%이었다.
지난 ***월 회의 당시의 ***.***%보다 ***.***%포인트 높은 수준이다. 현재
금리 수준(***.***∼***.***%)을 고려할 때 연내 인하 예상 횟수가 세
차례(***.***%포인트씩)에서 한 차례 가량으로 줄어든 셈이다. 위원 ***명 가운데
***명은 아예 올해 인하가 없을 것으로 봤다. 이에 시장이 기대하는 연준 피벗 시점도
당초 ***월에서 연말에 가까운 ***월 또는 ***월로 늦춰지고 있다. 연준은 앞서
지난해 ***월 약 ***개월 만에 금리 인상을 멈췄다가 ***월 다시
베이비스텝(***.***%포인트)을 밟았지만, 이후 ***·***·***월과 올해
***·***·***월에 이어 이번까지 일곱 차례 연속 금리를 묶었다. 반면 유럽은
선제적으로 금리를 인하했다. 유럽중앙은행(ECB)은 ***일(현지시간) 기준금리를
***.***%포인트 하향조정했다. ECB는 이날 독일 프랑크푸르트에서 통화정책이사회를
열어 기준금리를 연 ***.***%, 수신금리와 한계대출금리는 각각 연 ***.***%,
연 ***.***%로 내렸다고 밝혔다. 기준금리를 ***.***%포인트 올리는 '빅스텝'을
밟으며 금리인상을 시작한 ***년 ***월 이후 ***년 ***개월 만의 방향 전환이다.
유럽은 코로나*** 팬데믹 이후 양적완화 등 영향으로 물가가 급등하자 ***년 ***월부터
지난해 ***월까지 ***차례 연속 금리를 올렸다. 작년 ***월 이후 기준금리
***.***%는 ***년 유로존 출범 이래 최고치였다. 이에 ***년 연말 ***%를
넘긴 유로존의 전년 대비 소비자물가 상승률은 지난해 ***월부터 ***%대에 머물면서
목표치인 ***.***%에 근접했다. 물가가 일부 안정세에 접어든 것이다. 여기에 유럽 내
각국 경기침체 우려도 가시지 않자 선제적인 인하를 감행했다. 유럽 성장률 전망치는 일부
상향됐지만, 여전히 ***%대다. 최근 올해 유로존 경제성장률 전망치는 기존
***.***%에서 ***.***%로, 내년 전망은 ***.***%에서 ***.***%로
수정됐다. 반면 우리나라는 아직 물가 안정세가 완연하다고 보기 힘들다. 소비자물가지수
상승률(전년동월대비)은 ***∼***월 ***%대에서 ***∼***월 ***%대
후반(***월 ***.***%·***월 ***.***%)으로 내려왔지만, ***월 농산물
물가는 ***.***%나 치솟고 석유류 상승률(***.***%)도 작년 ***월 이후 최고
수준을 기록했다. 가계대출 증가세도 다시 강해지고 있다. ***월 가계대출은 주택 거래
증가와 함께 ***조원이나 또 불었다. 지난해 ***월(+***조***억원) 이후
***개월 만에 가장 큰 증가 폭이다. 성장률도 비교적 견조하다. 한국은행은 ***분기
실질 국내총생산(GDP) 성장률(직전분기대비·잠정치)이 ***.***%로 집계됐다고
발표했다. ***년 ***분기(***.***%) 이후 ***년 ***개월 만에 가장 높은
분기 성장률이다. 분기 성장률은 지난해 ***분기(***.***%) 반등한 뒤
***분기(***.***%), ***분기(***.***%), ***분기(***.***%)와
올해 ***분기까지 다섯 분기 연속 플러스(+) 성장 기조를 유지했다. 물가와 가계부채
증가세가 완전하게 잡히지 않은 가운데 성장률이 견조한 것이다. 여기에 환율까지 ***원대
후반에서 내려오지 않고 있다. 한은이 통화정책을 전환하기 위한 필요조건이 대부분 충족되지
않은 셈이다. 미국보다 ***.***%포인트나 낮은 기준금리(***.***%)를 유지하고
있는 한은이 물가·부채·환율 불안까지 감수하고 선제적으로 금리 인하에 과감하게 나설 유인이
크지 않다. 이창용 한은 총재은 지난달 ***일 금융통화위원회 직후 열린 기자간담회에서
“여전히 미국의 경제정책으로 인한 환율의 변화나 자본의 이동 가능성이 크다”고 강조했다.
학계의 시각도 비슷하다. 김상봉 한성대 경제학과 교수는 “미국도 연말에 한번 정도 내릴 수
있을지 없을지 모르는 상황에서 우리나라가 기준금리를 인하할 수 있다고 보기 어렵다”며
“환율 상황을 보면 알 수 있다”고 말했다. 이어 “우리나라 기준금리 인하는 내년까지
미뤄질 수 있고, 사람들이 생각하는 것과는 매우 다른 양상으로 전개될 수 있다”며
“고금리라고 하지만 여전히 대출은 늘고 있기 때문에 금리가 곧 다시 저금리로 갈 수 있단
생각은 옳지 않다”고 덧붙였다.
compile의 경우 개인정보를 마스킹할 때 유용하게 사용할 수 있다.
'업무자동화' 카테고리의 다른 글
1-06. 텍스트 요약 (gensim 01) (0) | 2024.06.19 |
---|---|
1-05. 텍스트 요약 (collections.Counter) (1) | 2024.06.18 |
1-03. 텍스트 요약 (textwrap) (0) | 2024.06.16 |
1-02. 텍스트 요약 (Binary와 Base64) (1) | 2024.06.10 |
1-01. 텍스트 요약 (개요) (0) | 2024.06.10 |