3단계: 데이터 및 특징 엔지니어링

오픈 소스 자연어 데이터 관리 및 어노테이션 플랫폼으로, 데이터 중심의 NLP 모델 구축 방법에 중점을 둡니다.

DataLabelingNLPWeakSupervisionGitHubTextFreeEnglish

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 라이브러리와 통합되어 다음을 제공합니다:

  • 기성 자동 어노테이션 기능
  • 텍스트 메타데이터 추출 (언어 감지, 문장 복잡도 등)
  • 사전 구축된 어노테이션 함수 템플릿

적용 시나리오

이상적인 사용자 그룹

  1. 개인 NLP 프로젝트 개발자: 충분한 어노테이션 데이터가 부족한 연구원
  2. 팀 협업 프로젝트: 학습 데이터 품질을 관리하고 평가해야 하는 팀
  3. 자원 제약이 있는 프로젝트: 어노테이션 자원(인력, 예산, 시간)을 최적화해야 하는 프로젝트

주요 사용 사례

  • 감성 분석
  • 개체명 인식
  • 텍스트 분류
  • 정보 추출
  • 다국어 텍스트 처리

비즈니스 모델

  • 오픈소스 버전: 단일 사용자 버전, 완전 무료
  • 상업용 버전: 다중 사용자 환경, 팀 협업 기능 제공
  • 엔터프라이즈급 솔루션: 온프레미스 배포 및 맞춤형 서비스

커뮤니티 및 지원

  • 디스코드 커뮤니티: 기술 토론 및 지원
  • GitHub 이슈: 문제 보고 및 기능 요청
  • 문서 센터: 자세한 사용 가이드 및 튜토리얼
  • YouTube 채널: 비디오 튜토리얼 및 데모

프로젝트 장점

  1. 데이터 중심 접근 방식: 단순한 데이터 양 증가보다는 학습 데이터 품질 향상에 중점
  2. 반자동 어노테이션: 수동 어노테이션 작업량 대폭 감소
  3. 확장 가능한 아키텍처: 마이크로서비스 아키텍처로 유연한 배포 지원
  4. 오픈소스 투명성: 완전 오픈소스, 커뮤니티 주도 개발
  5. 엔터프라이즈급 기능: 대규모 배포 및 팀 협업 지원

학습 자료

리파이너리는 현대 NLP 데이터 관리의 모범 사례를 대표하며, 데이터 과학자들이 고품질 학습 데이터셋을 구축할 수 있도록 강력하고 유연한 도구를 제공합니다.