語言技術平臺(Language Technology Platform,LTP)是 哈工大社會計算與信息檢索研究中心 歷時十年開發的一整套中文語言處理系統。可以進行分詞、詞性標註、命名實體識別、依存句法分析、語義角色標註、語義依存分析,簡單演示可以訪問 語言云平臺 。本文介紹兩種使用方法,第一種是調用API Web服務(限制使用流量),第二種是架設本地LTP服務(不限制使用流量)。
使用方法1:
語言云平臺提供了API可以調用其web服務,調用web服務需要註冊一個賬號獲得一個Api_key,每月有使用流量限制(我的是每月18.6GB)。
1.1簡單用法
以Get請求的方法直接在瀏覽器輸入框輸入以下代碼:
http://api.ltp-cloud.com/analysis/?api_key=YourApiKey&text=我是中國人。&pattern=dp&format=plain
其中“api_key”即註冊後獲得的;text是待處理文本;"pattern"用於指定分詞的模式,"dp"表示進行依存句法分析處理即包括分詞、詞性標註、命名實體識別和依存句法分析;"format"表示結果返回的格式,plain表示以簡潔文本格式返回結果。詳細參數選項去見 語言云API使用文檔 。返回結果如下圖:
1.2 python3調用
# coding=utf-8
from urllib import request
if __name__ == '__main__':
url_get_base = "http://api.ltp-cloud.com/analysis/?"
api_key = 'Your API_key'
text = request.quote('我是北京大學的研究生')
format = 'plain'
pattern = 'dp'
result = request.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s" % (url_get_base, api_key, text, format, pattern))
content = result.read().strip()
print(content.decode('utf-8'))
結果(簡潔文本):
我_0 是_1 SBV
是_1 -1 HED
北京_2 大學_3 ATT
大學_3 研究生_5 ATT
的_4 大學_3 RAD
研究生_5 是_1 VOB
結果(xml格式,利用python的BeautifulSoup包可以完美解析):
<?xml version="1.0" encoding="utf-8" ?>
<xml4nlp>
<note sent="y" word="y" pos="y" ne="n" parser="y" semparser="n" wsd="n" srl="n" />
<doc>
<para id="0">
<sent id="0" cont="我是北京大學的研究生">
<word id="0" cont="我" pos="r" parent="1" relate="SBV" />
<word id="1" cont="是" pos="v" parent="-1" relate="HED" />
<word id="2" cont="北京" pos="ns" parent="3" relate="ATT" />
<word id="3" cont="大學" pos="n" parent="5" relate="ATT" />
<word id="4" cont="的" pos="u" parent="3" relate="RAD" />
<word id="5" cont="研究生" pos="n" parent="1" relate="VOB" />
</sent>
</para>
</doc>
</xml4nlp>
1.3 java調用
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class ltpAPI {
public static void main(String[] args)throws IOException{
String api_key = "your api_key";//api_key,申請賬號後生成,這個賬戶每月有19G流量
String pattern = "dp";//ws表示只分詞,除此還有pos詞性標註、ner命名實體識別、dp依存句法分詞、srl語義角色標註、all全部
String format = "plain";//指定結果格式類型,plain表示簡潔文本格式
String result = "";
String text = "我是南京大學的研究生";
text = URLEncoder.encode(text, "utf-8");
URL url = new URL("http://ltpapi.voicecloud.cn/analysis/?"
+ "api_key=" + api_key + "&"
+ "text=" + text + "&"
+ "format=" + format + "&"
+ "pattern=" + pattern);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
BufferedReader innet = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
String line;
while ((line = innet.readLine())!=null){
System.out.println(line);
}
innet.close();
}
}
結果:我_0 是_1 SBV
是_1 -1 HED
南京_2 大學_3 ATT
大學_3 研究生_5 ATT
的_4 大學_3 RAD
研究生_5 是_1 VOB
下一節將介紹本地架構ltp服務。可以先參考其官方文檔 LTP