Skip to content
NLP 與文本

用 Potato 做 NLP 與文本標註

標註實體、關係和文件類別,每個條目分配多名標註者並測量他們的一致性,再匯出為 CoNLL,全部在你自己的伺服器上完成。

Potato 是面向 NLP 研究的開源文本標註工具,支援命名實體的片段標籤、文件分類、關係和共指,每個條目可分配多名標註者,並在研究進行中測量一致性。Potato 用 pip 安裝,執行在你自己的電腦或伺服器上,可匯出 CoNLL、JSONL 或 Hugging Face 資料集。

Potato 出自密西根大學的 NLP 研究,文本也是 Potato 支援時間最長的資料類型。它的設計取捨來自研究團隊實際的標註方式:一個任務就是一份配置檔案,可以和論文一起放進版本控制;多名標註者可以標註同一批條目,從而測量一致性;資料始終留在你能控制的機器上。Potato 2.0 發表於 ACL 2026,最初的版本發表於 EMNLP 2022。

Potato 中的 NLP 任務

每一行是 Potato 自帶的一種標註類型,連結頁面列出了它的選項。

任務Potato 標註類型文件
命名實體識別及其他片段span,允許片段重疊片段標註
文本分類,單標籤或多標籤radio、multiselect,分類體系用 hierarchical_multiselect單選與多選
關係抽取片段之間帶類型的關係連結片段連結
共指指向同一實體的提及鏈共指鏈
實體連結連結到 Wikidata 或 UMLS 識別符號的片段實體連結
事件抽取ACE 風格的觸發詞和論元事件標註
抽取式問答針對問題的答案片段,與 SQuAD 相同抽取式問答
評分與自由文本李克特量表、滑塊和文本框文本標註指南

在一個任務中同時標註實體和文件標籤

一個任務可以就同一段文本提出多個問題。下面的配置要求標註者標出實體,並給整篇文件一個情感標籤;每個條目分配兩名標註者,以便測量他們的一致性。

yaml
annotation_task_name: "News entities and sentiment"
task_dir: "."
data_files:
  - data/articles.jsonl
item_properties:
  id_key: id
  text_key: text
output_annotation_dir: annotation_output/
user_config:
  allow_all_users: true
num_annotators_per_item: 2
agreement_metrics:
  enabled: true
  min_overlap: 2
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight every person, organization and location"
    labels: [PERSON, ORGANIZATION, LOCATION]
  - annotation_type: radio
    name: sentiment
    description: "What is the overall sentiment of the article?"
    labels: [positive, neutral, negative]
    label_requirement:
      required: true

條目有了兩份標註之後,agreement_metrics 會在管理儀表板上按方案報告 Krippendorff's alpha。每個條目都加第二名標註者會讓成本翻倍,常見的折中做法是從中抽取幾百個條目分配兩名標註者,其餘條目只分配一名。你需要多少位標註者?詳細分析了這一權衡。

匯入資料與匯出標籤

資料檔案可以是 JSON、JSONL、CSV 或 TSV,每行一個條目。已有項目可以用 potato import 遷移過來,它讀取 Label Studio、Argilla、brat、doccano、Prodigy、CoNLL-2003、CoNLL-U 和 TEI 的匯出檔案,並生成一個已宣告好標註方案、可直接執行的項目。

標籤以 NLP 訓練程式碼能讀取的格式匯出。conll_2003 和 conll_u 匯出器寫出詞元級標籤,jsonl 保留完整的答案結構,parquet 適合大型資料集,huggingface 則把資料集推送到 Hub。匯出標註資料用於機器學習演示瞭如何載入每種格式用於訓練。

與 Label Studio、Prodigy、INCEpTION 和 doccano 的分工

這些工具各自圍繞不同的使用場景構建。Prodigy 是一款付費、可編寫指令碼的工具,圍繞單個標註者在模型輔助下快速標註而設計。INCEpTION 做多層文本標註,並支援知識庫連結。Label Studio 在一個介面裡覆蓋多種資料類型,doccano 是一款面向分類和序列標註的小型開源工具。Potato 圍繞研究項目構建:每個條目分配多名標註者,標註過程中隨時測量一致性,提供注意力檢查條目和黃金標準題等品質檢查,並用一份配置檔案復現整個任務。文本標註工具對比逐項比較了它們的差異。

常見問題

Potato 是開源、可自託管的文本標註工具嗎?

是的。Potato 以 GPL-3.0 許可證釋出,用 pip install potato-annotation 安裝,執行在你自己的電腦或伺服器上。標註結果寫入你自己的磁碟,位於配置中指定的輸出目錄下;除非你配置了會向外傳送資料的 AI 端點,否則不會向任何第三方傳送資料。

如何測量 NER 標註的標註者間一致性?

用 num_annotators_per_item 給每個條目至少分配兩名標註者,並開啟 agreement_metrics,它會在管理儀表板上按方案報告 Krippendorff's alpha。片段標註有其特有的複雜情況,例如部分重疊和無法匹配的片段,片段的一致性對此做了解釋;片段與邊界框一致性計算器可以在瀏覽器中根據匯出檔案計算片段級一致性。

能否讓模型先預標註文本,標註者只做修正?

可以。啟用 ai_support 後,模型會提出標籤或高亮可能的選項,標註者逐條確認或修正,只有經過核實的標籤才會成為資料。Potato 可以連線 OpenAI、Anthropic、Gemini 和 Hugging Face 端點;如果文本不能離開你的網路,也可以通過 Ollama 或 vLLM 連線本地模型。LLM 預標註介紹了具體設定。

片段標籤以什麼格式匯出?

片段標籤可以匯出為 CoNLL-2003 或 CoNLL-U 詞元標籤、帶字元偏移量的 JSONL、Parquet,或 Hugging Face 資料集。匯出格式列出了 Potato 支援寫出的全部 60 種格式。

延伸閱讀

從這裡開始

示例設計

每個設計都是可以下載並直接執行的 Potato 配置。

其他領域

全部應用場景