파이썬으로 PyLucene을 활용한 검색 결과에서 중요 키워드 추출하기

많은 웹사이트나 애플리케이션은 사용자에게 관련된 정보를 제공하기 위해 검색 기능을 제공합니다. 이때 검색 결과에서 사용자에게 더욱 관심있는 정보를 제공하기 위해서는 검색 결과에서 중요한 키워드를 추출하는 것이 중요합니다. 이 글에서는 파이썬과 PyLucene을 사용하여 검색 결과에서 중요 키워드를 추출하는 방법에 대해 알아보겠습니다.

1. PyLucene이란?

PyLucene은 Apache Lucene 검색 엔진의 파이썬 버전입니다. Lucene은 오픈 소스 검색 라이브러리로, 텍스트 기반 정보를 빠르게 검색할 수 있는 기능을 제공합니다. PyLucene은 파이썬에서 Lucene을 사용하기 위한 래퍼(wrapper)입니다.

2. 검색 결과에서 키워드 추출하기

중요한 키워드를 추출하기 위해서는 검색 결과의 각 문서에서 가장 빈번하게 등장하는 단어를 찾아야 합니다. 이를 위해 PyLucene의 TermVectorMapper 클래스를 사용할 수 있습니다. 다음은 간단한 예제 코드입니다.

from org.apache.lucene.analysis import Analyzer, StandardAnalyzer
from org.apache.lucene.index import IndexReader
from org.apache.lucene.index import TermVectorMapper, TermsEnum
from org.apache.lucene.search import IndexSearcher
from org.apache.lucene.store import FSDirectory
from org.apache.lucene.util import BytesRef
from java.io import File

# 검색 결과에서 키워드 추출하는 클래스
class KeywordExtractor(TermVectorMapper):
    def __init__(self):
        self.term_frequencies = {}

    # 각 단어의 빈도수를 저장하는 메서드
    def map(self, term, frequency, termContext):
        term_text = term.utf8ToString()
        self.term_frequencies[term_text] = frequency

    # 가장 빈번한 단어 추출하는 메서드
    def get_top_keywords(self, n):
        sorted_keywords = sorted(self.term_frequencies.items(), key=lambda x: x[1], reverse=True)
        return [keyword[0] for keyword in sorted_keywords[:n]]

# 검색 결과에서 중요 키워드 추출하는 함수
def extract_keywords(query_string, index_dir, num_keywords):
    analyzer = StandardAnalyzer()
    query = QueryParser("contents", analyzer).parse(query_string)
    reader = IndexReader.open(FSDirectory.open(File(index_dir)))
    searcher = IndexSearcher(reader)

    # 검색 실행
    hits = searcher.search(query, num_keywords)

    keyword_extractor = KeywordExtractor()
    for doc in hits.scoreDocs:
        term_vector = reader.getTermVector(doc.doc, "contents")
        term_vector.map_all(keyword_extractor)

    keywords = keyword_extractor.get_top_keywords(num_keywords)
    return keywords

# 사용 예시
query_string = "파이썬 검색"
index_dir = "/path/to/index"
num_keywords = 5

keywords = extract_keywords(query_string, index_dir, num_keywords)
print(keywords)

위 코드에서 extract_keywords 함수를 호출하면 검색 결과에서 가장 빈번하게 등장하는 단어를 추출할 수 있습니다. query_string은 검색어를, index_dir은 Lucene 인덱스가 위치한 디렉토리 경로를, num_keywords는 추출할 키워드의 수를 나타냅니다.

3. 결론

파이썬과 PyLucene을 사용하여 검색 결과에서 중요한 키워드를 추출하는 방법에 대해 알아보았습니다. 이를 활용하여 사용자에게 더욱 관련성 높은 검색 결과를 제공하는데 도움을 줄 수 있습니다. PyLucene은 강력한 검색 기능을 제공하므로 다양한 검색 기능을 구현할 때 유용한 도구입니다.

태그: #파이썬 #PyLucene