最近在学习处理自然语言处理,就发现LTP的(哈工大语言云),这个比我最先使用的jieba分词更好,词库更大,功能也更强大。
这里介绍两种方法:1、调用LTP的API,2、使用pyltp,这里的方法基于python,对于其它语言的使用的请大家了解这里:LTP 3.3文档
1、调用LTP的API
①进入哈工大语言云进行注册
②注册之后哈工大语言云的官网会给你一个API key,但是好像一开始并不能使用,要等官网审核之后,显示你的本月使用流量有18G左右就可以了,
新用户一般会给你送20G(我好像一开始就是18G)
③代码实现自然语言处理:
# -*- coding: utf-8 -*-
import urllib2
url_get_base = "http://api.ltp-cloud.com/analysis/?"
api_key = '*********' # 输入注册API_KEY
# 待分析的文本
text = "国务院总理李克强调研上海外高桥时提出,支持上海积极探索新机制。"
format0 = 'plain' # 结果格式,有xml、json、conll、plain(不可改成大写)
pattern = 'ws' # 指定分析模式,有ws、pos、ner、dp、sdp、srl和all
#分词
result = urllib2.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s"
% (url_get_base, api_key, text, format0, 'ws'))
content = result.read().strip()
print content
print '*'*60
#词性标注
result1 = urllib2.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s"
% (url_get_base, api_key, text, format0, 'pos'))
content1 = result1.read().strip()
print content1
print '*'*60
#命名实体识别
result2 = urllib2.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s"
% (url_get_base, api_key, text, format0, 'ner'))
content2 = result2.read().strip()
print content2
print '*'*60
#依存句法分析
result3 = urllib2.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s"
% (url_get_base, api_key, text, format0, 'dp'))
content3 = result3.read().strip()
print content3
print '*'*60
#语义依存分析
result4 = urllib2.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s"
% (url_get_base, api_key, text, format0, 'sdp'))
content4 = result4.read().strip()
print content4
print '*'*60
#语义角色标注
result1 = urllib2.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s"
% (url_get_base, api_key, text, format0, 'srl'))
content1 = result1.read().strip()
print content1
print '*'*60
显示结果:
国务院 总理 李克强 调研 上海 外高桥 时 提出 , 支持 上海 积极 探索 新 机制 。
************************************************************
国务院_ni 总理_n 李克强_nh 调研_v 上海_ns 外高桥_ns 时_n 提出_v ,_wp 支持_v 上海_ns 积极_a 探索_v 新_a 机制_n 。_wp
************************************************************
[国务院]Ni 总理 [李克强]Nh 调研 [上海 外高桥]Ns 时 提出 , 支持 [上海]Ns 积极 探索 新 机制 。
************************************************************
国务院_0 总理_1 ATT
总理_1 李克强_2 ATT
李克强_2 调研_3 SBV
调研_3 时_6 ATT
上海_4 外高桥_5 ATT
外高桥_5 调研_3 VOB
时_6 提出_7 ADV
提出_7 -1 HED
,_8 提出_7 WP
支持_9 提出_7 COO
上海_10 探索_12 SBV
积极_11 探索_12 ADV
探索_12 支持_9 VOB
新_13 机制_14 ATT
机制_14 探索_12 VOB
。_15 提出_7 WP
************************************************************
国务院_0 总理_1 Nmod
总理_1 调研_3 Agt
李克强_2 总理_1 Nmod
调研_3 提出_7 dTime
上海_4 外高桥_5 Nmod
外高桥_5 调研_3 Dir
时_6 调研_3 mTime
提出_7 -1 Root
,_8 提出_7 mPunc
支持_9 提出_7 ePurp
上海_10 探索_12 Agt
积极_11 探索_12 Mann
探索_12 支持_9 dCont
新_13 机制_14 Feat
机制_14 探索_12 Prod
。_15 支持_9 mPunc
************************************************************
[国务院 总理 李克强 调研 上海 外高桥 时]TMP [提出]v , [支持 上海 积极 探索 新 机制]A1 。
国务院 总理 李克强 调研 上海 外高桥 时 提出 , [支持]v [上海]A1 积极 探索 新 机制 。
************************************************************
如果大家想看到更加直观的的结果可以进入哈工大语言云的在线测试,就可以看到更加直观的结果,如下:
2、使用pyltp
这里参考:Python下的自然语言处理利器-LTP语言技术平台 pyltp 学习手札
按照上面的博客安装是没有问题的,我的系统是win8.1、python2.7,需要注意的是,pip pyltp install要基于C++的编译器,所以我安装的是Micorsoft Visual C++ Compiler for Python 2.7,
因为本人电脑上已经安装了VS2012。
安装完成以后,就可以进行测试了:
注意下面的l