前言 LTP語言雲平臺 不支持離線調用; 支持分詞、詞性標註、命名實體識別、依存句法分析、語義角色標註; 不支持自定義詞表,但是你可以先用其他支持自定義分詞的工具(例如中科院的NLPIR)把文本進行分詞,再讓ltp幫你標註 支持C#、Go、Java、JavaScript、Nodejs、PHP、Pyt ...
前言
LTP語言雲平臺
不支持離線調用;
支持分詞、詞性標註、命名實體識別、依存句法分析、語義角色標註;
不支持自定義詞表,但是你可以先用其他支持自定義分詞的工具(例如中科院的NLPIR)把文本進行分詞,再讓ltp幫你標註
支持C#、Go、Java、JavaScript、Nodejs、PHP、Python、R、Ruby等語言調用;
還有一些錯誤響應、頻率限制、重要說明(這幾個我至今也沒用到);
正文
官方網址:http://www.ltp-cloud.com/
使用文檔:http://www.ltp-cloud.com/document/
線上演示:http://www.ltp-cloud.com/demo/
各種語言調用實例可以到Github上下載:https://github.com/HIT-SCIR/ltp-cloud-api-tutorial
例如Python版本的:https://github.com/HIT-SCIR/ltp-cloud-api-tutorial/tree/master/Python
Step1:註冊
在這個網址申請一個API key,稍後會用到;
Step2:一個簡單的例子(java版)
(1)複製代碼:從Github上複製一段代碼(取決於你使用的語言和所需的功能)
(2)修改代碼:
<1>把 api_key = "YourApiKey" 中的 "YourApiKey" 修改成你Step1申請的API Key;
<2>把 text = "我愛北京天安門" 修改成你要處理的文本;
<3>根據需求設置不同的參數(其實只需要api_key,text,pattern,format四個參數就夠了,仔細看下pattern):
1 public class SimpleAPI { 2 public static void main(String[] args) throws IOException { 3 if (args.length < 1 || !(args[0].equals("xml") 4 || args[0].equals("json") 5 || args[0].equals("conll"))) { 6 System.out.println("Usage: java SimpleAPI [xml/json/conll]"); 7 //return; 8 } 9 System.out.println("yst"); 10 11 String api_key = "y8B2P7W97QluyxiokMCssbmu0fBXbCwrgzgPOM7v"; 12 String pattern = "srl"; 13 String format = "xml";//"xml" 14 String text = "我愛中國,中華文化歷史悠久"; 15 text = URLEncoder.encode(text, "utf-8"); 16 17 URL url = new URL("http://api.ltp-cloud.com/analysis/?" 18 + "api_key=" + api_key + "&" 19 + "text=" + text + "&" 20 + "format=" + format + "&" 21 + "pattern=" + pattern); 22 URLConnection conn = url.openConnection(); 23 conn.connect(); 24 25 BufferedReader innet = new BufferedReader(new InputStreamReader( 26 conn.getInputStream(), 27 "utf-8")); 28 String line; 29 while ((line = innet.readLine())!= null) { 30 System.out.println(line); 31 } 32 innet.close(); 33 } 34 }
從官網搬過來
哈工大訊飛語言雲 由哈工大 和科大訊飛 聯合研發的中文自然語言處理雲服務平臺。結合了哈工大“語言技術平臺——LTP” 高效、精準的自然語言處理核心技術和訊飛公司在全國性大規模雲計算服務方面的 豐富經驗,顯著提升 LTP 對外服務的穩定性和吞吐量,為廣大用戶提供電信級穩定 性和支持全國範圍網路接入的語言雲服務,有效支持包括中小企業在內開發者的商 業應用需要。
作為基於雲端的服務,語言雲具有如下一些優勢:
- 免安裝:用戶無需調用靜態庫或下載模型文件,只需要根據API參數集構造HTTP請求即可線上獲得分析結果。在新版API中,亦不需要下載SDK。
- 省硬體:用戶不需要購買高性能的機器,即可快捷的獲得分析結果。
- 跨平臺、跨編程語言:用戶只需要根據所使用語言的特點發送HTTP請求即可獲取分析結果,因而幾乎不依賴於操作系統平臺和編程語言。
在運算資源有限,編程語言受限的情況下,語言雲無疑是用戶進行語言分析更好的選擇。
有關更多語言雲API的使用方法,請參考:http://www.ltp-cloud.com/document/
分詞
中文分詞 (Word Segmentation, WS) 指的是將漢字序列切分成詞序列。 因為在漢語中,詞是承載語義的最基本的單元。分詞是信息檢索、文本分類、情感分析等多項中文自然語言處理任務的基礎。
例如,句子
國務院總理李克強調研上海外高橋時提出,支持上海積極探索新機制。
正確分詞的結果是
國務院/ 總理/ 李克強/ 調研/ 上海/ 外高橋/ 時/ 提出/ ,/ 支持/ 上海/ 積極/ 探索/ 新/ 機制/ 。
如果分詞系統給出的切分結果是
國務院/ 總理/ 李克/ 強調/ 研/ 上海 …
因為強調
也是一個常見的詞,所以很可能出現這種分詞結果。 那麼,如果想要搜索和李克強
相關的信息時,搜索引擎就很難檢索到該文檔了。
切分歧義是分詞任務中的主要難題。 LTP的分詞模塊基於機器學習框架,可以很好地解決歧義問題。 同時,模型中融入了詞典策略,使得LTP的分詞模塊可以很便捷地加入新詞信息。
詞性標註
詞性標註(Part-of-speech Tagging, POS)是給句子中每個詞一個詞性類別的任務。 這裡的詞性類別可能是名詞、動詞、形容詞或其他。 下麵的句子是一個詞性標註的例子。 其中,v代表動詞、n代表名詞、c代表連詞、d代表副詞、wp代表標點符號。
國務院/ni 總理/n 李克強/nh 調研/v 上海/ns 外高橋/ns 時/n 提出/v ,/wp 支持/v 上海/ns 積極/a 探索/v 新/a 機制/n 。/wp
詞性作為對詞的一種泛化,在語言識別、句法分析、信息抽取等任務中有重要作用。 比方說,在抽取“歌曲”的相關屬性時,我們有一系列短語:
兒童歌曲
歡快歌曲
各種歌曲
悲傷歌曲
...
如果進行了詞性標註,我們可以發現一些能夠描述歌曲屬性的模板,比如
[形容詞]歌曲
[名詞]歌曲
而[代詞]歌曲
往往不是描述歌曲屬性的模板。
詞性標記集:LTP中採用863詞性標註集,其各個詞性含義如下表:
Tag | Description | Example | Tag | Description | Example |
---|---|---|---|---|---|
a | adjective | 美麗 | ni | organization name | 保險公司 |
b | other noun-modifier | 大型, 西式 | nl | location noun | 城郊 |
c | conjunction | 和, 雖然 | ns | geographical name | 北京 |
d | adverb | 很 | nt | temporal noun | 近日, 明代 |
e | exclamation | 哎 | nz | other proper noun | 諾貝爾獎 |
g | morpheme | 茨, 甥 | o | onomatopoeia | 嘩啦 |
h | prefix | 阿, 偽 | p | preposition | 在, 把 |
i | idiom | 百花齊放 | q | quantity | 個 |
j | abbreviation | 公檢法 | r | pronoun | 我們 |
k | suffix | 界, 率 | u | auxiliary | 的, 地 |
m | number | 一, 第一 | v | verb | 跑, 學習 |
n | general noun | 蘋果 | wp | punctuation | ,。! |
nd | direction noun | 右側 | ws | foreign words | CPU |
nh | person name | 杜甫, 湯姆 | x | non-lexeme | 萄, 翱 |
命名實體識別
命名實體識別 (Named Entity Recognition, NER) 是在句子的詞序列中定位並識別人名、地名、機構名等實體的任務。 如之前的例子,命名實體識別的結果是:
國務院 (機構名) 總理李克強 (人名) 調研上海外高橋 (地名) 時提出,支持上海 (地名) 積極探索新機制。
命名實體識別對於挖掘文本中的實體進而對其進行分析有很重要的作用。
命名實體識別的類型一般是根據任務確定的。LTP提供最基本的三種實體類型人名、地名、機構名的識別。 用戶可以很容易將實體類型拓展成品牌名、軟體名等實體類型。
依存句法分析
依存語法 (Dependency Parsing, DP) 通過分析語言單位內成分之間的依存關係揭示其句法結構。 直觀來講,依存句法分析識別句子中的“主謂賓”、“定狀補”這些語法成分,並分析各成分之間的關 系。仍然是上面的例子,其分析結果為:
從分析結果中我們可以看到,句子的核心謂詞為“提出”,主語是“李克強”,提出的賓語是“支持上海…”,“調研…時”是“提出”的 (時間) 狀語,“李克強”的修飾語是“國務院總理”,“支持”的賓語是“探索 新機制”。有了上面的句法分析結果,我們就可以比較容易的看到,“提出者”是“李克強”,而不是“上海”或“外高橋”,即使它們都是名詞,而且距離“提出”更近。
依存句法分析標註關係 (共14種) 及含義如下:
關係類型 | Tag | Description | Example |
---|---|---|---|
主謂關係 | SBV | subject-verb | 我送她一束花 (我 <-- 送) |
動賓關係 | VOB | 直接賓語,verb-object | 我送她一束花 (送 --> 花) |
間賓關係 | IOB | 間接賓語,indirect-object | 我送她一束花 (送 --> 她) |
前置賓語 | FOB | 前置賓語,fronting-object | 他什麼書都讀 (書 <-- 讀) |
兼語 | DBL | double | 他請我吃飯 (請 --> 我) |
定中關係 | ATT | attribute | 紅蘋果 (紅 <-- 蘋果) |
狀中結構 | ADV | adverbial | 非常美麗 (非常 <-- 美麗) |
動補結構 | CMP | complement | 做完了作業 (做 --> 完) |
併列關係 | COO | coordinate | 大山和大海 (大山 --> 大海) |
介賓關係 | POB | preposition-object | 在貿易區內 (在 --> 內) |
左附加關係 | LAD | left adjunct | 大山和大海 (和 <-- 大海) |
右附加關係 | RAD | right adjunct | 孩子們 (孩子 --> 們) |
獨立結構 | IS | independent structure | 兩個單句在結構上彼此獨立 |
核心關係 | HED | head | 指整個句子的核心 |
語義角色標註
語義角色標註 (Semantic Role Labeling, SRL) 是一種淺層的語義分析技術,標註句子中某些短語為給定謂詞的論元 (語義角色) ,如施事、受事、時間和地點等。其能夠對問答系統、信息抽取和機器翻譯等應用產生推動作用。 仍然是上面的例子,語義角色標註的結果為:
其中有三個謂詞提出
,調研
和探索
。以探索
為例,積極
是它的方式(一般用ADV表示),而新機制
則是它的受事(一般用A1表示)
核心的語義角色為 A0-5 六種,A0 通常表示動作的施事,A1通常表示動作的影響等,A2-5 根據謂語動詞不同會有不同的語義含義。其餘的15個語義角色為附加語義角色,如LOC 表示地點,TMP 表示時間等。附加語義角色列表如下:
標記 | 說明 |
ADV | adverbial, default tag ( 附加的,預設標記 ) |
BNE | beneficiary ( 受益人 ) |
CND | condition ( 條件 ) |
DIR | direction ( 方向 ) |
DGR | degree ( 程度 ) |
EXT | extent ( 擴展 ) |
FRQ | frequency ( 頻率 ) |
LOC | locative ( 地點 ) |
MNR | manner ( 方式 ) |
PRP | purpose or reason ( 目的或原因 ) |
TMP | temporal ( 時間 ) |
TPC | topic ( 主題 ) |
CRD | coordinated arguments ( 併列參數 ) |
PRD | predicate ( 謂語動詞 ) |
PSR | possessor ( 持有者 ) |
PSE | possessee ( 被持有 ) |
各模塊技術指標
分詞
中文分詞指的是將漢字序列切分成詞序列的問題。 因為在漢語中,詞是承載語義的最基本的單元,分詞成了是包括信息檢索、文本分類、情感分析等多項中文自然語言處理任務的基礎。
由於在自然語言處理框架中的基礎地位,很多學者對於中文分詞任務進行了深入的研究。 主流的分詞演算法包括基於詞典匹配的方法和基於統計機器學習的方法。 LTP分詞模塊使用的演算法將兩種方法進行了融合,演算法既能利用機器學習較好的消歧能力,又能靈活地引入詞典等外部資源。
在LTP中,我們將分詞任務建模為基於字的序列標註問題。 對於輸入句子的字序列,模型給句子中的每個字標註一個標識詞邊界的標記。
同時,為了提高互聯網文本特別是微博文本的處理性能。我們在分詞系統中加入如下一些優化策略:
- 英文、URI一類特殊詞識別規則
- 利用空格等自然標註線索
- 在統計模型中融入詞典信息
- 從大規模未標註數據中統計字間互信息、上下文豐富程度
分詞模塊在人民日報數據集上的性能如下
- 準確率
P | R | F | |
開發集 | 0.973152 | 0.972430 | 0.972791 |
測試集 | 0.972316 | 0.970354 | 0.972433 |
- 運行時記憶體:119m
- 速度:176.91k/s
- CLP 2012 評測任務1:微博領域的漢語分詞,第二名。
詞性標註
與分詞模塊相同,我們將詞性標註任務建模為基於詞的序列標註問題。 對於輸入句子的詞序列,模型給句子中的每個詞標註一個詞性標記。 在LTP中,我們採用的北大標註集。
詞性標註模塊在人民日報數據集上的性能如下。
- 語料信息:人民日報1998年2月-6月(後10%數據作為開發集)作為訓練數據,1月作為測試數據。
- 準確率:
P 開發集 0.979621 測試集 0.978337 - 運行時記憶體:291m
- 速度:106.14k/s
命名實體識別
與分詞模塊相同,我們將命名實體識別建模為基於詞的序列標註問題。對於輸入句子的詞序列,模型給句子中的每個詞標註一個標識命名實體邊界和實體類別的標記。在LTP中,我們支持人名、地名、機構名三類命名實體的識別。
基礎模型在幾種數據集上的性能如下:
- 語料信息:人民日報1998年1月做訓練(後10%數據作為開發集),6月前10000句做測試作為訓練數據。
- 準確率
P R F 開發集 0.924149 0.909323 測試集 0.939552 0.936372 - 運行時記憶體:21m
依存句法分析
基於圖的依存分析方法由McDonald首先提出,他將依存分析問題歸結為在一個有向圖中尋找最大生成樹(Maximum Spanning Tree)的問題。
在依存句法分析模塊中,LTP分別實現了
- 一階解碼(1o)
- 二階利用子孫信息解碼(2o-sib)
- 二階利用子孫和父子信息(2o-carreras)
在LDC數據集上,三種不同解碼方式對應的性能如下表所示。
model | 1o | 2o-sib | 2o-carreras | |||
---|---|---|---|---|---|---|
Uas | Las | Uas | Las | Uas | Las | |
Dev | 0.8190 | 0.7893 | 0.8501 | 0.8213 | 0.8582 | 0.8294 |
Test | 0.8118 | 0.7813 | 0.8421 | 0.8106 | 0.8447 | 0.8138 |
Speed | 49.4 sent./s | 9.4 sent./s | 3.3 sent./s | |||
Mem. | 0.825g | 1.3g | 1.6g |
- SANCL 2012 互聯網數據依存句法分析評測,第二、三名。
- CoNLL 2009 句法和語義依存分析評測,中文依存句法分析第三名。
語義角色標註
在LTP中,我們將SRL分為兩個子任務,其一是謂詞的識別(Predicate Identification, PI),其次是論元的識別以及分類(Argument Identification and Classification, AIC)。對於論元的識別及分類,我們將其視作一個聯合任務,即將“非論元”也看成是論元分類問題中的一個類別。在SRL系統中,我們在最大熵模型中引入 L1正則,使得特征維度降至約為原來的1/40,從而大幅度地減小了模型的記憶體使用率,並且提升了預測的速度。同時,為了保證標註結果滿足一定的約束條 件,系統增加了一個後處理過程。
在CoNLL 2009評測數據集上,利用LTP的自動詞性及句法信息,SRL性能如下所示。
Precision | Recall | F-Score | Speed | Mem. |
---|---|---|---|---|
0.8444 | 0.7234 | 0.7792 | 41.1 sent./s | 94M(PI+AIC) |
- CoNLL 2009 句法和語義依存分析評測,聯合任務第一名。