Gensim을 사용하여 텍스트 분류 모델의 정확도 측정 방법 알아보기

텍스트 분류는 자연어 처리(Natural Language Processing, NLP) 분야에서 중요한 작업 중 하나입니다. Gensim은 텍스트 분류 작업에 매우 유용한 도구입니다. 이번 블로그 포스트에서는 Gensim을 사용하여 텍스트 분류 모델의 정확도를 측정하는 방법을 알아보겠습니다.

준비 사항

  1. Gensim 설치하기: Gensim을 사용하기 위해 먼저 설치해야 합니다. pip를 사용하여 다음 명령어를 실행하여 Gensim을 설치합니다.

    pip install gensim
    
  2. 데이터셋 준비하기: 텍스트 분류 모델을 학습하고 테스트하기 위해 데이터셋을 준비해야 합니다. 예를 들어, 스팸 메일 분류를 위한 스팸 메일과 정상 메일로 구성된 데이터셋을 사용할 수 있습니다.

텍스트 분류 모델 학습하기

  1. 데이터셋 로드하기: Gensim은 다양한 파일 형식을 지원하므로, 미리 처리된 텍스트 데이터셋을 로드할 수 있습니다. 예를 들어, .txt 파일을 로드하는 방법은 다음과 같습니다.

    from gensim.models.doc2vec import TaggedDocument
    from gensim.utils import simple_preprocess
    
    def read_corpus(file_path):
        with open(file_path, 'r') as file:
            for line in file:
                yield TaggedDocument(simple_preprocess(line), [file_path])
       
    corpus = list(read_corpus('data.txt'))
    
  2. 분류 모델 학습하기: Gensim의 Doc2Vec 모델을 사용하여 텍스트 분류 모델을 학습할 수 있습니다. 다음은 간단한 예시 코드입니다.

    from gensim.models.doc2vec import Doc2Vec
    
    model = Doc2Vec(vector_size=100, min_count=2, epochs=40)
    model.build_vocab(corpus)
    model.train(corpus, total_examples=model.corpus_count, epochs=model.epochs)
    
  3. 모델 저장하기: 훈련된 모델을 저장하여 나중에 재사용할 수 있습니다.

    model.save('classification_model')
    

텍스트 분류 모델의 정확도 측정하기

  1. 테스트 데이터셋 로드하기: 정확도를 측정하기 위해 테스트 데이터셋을 준비해야 합니다.

    test_corpus = list(read_corpus('test_data.txt'))
    
  2. 분류 모델 예측하기: 저장된 모델을 로드하고, 테스트 데이터셋에 대한 예측을 수행합니다.

    loaded_model = Doc2Vec.load('classification_model')
    test_vectors = [loaded_model.infer_vector(doc.words) for doc in test_corpus]
    predictions = loaded_model.docvecs.most_similar(test_vectors)
    
  3. 정확도 계산하기: 예측 결과와 실제 레이블을 비교하여 정확도를 계산할 수 있습니다.

    def calculate_accuracy(predictions, test_corpus):
        correct_count = 0
        total_count = len(predictions)
        for prediction, truth in zip(predictions, test_corpus):
            if prediction[0] == truth.tags[0]:
                correct_count += 1
        accuracy = correct_count / total_count
        return accuracy
       
    accuracy = calculate_accuracy(predictions, test_corpus)
    print(f"Accuracy: {accuracy}")
    

위 방법을 통해 Gensim을 사용하여 텍스트 분류 모델의 정확도를 측정할 수 있습니다. 데이터셋에 따라 성능은 달라질 수 있으며, 모델의 튜닝 및 다른 알고리즘의 사용이 필요할 수 있습니다.

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

#NLP #Gensim