728x90
반응형
긴 문장에서 중요한 키워드만을 뽑아내기 위해 조사하던 중 BERT를 이용한 keybert를 발견했다.
KeyBERT는 이곳을 참고했다.
https://github.com/MaartenGr/KeyBERT
설치는 간단하다
pip install keybert
BERT embedding방법으로는 Flair, Huggingface Transformers, spaCy 가 있으나 이 모델에서는 sentence-transformers 패키지를 사용
이 keybert를 설치하기 위해서는 torch 1.2.0 이상 설치가 필수다.
from keybert import KeyBERT
doc="""
29일 코로나19 신규 확진자수가 전날보다 238명 늘어난 1046명을 기록했다. 1132명을 기록한 지난 26일 이후 사흘만에 다시 1000명대로 들어섰다. 집단감염이 발생한 서울 동부구치소에서 233명의 추가 확진자가 나온 영향이 컸다.
전날 사망자는 40명으로, 사망자가 국내에서 처음으로 발생한 지난 2월 20일 이후 가장 많은 사망자가 발생했다. 누적 사망자수는 859명이다.
‘사회적 거리두기’ 강화, ‘연말연시 특별방역대책’ 시행 등 각종 방역조치 속에 성탄절 연휴를 보냈지만, 확실한 감소세나 뚜렷한 반전이 나타나지 않고 있다. 엎친 데 덮친 격으로 영국에서 유행 중인 ‘변이 바이러스’까지 국내에 유입된 것으로 확인돼 방역당국에 비상이 걸린 상태다.
28일 오후 광주 북구보건소에 마련된 선별진료소에서 의료진이 신종 코로나바이러스 감염증(코로나19) 확산 방지를 위해 검사 대상자들의 검체를 채취하고 있다. 최근 광주 일부 요양원에서 코로나19 확진자가 다수 발생해 방역 당국이 긴장하고 있다. /연합뉴스
이달 들어 보름간 신규 확진자는 880명→1078명→1014명→1062명→1053명→1097명→926명→869명→1092명→985명→1241명→1132명→970명→808명→1046명 등의 흐름을 보이고 있다. 100명 이상 신규 확진자는 지난달 8일부터 이날까지 52일째다.
최근 1주일(12월 23∼29일)간 신규 확진자가 하루 평균 약 1039명꼴로 발생한 가운데 거리두기 단계 조정의 핵심 지표인 지역발생 확진자는 일평균 1014명으로 집계돼 다시 1000명 선을 넘어섰다.
이날 신규 확진자의 감염경로를 보면 지역발생이 1030명, 해외유입이 16명이다. 지역발생 확진자 역시 26일 이후 사흘 만에 다시 1000명 선을 넘었다.
지역별로 보면 서울 519명, 경기 251명, 인천 32명 등 수도권이 802명, 비수도권에서는 대전 30명, 대구 29명, 경북 28명, 충남 27명, 충북 22명, 강원 21명, 부산 17명, 경남 16명, 광주 15명, 전북 7명, 제주 5명, 세종·전남 각 4명, 울산 3명이다. 비수도권 확진자는 총 228명이다.
주요 감염 사례로는 서울 동부구치소에서 하루새 200여명이 추가돼 누적 확진자가 748명으로 늘었다. 또 △서울 구로구 요양병원 및 요양원(누적 170명) △충북 괴산군·음성군·진천군 3개 병원(220명) △충남 천안시 식품점 및 식당(91명) △대구 달성군 교회(138명) 등 곳곳에서 감염 규모가 커지는 양상이다.
해외유입 확진자는 전날보다 5명 줄었다. 확진자 가운데 5명은 공항이나 항만 입국 검역 과정에서 확인됐다. 나머지 11명은 경기(6명), 서울(3명), 울산·전북(각 2명) 지역 거주지나 임시생활시설에서 자가격리하던 중 양성 판정을 받았다.
이들의 유입 추정 국가는 미국과 인도 각 3명, 미얀마·리투아니아 각 2명, 필리핀·우즈베키스탄·러시아·시리아·아랍에미리트·독일 각 1명이다. 확진자 가운데 내국인이 6명, 외국인이 10명이다.
29일 기준 누적 확진자는 5만8725명으로 집계됐다. 이날까지 격리 해제된 확진자는 1천435명 늘
어 누적 4만703명이 됐다. 현재 격리치료 중인 환자는 1만7163명으로, 하루 전보다 429명 감소했다.
전날 하루 검사 건수는 5만9874건으로, 직전일 3만1895
건보다 2만7979건 많다. 검사건수 대비 확진자수를 계산한 양성률은 1.75%(5만9874명 중 1046명)였다. 누적 기준 양성률은 1.43%(409만8181명 중 5만8725명)였다.
"""
model = KeyBERT('distilbert-base-nli-mean-tokens')
keywords = model.extract_keywords(doc,keyphrase_ngram_range=(1,1),stop_words=None, top_k=10)
['비수도권에서는',
'코로나바이러스',
'1만7163명으로',
'5만8725명으로',
'선별진료소에서',
'특별방역대책',
'집단감염이',
'자가격리하던',
'확진자수를',
'임시생활시설에서']
여기서 keyphrase_ngram_range 는 어절의 개수를 뜻한다. 현재 (1,1)로 설정해놨기에 한 어절만 나오게 된다.
(1,2)로 설정하게 되면 두 어절씩 나오게 된다.
불용어(stop_words)는 아직 설정하지 않았으므로 None으로 두었고, top_k는 키워드를 뽑을 개수이다. 총 10개를 뽑아보았다.
728x90
반응형
'Data > 자연어 처리' 카테고리의 다른 글
LLM(Large Language Model) 기본 정리 및 활용 방안 | LIM (0) | 2024.03.17 |
---|---|
TextRank를 이용하여 핵심 문장 추출하기 (1) | 2020.12.28 |
GPT2 에서 문장을 생성 시 단어를 확률에 따라 선택하는 방법 (0) | 2020.12.15 |
cdQA-annotator 데이터셋 구성 (0) | 2020.12.10 |
Question Generation (0) | 2020.12.10 |
댓글