天天看點

論文閱讀_中文NLP_LTP

英文題目:N-LTP: An Open-source Neural Language Technology Platform for Chinese

中文題目:開源中文神經網絡語言技術平台N-LTP

論文位址:https://arxiv.org/pdf/2009.11616v4.pdf

領域:自然語言處理

發表時間:2021

作者:Wanxiang Che等,哈工大

出處:EMNLP

被引量:18+

代碼和資料:https://github.com/HIT-SCIR/ltp

閱讀時間:22.06.20

讀後感

它是一個基于Pytorch的針對中文的離線工具,帶訓練好的模型,最小模型僅164M。直接支援分詞,命名實體識别等六種任務,六種任務基本都圍繞分詞、确定詞的成份、關系。

實測:比想象中好用,如果用于識别人名,效果還可以,直接用于垂直領域,效果一般,可能還需要進一步精調。

論文閱讀_中文NLP_LTP

文章貢獻

  • 支援六項中文自然語言任務。
  • 基于多任務架構,共享知識,減少記憶體用量,加快速度。
  • 高擴充性:支援使用者引入的BERT類模型。
  • 容易使用:支援多語言接口 C++, Python, Java, Rust
  • 達到比之前模型更好的效果

設計和架構

論文閱讀_中文NLP_LTP

圖-2展示了軟體架構,由一個多任務共享的編碼層和各任務别實作的解碼層組成。

共享編碼層

使用預訓練的模型 ELECTRA,輸入序列是s=(s1,s2,…,sn),加入符号将其變成 s = ([CLS], s1, s2, . . . , sn, [SEP]),請見BERT原理,輸出為對應的隐藏層編碼

H = (h[CLS],h1, h2, . . . , hn, h[SEP])。

中文分詞 CWS

将編碼後的H代入線性解碼器,對每個字元分類:

論文閱讀_中文NLP_LTP

y是每個字元類别為各标簽的機率。

位置标注 POS

位置标注也是NLP中的一個重要任務,用于進一步的文法解析。目前的主流方法是将其視為序列标注問題。也是将編碼後的H作為輸入,輸出位置的标簽:

論文閱讀_中文NLP_LTP

y是該位置字元屬于某一标簽的機率,其中i是位置資訊。

命名實體識别 NER

命名實體識别的目标是尋找實體的開始位置和結束位置,以及該實體的類别。工具中使用Adapted-Transformer方法,加入方向和距離特征:

論文閱讀_中文NLP_LTP

最後一步也使用線性分類器計算每個詞的類别:

論文閱讀_中文NLP_LTP

其中y是NER屬于某一标簽的機率。

依賴性解析 DEP

依賴性解析主要是分析句子的語義結構(詳見網上示例),尋找詞與詞之間的關系。軟體中具體使用了雙仿射神經網絡和einser算法。

論文閱讀_中文NLP_LTP

語義依解析 SDP

與依賴性分析相似,語義依賴分析也是捕捉句子的語義結構。它将句子分析成一棵依存句法樹,描述出各個詞語之間的依存關系。也即指出了詞語之間在句法上的搭配關系,這種搭配關系是和語義相關聯的。具體包括:主謂關系SBV,動賓關系VOB,定中關系ATT等,詳見:

​​​從0到1,手把手教你如何使用哈工大NLP工具——PyLTP​​ 具方法是查找語義上互相關聯的詞對,并找到預定義的語義關系。實作也使用了雙仿射模型。

論文閱讀_中文NLP_LTP

當p>0.5時,則認為詞 i 與 j 之間存在關聯。

語義角色标注 SRL

語義角色标注主要目标是識别句子以謂語為中心的結構,具體方法是使用端到端的SRL模型,它結合了雙仿射神經網絡和條件随機場作為編碼器,條件随機場公式如下:

論文閱讀_中文NLP_LTP

其中f用于計算從yi,j-1到yi,j的轉移機率。

知識蒸餾

為了比較單獨訓練任務和多任務訓練,引入了BAM方法:

論文閱讀_中文NLP_LTP

用法

安裝

$ pip install ltp      

線上demo

​​http://ltp.ai/demo.html​​

示例代碼

from ltp import LTP

ltp = LTP()
seg, hidden = ltp.seg(["他叫湯姆去拿外衣。"])
pos = ltp.pos(hidden)
ner = ltp.ner(hidden)
srl = ltp.srl(hidden)
dep = ltp.dep(hidden)
sdp = ltp.sdp(hidden)      

其中seg函數實作了分詞,并輸出了切分結果,及各詞的向量表示。

精調模型

下載下傳源碼

$ git clone https://github.com/HIT-SCIR/ltp      

在其 ltp 目錄中有 task_xx.py,可訓練及調優模型,用法詳見py内部的示例。形如:

python ltp/task_segmention.py --data_dir=data/seg --num_labels=2 --max_epochs=10 --batch_size=16 --gpus=1 --precision=16 --auto_lr_find=lr      

實驗

Stanza是支援一個多語言的NLP工具,中文模組化效果比較如下:

論文閱讀_中文NLP_LTP

參考

繼續閱讀