試用開源標註平臺 Label Studio

數據標註是人工智能背後的女人。—— 我說的

初探

在 reddit 上看到一個人提了一個問題:What is your favourite (free) labelling tool?,你最喜歡的(免費)標註工具是什麼。由於我一直關注標註工具,而且沒找到好用、漂亮的標註工具(甚至一度計劃自己做一個),也認爲這塊很重要,所以就點進去看了下。收穫不少,帖子樓主提到的 Prodigy,我點進去看了看,確實很漂亮,但是收費,來看下價格:

在這裏插入圖片描述
罷了。

貧窮讓我看到了 Label Studiodoccanobrat,brat 我之前就知道,只是沒那麼美觀。剩下兩個都很不錯,開源也美觀,這次我們來看看前者。
在這裏插入圖片描述
以命名實體識別任務的數據標註爲例,先來看下使用 Label Studio 進行標註的效果:
在這裏插入圖片描述
查看任務進度:
在這裏插入圖片描述
後端使用的是 flask,前端使用的是 React。

OK,如果你還滿意的話可以繼續往下看安裝、導入數據等部分了。接下來我會以標註 NER 數據爲例,介紹如何使用 Label Studio。標註類別有人名、地名、公司名、產品和時間,標註數據放在 sentences.txt 中,內容如下:

狼牙山,我站在你面前,顯得多麼矮小呀!
1976年9月間,我與《福建文藝》編輯部的幾位同事,專程到上杭縣舉辦改稿學習班。
羅灣村爲修建一座廟宇,從籌集資金、徵集土地,到竣工持續近10年。
20日凌晨1時許,博物館附設的“藝術咖啡”酒吧招待員克羅科洛與監控室的3名女看守聯繫,沒有得到回答。
可口可樂公司的發言人辯稱,飲料市場本來就是競爭高度激烈的地方,百事可樂應該直接到市場去競爭,而不是在法庭上爭鬥。

安裝和啓動

主要有三種方式 :

  • pip:pip install label-studio,建議使用 conda 等虛擬環境
  • docker:docker pull heartexlabs/label-studio,docker 鏡像版本可能會滯後
  • 源碼:
    git clone https://github.com/heartexlabs/label-studio.git
    cd label-studio
    python setup.py develop
    

建議使用 pip 方式安裝。

假設我們計劃將標註相關文件放在 ner_labeling 文件夾中,你不用事先創建。安裝好後使用如下命令啓動:

label-studio start ner_labeling --init

這會初始化這個項目並默認在 8200 端口啓動服務,生成一些默認文件和文件夾:

ner_labeling/
├── completions  # 存放標註好的數據,json 文件,每一個標註完成的任務都放在一個以其 ID 命名的 json 文件中
├── config.json  # 項目設置,例如服務端口
├── config.xml   # 標籤(label)設置
└── tasks.json   # 所有導入的任務,key 爲任務 ID,value 爲任務數據

然後你就可以在 http://{your-server-ip}:8200 訪問了。

設置標籤

第一步就是要設置標籤,具體包括標籤名稱、顏色等。可以在網頁上直接修改並直觀看到效果:
在這裏插入圖片描述
如圖修改標籤名稱和顏色,滿意後點擊左下角的 Save 按鈕,保存設置到 config.xml 中。

注意官方並不建議直接修改項目中的文件,建議使用網頁或者命令修改。

導入任務

接着點擊左上角圖標回到主頁面,進行第二步導入任務,可以導入 json、csv、tsv 和 txt 等文件格式。對於本文的例子來說,我們使用 txt 文件最爲方便,一行是一個句子,直接將文件拖入上傳框中即可,完成後會顯示導入任務數和耗費時間:

單個 txt 文件大小不超過 1M,如果超過 1M,可以使用 split 命令分割。

在這裏插入圖片描述
關閉後點擊右上方導航欄的 Tasks,可看到導入的任務數和任務存放地址,就是那個 tasks.json,任務 ID 默認從 0 開始計數,生成的 tasks.json 如下:

{
    "0": {
        "id": 0,
        "data": {
            "text": "狼牙山,我站在你面前,顯得多麼矮小呀!"
        }
    },
    "1": {
        "id": 1,
        "data": {
            "text": "1976年9月間,我與《福建文藝》編輯部的幾位同事,專程到上杭縣舉辦改稿學習班。"
        }
    },
    "2": {
        "id": 2,
        "data": {
            "text": "羅灣村爲修建一座廟宇,從籌集資金、徵集土地,到竣工持續近10年。"
        }
    },
    "3": {
        "id": 3,
        "data": {
            "text": "20日凌晨1時許,博物館附設的“藝術咖啡”酒吧招待員克羅科洛與監控室的3名女看守聯繫,沒有得到回答。"
        }
    },
    "4": {
        "id": 4,
        "data": {
            "text": "可口可樂公司的發言人辯稱,飲料市場本來就是競爭高度激烈的地方,百事可樂應該直接到市場去競爭,而不是在法庭上爭鬥。"
        }
    }
}

開始標註

導入數據後就可以開始標註了,點擊導航欄的 TasksStart Labeling 或者直接點擊導航欄的 Labeling 即可開始標註:
在這裏插入圖片描述

每次點擊 Submit 就會保存標註好的數據到 completions 文件夾中,同時也可以在 Tasks 中查看已完成的任務及完成時間:
在這裏插入圖片描述

導出數據

導出數據這塊是 Label Studio 的一個缺點,官方目前支持的是 JSON、CSV、TSV、CoNLL 2003、COCO 和 Pascal VOC XML,其中 CoNLL 2003 是 ner 數據格式的一種,但是經過我測試導出這種格式並不成功,導出的文件是空的。

但是我們可以先導出爲 JSON 文件,然後編寫一個腳本轉換成我們需要的格式,例如 BIEOS。

優缺點

經過我粗淺的使用,發現一些優缺點:

優點:

  • 界面相對美觀
  • 部署方便
  • 配置方便,有多種內置模板
  • 導入數據方便
  • 可以明晰瞭解任務的完成度及每條任務的完成時間
  • 支持圖像、文本和音頻等多種數據格式和多種任務數據的標註

缺點:

  • 速度較慢,尤其是保存標註結果並進行下一條標註時
  • 沒有賬號體系,但是有一個 multisession mode,暫未深入研究

Reference

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章