파이썬을 이용한 Solr의 텍스트 분석 및 문서 분류 기능 개발 방법

Solr은 Apache Lucene 기반의 검색 엔진으로, 대량의 문서를 쉽게 검색하고 관리할 수 있도록 해주는 도구입니다. 이번 글에서는 Solr을 이용하여 텍스트 분석 및 문서 분류를 개발하는 방법에 대해 알아보겠습니다.

Solr 설치

먼저, Solr을 설치해야 합니다. Apache Solr 공식 웹사이트(https://lucene.apache.org/solr/)에서 다운로드하여 설치할 수 있으며, 설치 후 실행하면 로컬에서 Solr을 사용할 수 있습니다.

텍스트 분석

Solr을 이용하여 텍스트 분석을 수행하려면, schema.xml 파일을 편집해야 합니다. schema.xml 파일은 Solr의 데이터 스키마를 정의하는 파일로, 텍스트 분석에 필요한 필드들을 설정할 수 있습니다.

예를 들어, 한국어 문서의 단어를 토큰화하고 형태소를 분석하기 위해서는 solrconfig.xml 파일에서 text_ko 필드를 정의하고, 이를 schema.xml 파일에 추가해야 합니다.

<field name="text_ko" type="text_ko" indexed="true" stored="true"/>
<fieldType name="text_ko" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.KoreanTokenizerFactory"/>
    <filter class="solr.KoreanPartOfSpeechStopFilterFactory"/>
    <filter class="solr.KoreanReadingFormFilterFactory"/>
    <filter class="solr.KoreanMixedReadingFormFilterFactory"/>
    <filter class="solr.KoreanStemFilterFactory"/>
  </analyzer>
</fieldType>

위의 예시에서는 한국어 문서를 토큰화하는 KoreanTokenizerFactory와 형태소 분석을 수행하는 여러 필터를 포함하고 있습니다.

문서 분류

Solr을 이용하여 문서를 분류하기 위해서는 먼저 학습 데이터를 준비해야 합니다. 학습 데이터는 분류기를 훈련시키기 위해 사용되며, 분류하고자 하는 카테고리에 따라 레이블이 지정되어 있어야 합니다.

Solr에서 제공하는 머신 러닝 알고리즘 중, 분류에 효과적인 NaiveBayesClassifier를 사용하여 문서 분류를 수행해보겠습니다.

$ bin/solr create_collection -c news_collection
$ bin/solr post -c news_collection example/exampledocs/news_sample.json

위의 명령어를 실행하여 Solr 컬렉션과 데이터를 생성합니다. 이후에는 Solr에서 제공하는 분류 알고리즘을 사용하여 문서를 분류할 수 있습니다.

$ bin/solr create -c sentiment_collection -d server/solr/configsets/data_driven_schema_configs/conf -s 1
$ bin/post -c sentiment_collection example/exampledocs/sentiment_example.txt

위의 명령어를 실행하여 분류 모델을 생성하고, 테스트 데이터를 추가합니다. 이제 모델을 사용하여 실제 문서를 분류할 수 있습니다.

$ curl http://localhost:8983/solr/news_collection/mlt?q=id:1&mlt.fl=content&mlt.mindf=1&mlt.mintf=1

위의 예시 코드는 Solr에서 문서 1과 유사한 문서를 검색하는 Multi-term Like This(MTLT) 기능을 사용한 예시입니다.

마무리

이렇게 파이썬을 이용하여 Solr의 텍스트 분석 및 문서 분류 기능을 개발하는 방법에 대해 알아보았습니다. Solr은 다양한 기능을 제공하며, 파이썬과 같은 프로그래밍 언어를 통해 좀 더 편리하게 활용할 수 있습니다.

더 자세한 내용은 Solr 공식 문서를 참고하시기 바랍니다.

#Solr #텍스트분석 #문서분류