日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

基于主动学习算法减少人工标注量,提升文本标注效率的方案探究

發布時間:2024/7/5 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于主动学习算法减少人工标注量,提升文本标注效率的方案探究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于主動學習算法減少人工標注量,提升文本標注效率的方案探究

閱讀 451收藏 232018-06-26原文鏈接:yq.aliyun.comOPPO技術開放日第三期,未來的探索 · AI&AR的實踐應用juejin.im

項目地址:?https://github.com/crownpku/Chinese-Annotator


自然語言處理的大部分任務是監督學習問題。序列標注問題如中文分詞、命名實體識別,分類問題如關系識別、情感分析、意圖分析等,均需要標注數據進行模型訓練。在深度學習大行其道的今天,基于深度學習的 NLP 模型更是數據饑渴。?

最前沿的 NLP 技術往往首先針對英文語料。英文 NLP 的生態很好,針對不同有意思的問題都有不少大規模語料公開供大家研究,如斯坦福的 SQuAD 閱讀理解語料。中文方面開源語料就少得多,各種英文 NLP 上的犀利模型和前沿技術都因為中文語料的匱乏很難遷移過來。

另一方面,對于一些垂直領域,如醫療、金融、法律、公安等等,專有名詞和特有需求甚多,很難將比較 general 的比如在 wikipedia dump 上面訓練的模型直接拿過來用。?

傳統人工標注數據的過程往往是繁瑣和低效率的。剛標了一個“聯想”是公司名,又來一個“聯想集團”,再標一次又來一個“聯想集團有限公司”,如此的例子令標注過程含有大量的重復勞動。另一方面也沒有一個易上手的標注 UI,標注工作者往往需要直接按預先定好的格式直接在寫字板之類的軟件中修改原始數據,格式錯誤率也較高。?

