3단계: 데이터 및 특징 엔지니어링
오픈 소스 자연어 데이터 관리 및 어노테이션 플랫폼으로, 데이터 중심의 NLP 모델 구축 방법에 중점을 둡니다.
Refinery - 데이터 과학자를 위한 오픈소스 자연어 데이터 관리 도구
프로젝트 개요
Refinery는 Kern AI가 개발한 오픈소스 데이터 어노테이션 및 학습 데이터 관리 플랫폼으로, 자연어 처리(NLP) 작업을 위해 특별히 설계되었습니다. 이 프로젝트는 데이터 과학자들이 "데이터 중심 접근 방식을 채택하여 더 나은 NLP 모델을 구축"하고 "학습 데이터를 소프트웨어 아티팩트로 취급"하도록 돕는 것을 목표로 합니다.
핵심 기능
1. 데이터 어노테이션 기능
- 수동 및 프로그래밍 방식 어노테이션: 분류 및 스팬 어노테이션 작업 지원
- 반자동 어노테이션: 휴리스틱을 통해 일부 어노테이션 작업 자동화
- 다중 작업 지원: 단일 프로젝트에서 여러 어노테이션 작업 처리 가능
2. 데이터 관리 기능
- 스마트 데이터 브라우저: 신뢰도, 휴리스틱 중복, 사용자, 어노테이션 등 다양한 기준으로 데이터 필터링, 정렬 및 검색 가능
- 데이터 품질 모니터링: 학습 데이터 내의 저품질 하위 집합 식별
- 프로젝트 지표 개요: 신뢰도 분포, 레이블 분포 및 혼동 행렬 제공
3. 머신러닝 통합
- 🤗 Hugging Face 통합: 문서 수준 및 토큰 수준 임베딩 자동 생성
- spaCy 통합: 사전 학습된 언어 모델 활용
- 신경 검색: Qdrant 기반의 유사 기록 검색 및 이상 감지
4. 휴리스틱 및 약한 지도 학습
- 어노테이션 함수: 규칙 기반 자동 어노테이션 로직 생성 및 관리
- 약한 지도 학습: 여러 노이즈가 많고 불완전한 휴리스틱 통합
- 지식 기반 관리: 어노테이션 프로세스를 지원하는 조회 목록 생성 및 관리
5. 협업 기능
- 팀 작업 공간: 다중 사용자 환경 (상업용 버전)
- 역할 기반 접근 제어: 사용자 권한 관리
- 크라우드소싱 어노테이션 통합: 외부 어노테이션 워크플로우 지원
기술 아키텍처
핵심 서비스
- embedder: 임베딩 생성 서비스
- weak-supervisor: 약한 지도 학습 서비스
- tokenizer: 토큰화 서비스
- neural-search: 신경 검색 서비스
- ui: 사용자 인터페이스
- gateway: API 게이트웨이
타사 통합
- PostgreSQL: 데이터 저장소
- Minio: 객체 저장소
- MailHog: 이메일 서비스
- Ory Kratos: 신원 관리
- Ory Oathkeeper: 접근 제어
머신러닝 라이브러리
- scikit-learn: 전통 머신러닝
- spaCy: 자연어 처리
- Hugging Face Transformers: 사전 학습 모델
- Qdrant: 벡터 데이터베이스
설치 및 사용법
빠른 설치
# pip를 사용하여 설치
pip install kern-refinery
# 서비스 시작
cd your-project-directory
refinery start
# 애플리케이션 접속
# 브라우저에서 http://localhost:4455 열기
수동 설치
# 저장소 복제
git clone https://github.com/code-kern-ai/refinery.git
cd refinery
# 서비스 시작 (Mac/Linux)
./start
# 서비스 시작 (Windows)
start.bat
# 서비스 중지
./stop # 또는 stop.bat (Windows)
데이터 형식 지원
입력 형식
- JSON 파일
- CSV 파일
- 스프레드시트
- 텍스트 파일
- 일반 JSON 형식
출력 형식
[
{
"running_id": "0",
"headline": "T. Rowe Price (TROW) Dips More Than Broader Markets",
"date": "Jun-30-22 06:00PM ",
"headline__sentiment__MANUAL": null,
"headline__sentiment__WEAK_SUPERVISION": "NEGATIVE",
"headline__sentiment__WEAK_SUPERVISION__confidence": 0.62,
"headline__entities__MANUAL": null,
"headline__entities__WEAK_SUPERVISION": [
"STOCK", "STOCK", "STOCK", "STOCK", "STOCK", "STOCK", "O", "O", "O", "O", "O"
],
"headline__entities__WEAK_SUPERVISION__confidence": [
0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.00, 0.00, 0.00, 0.00, 0.00
]
}
]
Python SDK
프로젝트는 다음을 지원하는 완전한 Python SDK를 제공합니다:
- 데이터 업로드 및 다운로드
- 프로젝트 관리
- 어노테이션 데이터 내보내기
- Rasa와 같은 프레임워크용 어댑터
# 데이터 가져오기
rsdk pull
# 데이터 푸시
rsdk push <file_name>
오픈소스 Bricks 라이브러리
Refinery는 오픈소스 Bricks 라이브러리와 통합되어 다음을 제공합니다:
- 기성 자동 어노테이션 기능
- 텍스트 메타데이터 추출 (언어 감지, 문장 복잡도 등)
- 사전 구축된 어노테이션 함수 템플릿
적용 시나리오
이상적인 사용자 그룹
- 개인 NLP 프로젝트 개발자: 충분한 어노테이션 데이터가 부족한 연구원
- 팀 협업 프로젝트: 학습 데이터 품질을 관리하고 평가해야 하는 팀
- 자원 제약이 있는 프로젝트: 어노테이션 자원(인력, 예산, 시간)을 최적화해야 하는 프로젝트
주요 사용 사례
- 감성 분석
- 개체명 인식
- 텍스트 분류
- 정보 추출
- 다국어 텍스트 처리
비즈니스 모델
- 오픈소스 버전: 단일 사용자 버전, 완전 무료
- 상업용 버전: 다중 사용자 환경, 팀 협업 기능 제공
- 엔터프라이즈급 솔루션: 온프레미스 배포 및 맞춤형 서비스
커뮤니티 및 지원
- 디스코드 커뮤니티: 기술 토론 및 지원
- GitHub 이슈: 문제 보고 및 기능 요청
- 문서 센터: 자세한 사용 가이드 및 튜토리얼
- YouTube 채널: 비디오 튜토리얼 및 데모
프로젝트 장점
- 데이터 중심 접근 방식: 단순한 데이터 양 증가보다는 학습 데이터 품질 향상에 중점
- 반자동 어노테이션: 수동 어노테이션 작업량 대폭 감소
- 확장 가능한 아키텍처: 마이크로서비스 아키텍처로 유연한 배포 지원
- 오픈소스 투명성: 완전 오픈소스, 커뮤니티 주도 개발
- 엔터프라이즈급 기능: 대규모 배포 및 팀 협업 지원
학습 자료
리파이너리는 현대 NLP 데이터 관리의 모범 사례를 대표하며, 데이터 과학자들이 고품질 학습 데이터셋을 구축할 수 있도록 강력하고 유연한 도구를 제공합니다.