webis-de/small-text
Active Learning for Text Classification in Python
small-text – 텍스트 분류를 위한 액티브 러닝
무엇인가요
- 텍스트 분류를 위한 액티브 러닝 워크플로우를 구현하는 파이썬 라이브러리입니다. 매우 적은 수의 레이블된 예시로 시작하여 분류기를 훈련하고, 가장 정보가 많은 미레이블 문서를 인간 애노테이터에게 레이블링하도록 요청한 후, 이를 반복하여 정지 조건을 만족할 때까지 진행합니다.
주요 기능
| 기능 | 세부 사항 |
|---|---|
| 쿼리 전략 | 불확실성, 다양성, 마진, 엔트로피, SetFit 기반 등 19가지 내장된 방법으로 어떤 미레이블 텍스트를 인간 애노테이터에게 레이블링하도록 요청할지 결정합니다. |
| 초기화 | 랜덤, 클러스터링 기반, 제로샷 SetFit 초기화 등 여러 가지 방법으로 첫 번째 레이블 세트를 초기화할 수 있습니다. |
| 정지 기준 | 예산, 성능 정체, 신뢰도 임계값 등 5가지 즉시 사용 가능한 기준으로 액티브 러닝 루프를 자동으로 종료합니다. |
| 분류기 백엔드 | scikit-learn 추정기, PyTorch 모델, Hugging Face transformers와 호환됩니다. GPU 지원은 선택 사항이며, 가벼운 CPU 전용 설치도 가능합니다. |
| 확장성 | 인터페이스는 의도적으로 모듈화되어 있어, 어떤 쿼리 전략, 분류기, 정지 규칙도 자유롭게 조합할 수 있습니다. |
일반적인 워크플로우
- 설치 –
pip install small-text(Transformer 모델 사용 시[transformers]추가). - 데이터 준비 – 미레이블 텍스트 풀과 (옵션으로) 작은 초기 레이블 세트를 제공합니다.
- 컴포넌트 선택 – 분류기 (예:
sklearn.LinearSVC,torch.nn.Module,transformers모델), 쿼리 전략, 정지 기준을 선택합니다. - 루프 실행 – 라이브러리가 자동으로 훈련, 쿼리, 레이블 세트 업데이트를 처리합니다.
- 내보내기 – 최종 훈련된 모델이나 레이블된 데이터셋을 추출하여 후속 작업에 사용합니다.
왜 중요한가요
- 레이블 효율성 – 고품질 텍스트 분류기 구축에 필요한 수동 레이블링 양을 줄이며, 특히 레이블링 비용이 높은 분야(의료, 사회과학, 법적 텍스트 등)에서 매우 유용합니다.
- 연구용 준비 완료 – 여러 논문에 사용되었으며 재현성 노트가 포함되어 있어 학술 실험에 적합합니다.
- 통합 친화적 – Argilla 같은 UI 도구와 결합해 완전한 애노테이션 인터페이스를 만들 수 있으며, 사용자 정의 파이프라인에 내장할 수도 있습니다.
시작하기
- 이 리포지토리는 이진 분류, PyTorch 다중 클래스, Transformer 기반 다중 클래스 설정을 위한 예제 스크립트를 제공합니다.
- GitHub에 있는 5개의 Jupyter 노트북(구글 콜랩에서 실행 가능)은 엔드투엔드 액티브 러닝 세션, 정지 기준 사용, SetFit 통합, 제로샷 콜드스타트, Argilla를 활용한 UI 데모까지 단계별로 안내합니다.
문서 및 커뮤니티
- 설치, 컴포넌트 참조, 재현성 노트, 실제 사례 전시를 포함한 완전한 문서는 https://small-text.readthedocs.io 에서 확인할 수 있습니다.
- 프로젝트는 활발히 유지 관리 중이며(MIT 라이선스), CI 배지, 인용용 DOI, CONTRIBUTING 가이드를 통해 기여를 환영합니다.
어떤 경우에 사용할까
- 대규모 텍스트 코퍼스는 있지만 레이블된 예시는 몇 개뿐인 경우.
- 반복적인 뼈대 코드 없이 다양한 액티브 러닝 전략을 실험하고 싶은 경우.
- 전통적인 ML 모델과 최신 Transformer 모델 모두와 호환되는 라이브러리가 필요한 경우.
small-text 는 텍스트 데이터를 위한 핵심 기계학습 기술(액티브 러닝)에 집중한 진정한, 지속적으로 유지 관리되는 소프트웨어 프로젝트로, AI/ML 생태계에 명확히 위치하고 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트