[파이썬] textblob 키워드 기반 검색 엔진 개발

키워드 기반 검색 엔진은 많은 정보 중에서 사용자가 원하는 내용을 더욱 쉽게 찾을 수 있도록 도와주는 도구입니다. 이번에는 Python의 TextBlob를 활용하여 키워드 기반 검색 엔진을 개발하는 방법에 대해 알아보겠습니다.

TextBlob 소개

TextBlob은 Python의 오픈 소스 라이브러리로서 자연어 처리(Natural Language Processing, NLP)를 간편하게 수행할 수 있는 도구입니다. TextBlob을 사용하면 문장 분류, 문장 감정 분석, 토큰화, 개체명 인식 등의 다양한 자연어 처리 작업을 수행할 수 있습니다.

전체 문서 텍스트 처리

검색 엔진을 개발하기 위해서는 먼저 문서 집합을 텍스트로 변환해야 합니다. 이를 위해 주어진 문서 집합에서 모든 문서를 하나의 텍스트로 통합합니다. 통합된 텍스트를 TextBlob 객체로 변환하여 자연어 처리 작업을 수행할 수 있습니다.

from textblob import TextBlob

def preprocess_documents(documents):
    # 모든 문서를 하나의 텍스트로 통합
    all_text = ' '.join(documents)
    
    # TextBlob 객체로 변환
    blob = TextBlob(all_text)
    
    return blob

키워드 추출

검색 엔진에서는 사용자가 입력한 검색어에 해당하는 키워드를 추출해야 합니다. 추출된 키워드를 바탕으로 문서를 검색할 수 있습니다. TextBlob은 명사 추출을 통해 키워드를 추출할 수 있습니다.

def extract_keywords(text_blob):
    # 명사 추출
    keywords = [word.lower() for word, tag in text_blob.tags if tag.startswith('N')]
    
    return keywords

키워드 검색

사용자가 입력한 검색어와 추출된 키워드를 비교하여 일치하는 문서를 찾는 검색 메서드를 구현해야 합니다. 이를 위해 키워드를 바탕으로 텍스트 매칭을 수행할 수 있습니다.

def search_documents(documents, keywords, num_results=5):
    results = []
    
    for i, doc in enumerate(documents):
        # 키워드와 일치하는 문서를 검색
        if any(keyword in doc.lower() for keyword in keywords):
            results.append(doc)
        
        # 최대 결과 개수에 도달하면 종료
        if len(results) == num_results:
            break
            
    return results

검색 엔진 사용 예시

# 문서 집합
documents = [
    "TextBlob은 파이썬의 간편한 텍스트 처리를 도와주는 라이브러리입니다.",
    "NLP는 자연어 처리의 한 분야로, 문장 분류, 개체명 인식 등의 작업을 포함합니다.",
    "키워드 기반 검색 엔진을 개발하여 사용자가 원하는 정보를 쉽게 찾을 수 있도록 도와보세요."
]

# 문서 전처리
text_blob = preprocess_documents(documents)

# 검색어 입력
search_query = "텍스트 처리"

# 키워드 추출
keywords = extract_keywords(text_blob)

# 검색 수행
results = search_documents(documents, keywords)

print("키워드 추출 결과:", keywords)
print("검색 결과:")
for result in results:
    print("- " + result)

위의 예시 코드를 실행하면, 주어진 검색어 “텍스트 처리”를 바탕으로 키워드를 추출하고 해당 키워드가 포함된 문서를 검색하여 출력합니다.

이렇게 Python의 TextBlob을 활용하여 키워드 기반 검색 엔진을 개발할 수 있습니다. TextBlob은 다양한 자연어 처리 작업에 활용될 수 있으므로, 다양한 형태로 검색 엔진을 확장하여 사용자에게 더욱 편리한 검색 경험을 제공할 수 있습니다.