fix: 한국어 조사 제거로 Google News RSS 검색 정확도 개선

_extract_search_keywords()에서 한국어 조사/어미(을, 에서, 에서만 등)를
regex로 제거하고 키워드를 3개로 축소하여 검색 적중률 향상.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
JOUNGWOOK KWON
2026-03-30 18:32:43 +09:00
parent b3ccbba491
commit 8a15148b7b

View File

@@ -922,16 +922,29 @@ async def cmd_idea(update: Update, context: ContextTypes.DEFAULT_TYPE):
def _extract_search_keywords(text: str) -> str: def _extract_search_keywords(text: str) -> str:
"""긴 문장에서 검색용 핵심 키워드 추출 (3~5개 명사/키워드)""" """긴 문장에서 검색용 핵심 키워드 추출 (2~3개 핵심 명사)"""
# 불용어 제거 import re as _re
stopwords = {'', '', '', '', '', '', '', '', '', '으로', '에서', '', '', # 한국어 조사/어미 패턴 제거 (단어 끝에서)
'대한', '위한', '대해', '관한', '통한', '있는', '없는', '하는', '되는', '하고', particle_pattern = _re.compile(
'', '이런', '저런', '어떤', '모든', '같은', '다른', '라는', '라고', r'(에서만|에서는|에서도|으로는|에서|에게|부터|까지|처럼|보다|만큼|이라|이고|이며|에는|으로|에도|하는|되는|있는|없는|해야|봐야|'
'', '글을', '내용', '정보', '상황', '경우', '부분', '반대'} r'이란|라는|라고|에서|하고|해서|지만|는데|인데|이나|거나|든지|이든|에의|과의|와의|'
# 단어 분리 후 불용어 제거, 1글자 제외 r'을|를|이|가|은|는|에|의|로|와|과|도|만|요|죠|건|한|된|할|인)$'
words = [w for w in text.split() if w not in stopwords and len(w) > 1] )
# 최대 5개 키워드 # 불용어 (조사 제거 후 남는 단어 기준)
return ' '.join(words[:5]) stopwords = {'대한', '위한', '대해', '관한', '통한', '', '이런', '저런', '어떤', '모든',
'같은', '다른', '', '내용', '정보', '상황', '경우', '부분', '반대', '의견',
'특정', '모두', '우리', '어떻게', ''}
words = []
for w in text.split():
# 조사 제거
clean = particle_pattern.sub('', w)
if not clean or len(clean) < 2:
continue
if clean in stopwords:
continue
words.append(clean)
# 최대 3개 핵심 키워드 (짧을수록 검색 결과 多)
return ' '.join(words[:3])
def _search_and_build_topic(keyword: str, corner: str = '') -> dict: def _search_and_build_topic(keyword: str, corner: str = '') -> dict: