第三階段:數據與特徵工程

開源的自然語言資料管理和標註平台,專注於以資料為中心的 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. 資源有限的專案:需要最佳化標註資源(人力、預算、時間)的專案

主要使用案例

  • 情感分析
  • 命名實體識別
  • 文字分類
  • 資訊提取
  • 多語言文字處理

商業模式

  • 開源版本:單使用者版本,完全免費
  • 商業版本:多使用者環境,提供團隊協作功能
  • 企業級解決方案:本地部署和客製化服務

社群與支援

  • Discord社群:技術討論和支援
  • GitHub Issues:問題報告和功能請求
  • 文件中心:詳細的使用指南和教學
  • YouTube頻道:影片教學和示範

專案優勢

  1. 以資料為中心的方法:專注於提高訓練資料品質而非僅僅增加資料量
  2. 半自動化標註:大幅減少手動標註工作量
  3. 可擴展架構:微服務架構支援靈活部署
  4. 開源透明:完全開源,社群驅動發展
  5. 企業級功能:支援大規模部署和團隊協作

學習資源

Refinery代表了現代NLP資料管理的最佳實踐,為資料科學家提供了一個強大而靈活的工具來建構高品質的訓練資料集。