能不能構建一個中文文本的標注工具,需要看以下兩個特點:?

  • 標注過程背后含有智能算法,將人工重復勞動降到最低;?
  • 標注界面顯而易見地友好,讓標注操作盡可能簡便和符合直覺。?
  • 答案是可以的。事實上很多標注工具已經做到了這一點,最先進的如 Explosion.ai 的 Prodigy;然而開發了著名的 NLP 開源包 Spacy 的 explosion.ai 選擇了將 Prodigy 閉源,而 Spacy 支持中文也仍然遙遙無期。我們希望構建一個開源的中文文本標注工具,而本文很多的技術靈感正是來自 Prodigy 文檔[1]。?

    主動學習的智能標注算法

    流程:?

  • 用戶標一個label;
  • 主動學習的后臺算法分為 online 和 offline 部分。online 部分即時更新模型,可使用諸如 SVM、bag of words 等盡可能快的傳統方法;offline 部分當標注數據積累到一定數量時更新模型,可使用準確度較高的深度學習模型;?
  • 模型更新后,對盡可能多的 example 做預測,將確信度排序,取確信度最低的一個 example 作為待標注例子。重復 1 的過程。?
  • 可以想象如果模型訓練得好的話,這個過程將直接忽略掉確信度最大的那些例子,而把所有重點放在分類邊界上的那些確信度小的例子。這樣可以盡算法所能減少用戶端的人工工作量。?

    online 與 offline 模型互相協作,與用戶手動標注的過程一起不斷迭代;在最終標注任務完成之后,offline 模型可以重新在所有標注數據上重新訓練,以達到最好的模型效果。?

    顯而易見的友好標注前端

    用戶標注的界面應該盡可能符合直覺,讓用戶完全聚焦在當前的標注任務上。 Prodigy 給了一個非常好的 demo[2],每一次的標注只需要用戶解決一個 case 的問題。以文本分類為例,對于算法給出的分類結果,只需要點擊“正確”提供正樣本,“錯誤”提供負樣本,“略過”將不相關的信息濾除,“Redo”讓用戶撤回操作,四個功能鍵以最簡模式讓用戶進行標注操作。?

    真正應用中,應該還要加入一個用戶自己加入標注的交互方式,比如用戶可以高亮一個詞然后選擇是“公司”,或者鏈接兩個實體選擇他們的關系等等。


    以上是個人覺得的一個智能中文文本標注工具的最大亮點。算法本身還有很多細節需要思考,比如 online 機器學習算法與 offline 深度學習算法的協作、中文 NLP 的特征提取與模型構建、正則規則的引入、word embedding 的訓練和使用等等。

    系統本身還要考慮后臺存儲(SQLite?)和數據導入導出,前端框架選型和開發,前后端交互(django? flask? RestAPI?)等等的問題。下面是 Prodigy 的簡單架構圖。


    我們希望專注于中文文本標注的功能。前期我們想實現三種中文 NLP 任務的標注工具:中文命名實體識別,中文關系識別,中文文本分類。未來如果有更多如中文圖片問答、中文圖片描述之類的任務,我們可以再研究加入圖片標注這一塊。

    希望這個工具的開發會是以中文社區的開源協作方式,為整個中文 NLP 的開源生態做出一點貢獻。

    FAQ

    1. 待標注數據集如何分割

    應該分為按句子、按段落、按文章三種,寫入配置文件由用戶選擇。 原因是命名實體識別與關系抽取可能按句子或者段落為單位給用戶標注比較合適;同時可能用戶會有全文章分類的需求,需要給出全文。?

    2. 為什么要使用 online?

    用戶標注數據 + offline 標注數據,為什么還要使用 online model 更新數據呢?原因是 offline 的模型往往在全量數據上重新學習,也很可能需要使用深度學習模型,訓練的速度會很慢。而 active learning 的人機迭代過程要求模型給出幾乎實時的 stream 級別的訓練和推斷速度,這時候就需要 online model 來先行更新數據。?

    3. 使用什么機制觸發 offline model??

    這也可以是寫入配置文件的參數。一種是用戶標夠了 100 個或提前設置好的足夠多的新的數據,就可以啟用 offline model 進行訓練;另一種是給用戶一個按鈕,用戶可以點擊啟動后臺的 offline 模型訓練并給出進度條。?

    4.?系統使用什么格式的配置文件??

    推薦 json 格式的配置文件。請參考一個例子在這里[3]。

    5. AIgo Factory 是什么?和 User Instance 里面的部分是不是有點重合?

    Algo?factory 是算法的代碼模塊,你可以想象一堆 tensorflow 或者 sklearn 的代碼;而 user instance 是 config 文件與模型參數,是一堆用戶生成的 json 文件和模型文件。algo factory 是可以不同 user instance 傳入參數復用的,而每一個 user instance 代表了一個用戶任務的實例。

    這樣設計的目的,是盡可能使系統可復用部分模塊化,而抽出用戶具體任務的配置與數據單獨存儲管理。

    附錄:幾個開源文本標注工具

    • IEPY?


    整個工程比較完整,有用戶管理系統。前端略重,對用戶不是非常友好。

    代碼:https://github.com/machinalis/iepy?

    說明:http://iepy.readthedocs.io/en/latest/index.

    html

    • DeepDive (Mindtagger)


    Screenshot of Mindtagger precision task in progress


    前端比較簡單,用戶界面友好。?

    介紹:http://deepdive.stanford.edu/labeling?

    前端代碼:https://github.com/HazyResearch/mind

    bender?

    將 DeepDive 的 corenlp 部分轉為支持中文的代碼嘗試:

    https://github.com/SongRb/DeepDiveChineseApps?

    https://github.com/qiangsiwei/DeepDive_Chinese?

    https://github.com/mcavdar/deepdive/commit/6882178cbd38a5bbbf4eee8b76b1e215537425b2

    • BRAT


    介紹:http://brat.nlplab.org/index.html?

    在線試用:http://weaver.nlplab.org/~brat/demo/

    latest/#/?

    代碼:https://github.com/nlplab/brat

    • SUTDAnnotator


    用的不是網頁前端而是 pythonGUI,但比較輕量。?

    代碼:https://github.com/jiesutd/SUTDAnnotator?

    Paper:https://github.com/jiesutd/SUTDAnnotator

    /blob/master/lrec2018.pdf

    • Snorkel


    Page: https://hazyresearch.github.io/snorkel/?

    Github: https://github.com/HazyResearch/snorkel?

    Demo Paper: https://hazyresearch.github.io/snorkel/

    pdfs/snorkel_demo.pdf

    • Slate


    Code: https://bitbucket.org/dainkaplan/slate/?

    Paper: http://www.jlcl.org/2011_Heft2/11.pdf

    • Prodigy


    和著名的 spacy 是一家做的。

    Website: https://prodi.gy/docs/?

    Blog: https://explosion.ai/blog/prodigy-annotation-tool-active-learning


    原文發布時間為:2017-11-26

    本文來自云棲社區合作伙伴“數據派THU”,了解相關信息可以關注“數據派THU ”微信公眾號

    • 算法
    • 深度學習
    相關熱門文章
    • 幾道 BAT 算法面試中經常問的「字符串」問題
      • 程序員吳師兄
      • 2
    • 每周一算法之二分查找(Kotlin描述)
      • mikyou
      • 2
    • HTTP----HTTP緩存機制
      • 北海北方
      • 30
    • 五線譜入門,程序員也可以玩音樂
      • 埃里克拓荒
      • 11
    • TensorFlow的新生!
      • 機器之心

    總結

    以上是生活随笔為你收集整理的基于主动学习算法减少人工标注量,提升文本标注效率的方案探究的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。