您的位置:首页 > 编程语言 > PHP开发

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

2016-03-21 19:59 741 查看
语言技术平台(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: