fastHan: 基於BERT的中文NLP集成工具 - 知乎

簡介

fastHan是基於fastNLP與pytorch實現的中文天然語言處理工具,像spacy同樣調用方便。git

其內核爲基於BERT的聯合模型,其在13個語料庫中進行訓練,可處理中文分詞、詞性標註、依存句法分析、命名實體識別四項任務。fastHan共有base與large兩個版本,分別利用BERT的前四層與前八層。base版本在總參數量150MB的狀況下各項任務均有不錯表現,large版本則接近甚至超越SOTA模型。github

項目地址爲:https://github.com/fastnlp/fastHan服務器

安裝

fastHan的安裝很是簡便。它存在以下包的依賴:ide

fastNLP>=0.5.0函數

pytorch>=1.0.0工具

執行指令 pip install fastHan 便可安裝。測試

使用

fastHan的使用很是簡單,只須要兩步,加載模型、輸入句子。網站

加載模型:執行如下代碼便可加載模型:ui



用戶首次初始化模型時模塊將自動從服務器下載參數。模型默認初始化base版本,可修改model_type參數值爲’large’加載large版本。spa

輸入句子:輸入模型的能夠是單獨的字符串,也但是由字符串組成的列表。若是輸入的是列表,模型將一次性處理全部輸入的字符串,因此請自行控制 batch size。模型對句子進行依存分析、命名實體識別的簡單例子以下:



其中,target參數可在'Parsing'、'CWS'、'POS'、'NER'四個選項中取值,模型將分別進行依存分析、分詞、詞性標註、命名實體識別任務,模型默認進行CWS任務。其中詞性標註任務包含了分詞的信息,而依存分析任務又包含了詞性標註任務的信息。命名實體識別任務相較其餘任務獨立。

模型的輸出是在fastHan模塊中定義的sentence與token類。模型將輸出一個由sentence組成的列表,而每一個sentence又由token組成。每一個token自己表明一個被分好的詞,有pos、head、head_label、ner四項屬性,表明了該詞的詞性、依存關係、命名實體識別信息。

若是分別運行CWS、POS、Parsing任務,模型輸出的分詞結果等可能存在衝突。若是想得到不衝突的各種信息,能夠直接運行包含所有所需信息的那項任務。

模型的POS、Parsing任務均使用CTB標籤集。NER使用msra標籤集。

正如上圖所示,模型基礎的使用流程很是簡單。此外,模型還可調整分詞風格、切換設備。

調整分詞風格:模型是在13個語料庫中進行訓練,其中包含了10個分詞語料庫。不一樣語料庫的分詞粒度均不一樣,如本模型默認的CTB語料庫分詞粒度較細。若是想切換不一樣的粒度,可使用模型的set_cws_style函數,例子以下:



在分詞風格中選擇'as'、'cityu'可進行繁體字分詞,這兩項爲繁體語料庫。因爲各項任務共享詞表、詞嵌入,這意味着即便不切換模型的分詞風格,模型對繁體字也具備執行分詞及其餘任務的能力。此外,模型對數字、英文字母也具備必定的識別能力。

切換設備:可以使用模型的set_device函數,令模型在cuda上運行或切換回cpu,示例以下:



模型表現

模型在如下數據集進行測試和訓練:

  • CWS:AS, CITYU, CNC, CTB, MSR, PKU, SXU, UDC, WTB, ZX
  • NER:MSRA、OntoNotes
  • POS & Parsing:CTB9

注:模型在訓練NER OntoNotes時將其標籤集轉換爲與MSRA一致。

最終模型在各項任務中取得的F值以下:

表格中單位爲百分數。CWS的成績是10項任務的平均成績。Parsing中的兩個成績分別表明F_{ldep}和F_{udep}。SOTA模型的數據來自筆者對網上資料及論文的查閱,若有缺漏請指正,不勝感激。這五項SOTA表現分別來自以下五篇論文:

[1] Huang W, Cheng X, Chen K, et al. Toward Fast and Accurate Neural Chinese Word Segmentation with Multi-Criteria Learning.[J]. arXiv: Computation and Language, 2019.

[2] Hang Yan, Xipeng Qiu, and Xuanjing Huang. "A Graph-based Model for Joint Chinese Word Segmentation and Dependency Parsing." Transactions of the Association for Computational Linguistics 8 (2020): 78-92.

[3] Meng Y, Wu W, Wang F, et al. Glyce: Glyph-vectors for Chinese Character Representations[J]. arXiv: Computation and Language, 2019.

[4] Diao S, Bai J, Song Y, et al. ZEN: Pre-training Chinese Text Encoder Enhanced by N-gram Representations[J]. arXiv: Computation and Language, 2019.

[5] Jie Z, Lu W. Dependency-Guided LSTM-CRF for Named Entity Recognition[C]. international joint conference on natural language processing, 2019: 3860-3870.

更多關於模型結構、模型訓練的信息,將來將在項目網站中進行更新。

相關文章
相關標籤/搜索