win7(64位)下使用ltp(一):API調用

語言技術平臺(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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章