向AI轉型的程序員都關注了這個號👇👇👇前端
機器學習AI算法工程 公衆號:datayxpython
因爲市面上的文本標註工具沒法知足實際項目的標註場景需求,所以本項目自主開發了基於web的文本標註工具用於構建高質量的語料庫。該工具須要支持實體標註、關係標註、事件抽取、文本分類等基礎標註功能,要求標註規範可自定義,文本可迭代標註,適用於大規模實體類型的標註任務,可拓展嵌套實體標註、標準名標註和基於字典匹配和正則匹配的預標註功能。在知足標註功能的前提下,儘量優化標註體驗,減小用戶的工做量和成本消耗,同時保證標註結果的準確性。標註工具需知足在主流操做系統Windows、Linux和Mac上正常運行。程序員
技術難點
(1).最基礎的實體標註功能須要實時可視化顯示每次的標註結果,每次標註時須要支持可選擇大量實體類型。web
(2).兩個實體之間的關係標註實現方式,多個實體之間的事件抽取實現方式。面試
(3).嵌套實體標註的實時可視化展現。算法
(4).文本支持迭代標註中,對已標註文本的標註內容識別導入數據庫。docker
(5).基於正則匹配和字典匹配的自動標註的結果緩存與顯示,以及結果的確認並導入數據庫。數據庫
(6).優化用戶標註體驗、提升標註效率。json
(7).爲了提升標註結果的正確率,增設審覈環節。flask
(8).容許在多種系統環境上部署運行。
MarkTool 基於web的通用文本標註工具
華東理工大學-天然語言處理與醫療大數據實驗室
項目代碼 獲取:
關注微信公衆號 datayx 而後回覆 文本標註 便可獲取。
AI項目體驗地址 https://loveai.tech
完整版特性:
高效的標註方式:它對每一個實體的標註不須要鼠標的屢次點擊或者大範圍移動,而且支持實體嵌套標註、文本迭代標註和基於預標註功能的半自動標註方式。
強大的標註功能:它支持多種類型的標註任務,包括命名實體識別的實體標註、兩個實體之間的關係標註、多個實體集合的事件抽取、文本分類、歸一化任務的標準名標註以及經過字典匹配和正則匹配實現的自動標註功能。
優雅的標註界面:它經過建立實體分級的標註規範能夠保證在使用大規模的實體類型的同時避免標註界面中實體選擇欄的爆炸顯示。此外,它還具備實體統計模塊,能夠直觀地顯示已標註的實體類型及其數量。當你將鼠標箭頭在文本中所標註的實體上懸浮1秒就會顯示該實體所對應的的實體類型,這一設計很是方便用戶進行回顧和檢查已標註實體。
通用的標註平臺:它支持對全部序列文本的標註,具備語言無關性和領域無關性,現已在多個領域包括軍工、醫療和公共治安領域投入應用。
獨特的質檢模式:它支持多人協同標註(默認爲2人)。儘管有詳細的標註規範和規則說明,可是因爲人爲的錯誤、標註規則未涵蓋的語言現象以及詞語自己的歧義,標註者之間的分歧仍不能徹底避免,所以對標註結果的質檢就顯得不可或缺。MarkTool經過添加審覈階段對多個標註者的標註結果進行一致性檢驗和微調,從而提升標註結果的正確率和可靠性。
便捷的獲取途徑:它不依賴於特定的操做系統,只須要導入docker鏡像,並在工做目錄下輸入命令docker-compose up啓動服務,便可在瀏覽器進行標註工做。
標註的總框架
首先,管理員須要建立所需的標註規範。若是所需的標註規範已存在則能夠直接建立標註任務,不然管理員須要新建該標註規範。
其次,管理員能夠根據實際需求建立多個不一樣類型的標註任務,每一個任務對應一種標註規範,填寫任務的基本信息並上傳相關文件(待標註的原文件filename.txt是必須的),選擇該任務所要分配的標註者(默認2個)和審覈者(默認1個)便可完成任務的建立。
再次,標註者能夠查看本身所分配到的任務並進行相應的標註。當一個任務的全部標註者都完成標註並點擊提交以後,該任務的審覈者就會看到系統自動合併以後的標註結果並進行審覈。在審覈環節中,審覈者能夠對已標註的內容進行調整從而獲得最終的標註結果。
最後,管理員能夠在任務總覽頁面中下載標註結果(json格式的文件)。
解決方案及效果展現
前端採用VUE框架實現數據與視圖綁定,可實時將後端傳過來的實體標註的結果進行可視化顯示,用戶可以在文本上看到每一個實體的顏色、類型(及其標準名),而且進行標註數量的實時統計,在實體統計區域顯示每種實體類型的已標註數量,其效果如圖1所示。
爲了可以知足大規模實體類型的標註任務需求,該工具設計了一種全新的分級實體選擇方式,經過二級實體將可選的實體類型總數從原有的n種大大提升到n2種,而且第一次和第二次都只須要瀏覽n種選擇便可。在每次的實體標註中用戶不須要屢次點擊鼠標和大範圍移動,在數千上萬的標註工做中極大地提高了用戶的工做效率。其效果如圖2所示。
關係標註的核心是在已標註的實體集上進行一一映射,所以該工具在關注標註模塊中設計爲第一步選擇前實體,第二步選擇後實體、第三步肯定這兩者之間的關係名,其效果如圖3所示。
事件抽取的本質是多個實體的集合,所以該工具在事件標註任務中經過先創建相應的事件標註規範對須要抽取的事件組類型以及事件組的實體構成再選擇添加某個事件組類型並進行事件組內部實體的標註。在事件統計列表中能夠看到每一個已標註事件的具體標註狀況,包括每一個實體的內容和類型,而且經過點擊「查看標註」按鈕能夠切換對不一樣事件的查閱與修改。事件標註的示例圖如圖4所示。
嵌套實體標註首先記錄每一個實體的始末位置以及實體內容、實體顏色,經過對不一樣實體的位置進行計算,在長實體的基礎上將短實體的所在的位置進行顯示覆蓋,若是刪除該實體則須要將文本該始末位置之間的顯示內容進行還原。嵌套實體標註的示例圖如圖5所示。
迭代標註時首先須要保證已標註的文本(答案文件)的傳入順序與之間首次標註時傳入的順序相同,利用python的pickle 模塊將答案文件的標註內容反序列化,並將結果存入數據庫中以實現再標註。建立任務時要在步驟6中按序上傳對應的答案文件,如圖6所示。
基於正則匹配和字典匹配的自動標註須要對標註臨時結果進行可視化顯示,而且容許在瀏覽完臨時結果後選擇不保存。所以須要前端進行緩存結果並顯示,可是不傳入後端數據庫,只有在用戶點擊確認保存以後纔會將結果存入後端數據庫。進行正則匹配和字典匹配以前能夠選擇上傳相應的字典文件和正則文件。建立任務時可在步驟3中上傳對應的字典文件,如圖7所示;可在步驟4中上傳對應的正則文件,如圖8所示。若是在建立任務時選擇不上傳相應的字典文件和正則文件也能夠在後續的標註過程當中逐條添加所需的字典和正則規則。
該工具還支持實體的標準名標註,如圖9所示。用戶能夠經過上傳標準文件或者在標註過程當中選擇管理標準名稱進行添加
爲了提升標註效率,在系統設計中容許自定義的標註規範可複用,實現「一次創建屢次複用」的目標,極大地減小了用戶在同類型標註任務中對標註規範的反覆建立。標註規範的示例如圖10所示
該系統還設計了審覈環節用以保證標註結果的準確率與可靠性。審覈環節中會對標註者的標註結果進行一致性檢驗,對於經過檢驗的文本會對標註結果進行合併,並顯示合併結果來源,同時還支持切換查看不一樣角色的標註結果,幫助審覈者快速分析與調整,其頁面效果如圖11所示。
該工具採用docker鏡像進行部署,只需系統上有docker環境便可一鍵導入工具的鏡像,無需複雜的配置步驟和系統操做,對操做系統類型沒有限制,即便在不聯網的環境也能正常使用。導入鏡像並在工做目錄下執行命令docker-compose up啓動本地服務便可訪問瀏覽器地址 http://127.0.0.1:18080/ 進行標註。
閱讀過本文的人還看了如下文章:
基於40萬表格數據集TableBank,用MaskRCNN作表格檢測
《深度學習入門:基於Python的理論與實現》高清中文PDF+源碼
2019最新《PyTorch天然語言處理》英、中文版PDF+源碼
《21個項目玩轉深度學習:基於TensorFlow的實踐詳解》完整版PDF+附書代碼
PyTorch深度學習快速實戰入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機器學習實戰:基於Scikit-Learn和TensorFlow》
李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材
【Keras】完整實現‘交通標誌’分類、‘票據’分類兩個項目,讓你掌握深度學習圖像分類
如何利用全新的決策樹集成級聯結構gcForest作特徵工程並打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特徵工程
不斷更新資源
深度學習、機器學習、數據分析、python
搜索公衆號添加: datayx
機大數據技術與機器學習工程
搜索公衆號添加: datanlp
長按圖片,識別二維碼
本文分享自微信公衆號 - 機器學習AI算法工程(datayx)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。